反向传播与梯度下降算法

在深度学习中最重要的算法莫过于反向传播算法(Back Propagation,BP)和梯度下降算法(Gradient Descent,GD),从宏观上理解深层神经网络中的这两个算法,前项传播经激活函数输入到后一层,在最后一层计算误差,经反向传播将误差传递至前一层,然后在前一层利用梯度下降算法进行参数优化,再利用反向传播将误差向前传递,以此类推。

反向传播和梯度下降区别 反向传播与梯度下降_神经网络


梯度下降算法主要目的是通过迭代使得目标函数收敛到最小值或极小值,梯度下降实际上是微分过程,梯度是对每个变量进行微分,具体计算如下:

反向传播和梯度下降区别 反向传播与梯度下降_反向传播和梯度下降区别_02


反向传播和梯度下降区别 反向传播与梯度下降_神经网络_03

层归一化

在深度神经网络中,一方面随着反向传播导致参数的更新,中间隐藏层的数据分布也会发生较大的差异,这就导致了神经网络需要不断的去适应新的数据分布,导致学习难度变大。另一方面,无论是tanh激活函数还是sigmod激活函数,在数据出现较大或较小时都容易出现梯度消失,使得网络收敛较慢甚至参数无法更新。为了应对这个问题,人们提出了批次归一化(Bath Normalization,BN)、层归一化(Layer Normalization,LN)。BN是基于批量数据进行归一化处理,但对于动态网络以及当batCH很小或者数据集的方差较大时均不可以使用。

LN的训练过程分为两步:

(1)计算神经网络层的均值与方差

令l层的输入为反向传播和梯度下降区别 反向传播与梯度下降_机器学习_04,则其均值和方差为:

反向传播和梯度下降区别 反向传播与梯度下降_神经网络_05


(2)进行归一化,计算公式如下所示:

反向传播和梯度下降区别 反向传播与梯度下降_深度学习_06


层归一化优缺点如下。优点:适用于batch较小的情况以及动态网络。缺点:

在卷积神经网络中使用层归一化会破坏卷积学习到的特征,导致模型无法收敛,所以一般卷积神经网络后不会做归一化处理;由于LN基于自身数据,同一特征在进行归一化处理时容易造成数据信息损失。

Adam优化器

在使用传统梯度下降算法时,由于学习率固定,所以更新步长为定值,然而需要优化的参数对目标函数(残差)的依赖不同,所需要更新的也不一样,所以比较合理的做法应该是对每个参数给与独特的学习率,在训练过程中算法能够自适应的调整学习率去调整残差对参数大小的更新。目前最常用的自适应学习率优化算法莫过于Adam(Adaptive moment estimation)算法。Kingma D和Ba J在2014年提出Adam优化器,该算法结合AdaGrad(Adaptive gradient algorithm)和RMSProp(root mean square prop)的优点,综合考虑了梯度的一阶有偏矩估计和二阶有偏矩估计,计算并更新参数及步长。Adam优化器具有以下优点:计算高效、内存需求少;参数更新与梯度变换无关;超参数的可解释性强,通常使用默认值;更新的步长能够自动调整;适用于大规模数据及大模型优化。

Adam算法的更新规则如下:

反向传播和梯度下降区别 反向传播与梯度下降_反向传播和梯度下降区别_07


反向传播和梯度下降区别 反向传播与梯度下降_归一化_08


反向传播和梯度下降区别 反向传播与梯度下降_深度学习_09


反向传播和梯度下降区别 反向传播与梯度下降_神经网络_10

长短时记忆网络

循环神经网络通过对历史信息的获取和保存来帮助当前时刻做决策,但很难解决较长时间依赖的问题。为了解决较长时间依赖的问题,Hochreiter S等人提出了长短时记忆网络(Long Short Term Memory,LSTM)。顾名思义,LSTM模型有长时状态和短时状态,相比标准的RNN模型,LSTM拥有三个“门”结构,通过门控机制来控制信息的遗忘与更新。LSTM的结构如图2.2所示:

反向传播和梯度下降区别 反向传播与梯度下降_深度学习_11

在LSTM模型中,有两个状态向量,分别为长时状态向量反向传播和梯度下降区别 反向传播与梯度下降_归一化_12,和短时状态向量反向传播和梯度下降区别 反向传播与梯度下降_神经网络_13,其中反向传播和梯度下降区别 反向传播与梯度下降_神经网络_13也是输出向量。LSTM模型的“输入门”和“遗忘门”保证了模型能够有效地长期记忆,其中“遗忘门”的作用是让网络遗忘之前的部分信息,“输入门”的作用是在“遗忘门”遗忘了部分状态后,还需要从当前输入补充多少最新的信息。在计算得到新的状态反向传播和梯度下降区别 反向传播与梯度下降_归一化_12,后需要产生当前的输出,这就是“输出门”的作用。

下面分别介绍三种门控的原理:

(1)遗忘门

遗忘门主要作用是控制上一时刻的状态反向传播和梯度下降区别 反向传播与梯度下降_机器学习_16对当前时刻的影响。遗忘门的控制变量计算如下:

反向传播和梯度下降区别 反向传播与梯度下降_归一化_17

反向传播和梯度下降区别 反向传播与梯度下降_归一化_18

(2)输入门

首先,通过对当前时刻输入反向传播和梯度下降区别 反向传播与梯度下降_反向传播和梯度下降区别_19,和上一时刻输出反向传播和梯度下降区别 反向传播与梯度下降_神经网络_20做非线性变换得到新的输入向量反向传播和梯度下降区别 反向传播与梯度下降_神经网络_21;,同时使用tanh激活函数来控制输入向量反向传播和梯度下降区别 反向传播与梯度下降_神经网络_22反向传播和梯度下降区别 反向传播与梯度下降_神经网络_21反向传播和梯度下降区别 反向传播与梯度下降_神经网络_22计算如公式2.21、2.22所示,通过输入门后,待写入状态的向量为反向传播和梯度下降区别 反向传播与梯度下降_反向传播和梯度下降区别_25,具体结构见图2.3所示。

反向传播和梯度下降区别 反向传播与梯度下降_深度学习_26

(3)输出门

输出门的门控变量为反向传播和梯度下降区别 反向传播与梯度下降_机器学习_27反向传播和梯度下降区别 反向传播与梯度下降_归一化_12经过tanh激活函数后与输入门作用,得到LSTM的输出反向传播和梯度下降区别 反向传播与梯度下降_神经网络_13反向传播和梯度下降区别 反向传播与梯度下降_机器学习_27反向传播和梯度下降区别 反向传播与梯度下降_神经网络_13,计算如公式2.23、2.24所示,具体结构见图2.3所示。

反向传播和梯度下降区别 反向传播与梯度下降_神经网络_32