3.4 常见的神经元模型
上一节介绍了神经网络完整的训练过程和其中的优化细节,下面介绍常见的神经元模型。
3.4.1 空间信息处理单元
一个完整的CNN由各种层堆叠而成,CNN的结构层主要包括三种:卷积层、池化层和全连接层。这里只介绍CNN中最重要的结构层——卷积层,也就是空间信息处理单元,完整的神经网络结构将在下一章详细介绍。
向卷积层输入一个[h,w,d,n]的特征图,其中h,w分别代表特征图的长和宽,d代表深度,也是通道数,n代表批量大小。在卷积层中有k个尺寸为[a,a,d]的滤波器(卷积核),滤波器的深度和输入特征图一致,但滤波器的尺寸和数目是可选的。用滤波器和输入特征图做卷积运算。卷积运算是滤波器在特征图的空域范围内全部位置滑动,而且在每个位置滤波器和特征图做点乘。卷积运算可看作加权求和的过程,特征图区域中的每个像素分别和卷积核的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。其中滤波器每次滑动的步长是一个可选参数。为了不让输入图像的尺寸收缩太快,可以给输入图像各边填充0。卷积层输出尺寸计算公式如式(3-34)~式(3-36)所示。
其中输入图像尺寸为[h,w,d,n],滤波器个数为k,滤波器尺寸为[a,a,d],滑动步长为S,填充大小为P,滤波器输出尺寸为[h1,w1,d1,n]。
3.4.2 时间信息处理单元
在普通的全连接神经网络或CNN中,每层神经元的输出只能向下一层传播,只有相邻层的神经元之间可以互相相连,同层的神经元之间不连接,数据处理在各个时刻独立,因此它们被称为前向神经网络。但这种连接方式有一个无法避免的缺点就是,无法对时间序列上的变化进行建模,但是数据的先后变化在很多情况下都非常重要,例如语音识别、视频压缩和翻译。为了适应这种需求,就出现了另一种神经元连接方式,即循环神经元。前面已经介绍过普通全连接神经元和卷积神经元的连接方式,下面将介绍循环神经元的两种经典结构,分别是RNN神经元和LSTM神经元。
1.RNN神经元
RNN神经元的输出可以在下一个时刻直接作用到自身,即第i层神经元在t时刻的输入除了i-1层神经元在t时刻的输出外,还包括其自身在t-1时刻的输出。也就是说,相比普通神经元,RNN神经元存在同层的自连接,这样做的好处是,神经网络架构有很高的灵活性。RNN神经元具有“内部状态”,在处理序列时不断更新,可以用一个数学公式来描述某个RNN神经元t时刻的新状态,如式(3-37)所示。
其中xt表示t时刻的输入,ht-1表示RNN神经元t-1时刻的状态,W是RNN神经元的参数矩阵。fW是递归函数,当改变W时,RNN会有不同的表现,可以训练W让RNN获得指定功能,但是必须强调的一点是,每个时间步中的fW不变,单个神经元模型的fW能在所有序列长度上操作。
将RNN神经元在时间上展开,可以得到如图3-11所示的结构。从图中可以看出,t+1时刻RNN神经元的输出ht+1是0~t+1时刻所有输入共同作用的结果,输入序列的长度决定了展开图的长度,RNN用这种方式完成了对时间序列进行建模。
图3-11 RNN神经元展开图
从另一个角度看,RNN也是一个在时间上传递的神经网络,神经网络深度是输入序列(时间)的长度,某时刻的输出是之前所有输入共同作用的结果,但实际上某时刻的输入对后面时刻的影响也只能维持若干个时刻。为了解决这个问题,研究人员设计了LSTM神经元,它的门结构可以防止梯度消失。
2.LSTM神经元
LSTM(Long Short Term Memory)是一种特殊的RNN,设计的主要目的是解决RNN时间上梯度消失的问题。图3-12是LSTM神经元的结构图,主要包含三个门结构,分别是:
①i:输入门,控制当前时刻的神经元输入有多少保存到Cell,即ct;
②f:遗忘门,控制上一时刻的Cell有多少保存到当前Cell;
③o:输出门,控制当前时刻的Cell有多少输出到神经元输出值ht。
如图3-12所示,Cell是LSTM神经元的记忆体,通常也被称为“细胞状态”,它的加法功能是LSTM神经元比RNN神经元效果好的主要原因,虽然看起来非常简单,但它可以帮助LSTM神经元在必须进行深度反向传播时维持恒定的误差,很大程度上保证了梯度不会消失。为了便于解释,先将LSTM神经元变形为如图3-13所示的形式,图中σ表示Sigmoid激活,Tanh表示Tanh激活。前面指出RNN神经元中存在状态向量ht,它会通过递推变换随时间不断更新。而LSTM神经元中的状态向量就是ct,部分ct会进入神经元输出值ht。如果忽略遗忘门,LSTM神经元只对ct进行加法迭代。当上游梯度传过来时,加法只是将上游梯度复制到两个分支中,然后通过逐元素相乘直接传递到下游梯度,即上游梯度最终被遗忘门逐元素相乘。当反向传播通过这个LSTM神经元时,上游梯度唯一的改变就是它被遗忘门逐元素相乘。
图3-12 LSTM结构图
图3-13 LSTM结构变形图
总而言之,LSTM神经元比RNN神经元效果更好主要有三个原因。一是遗忘门是逐元素乘法,而不是矩阵乘法。其次,逐元素乘法可能会在不同时刻乘以不同的遗忘门,可以避免梯度消失或爆炸。最后,因为遗忘门通过Sigmoid激活,所以逐元素乘法的结果在(0,1)之间,这些数字反复相乘又导致了更好的数字性质。