《深度学习:卷积神经网络从入门到精通》——2.5 反向传播算法
2.5 反向传播算法
卷积神经网络是一种特殊的前馈神经网络,通常也是一种深度神经网络。深度学习则是在克服反向传播算法对深度神经网络的训练困难过程中逐步发展和建立起来的。而深度神经网络的基本学习训练方法是反向传播算法。因此,有必要提前介绍一下反向传播算法的具体内容。作为一种有监督学习算法,反向传播算法在本质上是一种具有递归结构的梯度下降算法,往往需要给定足够多的训练样本,才能获得满意的效果。下面先给出任意前馈神经网络的通用反向传播算法,再讨论深层神经网络的逐层反向传播算法。这两个反向传播算法是读者理解其他各种神经网络的反向传播算法的基础。
2.5.1 通用反向传播算法
不妨设前馈神经网络共包含N个节点{u1, u2, …, uN},只有从编号较小的神经元才能连接到编号较大的神经元,没有反馈连接。
图2.1给出了前馈神经网络的一种可能的连接结构,共包含10个节点,其中两个为输入。一般地,用xn, l表示第n个节点对第l个输入样本的输出,其中1≤n≤N且1≤l≤L。
如果un是输入节点,那么它对第l个输入样本的输入为netn, l = xn, l;否则,un是隐含节点或输出节点,相应的输入为,输出为。其中,表示从第k个节点到第n个节点的有向连接k→n的权值,fn表示第n个节点的激活函数,比如sigmoid函数。此外,若令x0, l = 1,则可用w0→n表示非输入节点un的偏置值。最后,用OUT表示所有输出神经元的集合,且对任意n∈OUT,用yn, l表示xn, l的期望值,用en, l表示编号为n的输出神经元对第l个输入样本产生的输出误差。因此,关于样本l的输出误差可以表示为
(2.49)
总的输出误差为
(2.50)
如果定义第n个神经元关于第l个样本的反传误差信号(backpropagated error signal)或灵敏度(sensitivity)如下:
(2.51)
那么利用链式法不难得到:
(2.52)
(2.53)
如果对输出节点选择平方误差?,那么
(2.54)
(2.55)
因此,相应的通用反向误差传播算法可以总结为算法2.2。
注意,在算法2.2中,epoch表示迭代次数,在实际应用中可能需要几十次、几百次,甚至成千上万次迭代,才能获得令人满意的学习训练效果。
算法2.2 通用反向传播算法
- 点赞
- 收藏
- 关注作者
评论(0)