一、正向传播和反向传播
-
在模型训练过程中,是同时包含正向传播和反向传播的
-
正向传播是模型根据输入数据和当前的参数(权重和偏置)计算预测输出的过程。例如,在一个图像分类神经网络模型中,输入是图像的像素数据,经过多个隐藏层的计算,最终在输出层得到预测的类别概率分布。
-
反向传播紧接着正向传播进行。它基于正向传播得到的预测输出和真实标签之间的差异(通过损失函数来衡量),计算每个参数的梯度。这个梯度表示了参数对损失函数的影响程度,然后利用这些梯度来更新模型的参数(权重和偏置)。
-
这种正向传播和反向传播的交替进行是模型训练的核心机制。每次正向传播得到预测结果后,通过反向传播调整参数,然后再进行下一次正向传播,如此反复,直到模型收敛(即损失函数的值不再显著下降或者达到预设的训练轮数等停止条件)。
-
-
在多层神经网络中,即使中间层没有像输出层那样的真实标签,依然可以进行反向传播。
- 在反向传播阶段,中间层的参数更新是基于损失函数对输出层的影响,通过链式法则将误差从输出层反向传播回中间层来间接利用损失函数,以此来更新中间层的参数,使网络整体朝着损失减小的方向优化。
二、梯度消失 梯度爆炸
-
当梯度消失时,靠近输入层的网络层的参数更新变得非常缓慢。因为参数更新是通过梯度乘以学习率来实现的,梯度接近于零会导致这些层的参数几乎无法更新,使得模型难以学习到输入数据的有效特征,从而导致训练过程漫长,甚至无法收敛到一个较好的结果
-
梯度爆炸会使模型的训练过程变得极不稳定。参数更新步长过大可能会导致模型在训练过程中跳过最优解,甚至无法收敛。
三、激活函数
- 在神经网络的训练过程中,激活函数主要用于前向传播(Forward Propagation)阶段的神经元计算
-
激活函数在隐藏层中的作用:
-
控制神经元输出范围:例如,Sigmoid 函数的输出范围是(0,1),Tanh 函数的输出范围是(-1,1),在使用反向传播算法更新权重时,如果神经元的输出范围过大,可能会导致梯度消失或梯度爆炸问题。而通过合适的激活函数控制输出范围,可以在一定程度上缓解这些问题。
-
引入非线性因素:如果没有激活函数,神经网络的每一层都只是对输入进行线性变换。而激活函数可以打破这种线性关系。例如,使用 ReLU 激活函数,多层神经网络通过激活函数的非线性作用,就可以逼近任何复杂的函数,从而能够更好地拟合数据中的复杂模式。
-
-
激活函数在输出层中的作用:
-
对于分类任务:多分类使用 Softmax 激活函数。Softmax 函数可以将神经元的输出转换为概率分布;对于二分类任务,Sigmoid 函数是常用的激活函数。
-
对于回归任务:在回归任务中,输出层通常不使用激活函数,或者使用线性激活函数(即输出等于输入)。因为回归任务的目标是预测一个连续的值,不需要将输出转换为概率或限制在特定的范围内。
-
四、激活函数有哪些
-
Sigmoid函数
- 函数表达式及性质:
- 适用情况:
- 二分类问题的输出层:如在判断一封邮件是否为垃圾邮件。
- 概率估计场景:如在医学诊断中,预测患者患有某种疾病的概率。
- 函数表达式及性质:
-
Tanh函数(双曲正切函数)
- 函数表达式及性质:
- 适用情况:
- 隐藏层:Tanh函数通常用于神经网络的隐藏层。与Sigmoid函数相比,它的输出范围更对称,中心在0点。这使得在反向传播过程中,梯度的更新更稳定。例如,在多层感知机(MLP)用于时间序列预测的隐藏层中,Tanh函数可以帮助模型更好地学习数据中的正负特征。
- 需要输出中心为零的数据场景:当希望神经元的输出在正负区间都有分布,并且对数据的正负特征都比较敏感时,Tanh函数是比较合适的。比如在一些信号处理相关的神经网络应用中,Tanh函数可以更好地处理正负信号。
- 函数表达式及性质:
-
ReLU函数(修正线性单元)
- 函数表达式及性质:
- 适用情况:
- 隐藏层和输出层广泛应用:ReLU函数是目前深度学习中最常用的激活函数之一,广泛应用于神经网络的隐藏层和输出层。在图像识别、语音识别等众多领域的深度学习模型的隐藏层中,ReLU函数能够有效缓解梯度消失问题,加速模型的训练。例如,在卷积神经网络(CNN)用于图像分类任务时,如ResNet、VGG等模型的隐藏层大量使用ReLU函数。
- 处理非负数据场景:如果数据本身具有非负的特性或者希望神经元输出非负的值,ReLU函数是一个自然的选择。例如,在处理图像像素值(通常是非负的)的神经网络中,ReLU函数可以很好地适应这种数据特性。
- 函数表达式及性质:
-
Leaky ReLU函数
- 函数表达式及性质:
- 适用情况:
- 缓解ReLU函数的“神经元死亡”问题:在一些情况下,ReLU函数可能会导致神经元“死亡”,即某些神经元在训练过程中永远不会被激活(输出始终为0)。Leaky ReLU函数通过为负数输入提供一个小的梯度,降低了这种风险。在一些对模型稳定性要求较高的应用中,如深度强化学习中的价值网络或者深度生成模型的某些部分,Leaky ReLU可以作为ReLU的替代选择。
- 函数表达式及性质:
-
Softmax函数
- 函数表达式及性质:
- 适用情况:
- 多分类问题的输出层:在神经网络用于多分类任务时,Softmax函数是输出层的常用激活函数。例如,在手写数字识别(MNIST数据集)任务中,输出层有(10)个神经元,经过Softmax函数后,这(10)个输出值分别表示数字(0 - 9)的概率,概率最高的类别即为预测的类别。Softmax 函数输出的所有概率之和是1
- 函数表达式及性质: