深度学习中反向传播算法的实现介绍-CNN模型系列3

反向传播算法是最基础的神经网络优化求解算法,我们一般将神经网络看成是一个高维的复杂的复合函数,而且是非凸的,这里先以一个多层感知机的场景为例进行简要说明,比如当前层的每一个节点的输入是上一层的所有节点输出(组成向量x)和参数权重(向量w)的线性函数g(x)= x*w+b,然后在线性函数结果上再套上一个激活函数复sigma(g(x))。当前层的所有节点就可以看成是有多个这样的复合函数sigma(g1(x)),sigma(g2(x)),….sigma(gn(x))。这些复合函数的结果又是下一层的输入向量,以此逐层forward,最后一层输出结果。神经网络的非凸性表现在,如果在中间某一层改变节点的顺序,并且对应调整其影响到的连接到上一层和下一层节点的参数值,神经网络的输出结果不变,这也就说明神经网络如果存在着极小值,可能会出现多种参数配置情况下都能达到这个极小值。

由于神经网络的非凸性,不能直接通过公式求得函数的导数并等于0来求解方程从而得出最佳参数。而一般采用迭代更新参数的方法,每一次可以求出每个参数的梯度,将沿着梯度的方向更新参数(更新的步长与学习率和梯度本身大小都有关系),会使得loss损失逐渐减小,就好像下山的过程,沿着比较陡峭的山坡去下山所走的步数比较少,求解过程也更快。

由于神经网络的层次结构和神经网络复杂复合函数的特性,提出了反向传播算法,其基于神经网络的结构特性和复合函数求导的链式法则,得出从网络的最后层逐层反向求解相关梯度的方法。具有的梯度信息有两个:1为各层的输入的梯度,在公式中称为delta,2为参数的梯度,在公式中为w的偏导。这些梯度都是从最后一层逐层向前去进行求解的,具体的求解过程可以参考引文3和4,在这里不做重复说明。

原始的反向传播算法只针对的是MLP(多层感知机),也就是基于全连接结构的神经网络,而CNN网络结构中用了好多种不同类型的层(layer,如卷积层,池化层,全连接层等等)。而卷积层由于其连接的稀疏性,权值共享特性,其前向的计算方式和全连接有较大的不同。关于池化层和卷积层的反向传播的实现,可以参考引文1和引文2,特别是引文1中通过一个示例场景说明在卷积层的反向回传中为什么要将参数矩阵旋转180度。

References


by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *