一. 概述
多层网络的学习拟合能力比单层网络要强大很多。所以想要训练多层网络,前面的简单感知机学习方法显然有些不足,需要拟合能力更加强大的算法。反向传播算法( Back Propagation,BP)是其中的经典方法,它可以说是现今最成功的神经网络算法,现实当中使用到神经网络时,大多是使用BP算法训练的。BP算法不仅可以用于多层前馈神经网络,还可以用于其他类型神经网络,例如LSTM模型,通常所说的BP网络,一般是用BP算法训练的多层前馈网络。
二. BP算法
我们可以先通过BP网络的走向图大致掌握以下反向传播算法的主要用处,从输入层开始,数据进入到网络中经过每一层的计算变化,最终得出实际输出。然后和期望输出做比较计算损失值,此时的损失值将按照反方向逐渐向前传播计算,通过梯度下降的方式优化网络中的参数,求取出符合要求的网络模型。如图1中所示:
图1:BP网络结构图
接下来我们将通过公式计算逐步的展示BP网络的基本结构。最开始要假设我们有一个固定训练集合{(x1,y1),…,(xm,ym)},它的样本总数为m。这样我们就可以利用批量梯度下降法来求解参数,也属于有监督学习方法。具体到每个样本(x,y),其代价函数为下式:
对于给定有m个样本的数据集,我们可以定义整体的代价函数为:
上式中的第一项J(w,b)是均方差项。而第二项则是规则化项,是用来约束解以达到结构风险最小化( Structural risk minimization,SRM),目的是防止模型出现过拟合( over fitting)。
我们利用梯度下降法,每一次迭代都按照下面的公式对参数W和b进行更新:
其中α是学习速率。关键步骤在于计算偏导数。我们现在开始反向传播算法的介绍,它是计算偏导数的一种有效方法。
首先了解一下如何使用反向传播算法来计算和,这两项是单个样例(x,y)的代价函数J(W,b;x,y)的偏导数。只有我们求出该偏导数,后面才可以推导出整体代价函数J(W,b)的偏导数:
以上两行公式稍有不同,第一行比第二行多出一项,因为权重衰减是作用于W而不是b。
BP算法的总体流程:首先对每个样本数据,进行前向传播计算,依次计算出每层每个单元的激活值。接着计算出第l层的每个节点i的“残差”值δ,该值直接体现了这个单元对最终的输出有多大的影响力。最后一层输出层则可以直接获得最终结果和输出结果的差值,我们定义为δ(,而对于中间的隐藏层的残差,我们则通过加权平均下层(l+1层)残差来计算。
BP算法的具体推导过程如下:
1)前馈网络传导的计算,逐层算出L2到最后一层的每层节点的激活值。
2)计算各节点的残差值,对于输出层,使用如下公式:
上式子中的推导过程如下:
3)从最后一层依次向前推导到第2层,第l层的残差为:
推导可得出:
依照上面只需将nl替换为l就可以推导到中间层l与l=1的残差关系。可以更新所需的偏导数:
最后得出BP算法的描述:
在下面的伪代码中,ΔW0是一个与矩阵W维度相同的矩阵,△b0是一个与b0维度相同的向量。注意这里“ΔW”是一个矩阵。下面,我们实现批量梯度下降法中的一次迭代:
1)对于所有l,令△W0:=0,Δb0:=0(设置为全零矩阵或全零向量)。
2)对于i=1到m,
a)使用反向传播算法计算和。
b)计算。
c)计算。
3)更新权重参数:
现在,我们可以重复梯度下降法的迭代步骤来减小代价函数J(w,b)的值,进而求解我们的神经网络。
三. 总结
整体来说BP网络就是一种具有自我更新参数能力,还具有一定的容错性和抗干扰性。反向传播算法的基本思想:学习过程由数据集信号的正向传播和误差的反向传播两个过程组成,数据集从输入层输入,经隐层处理以后,传向输出层。如果输出层的实际输出和期望输出不符合,就进入误差的反向传播阶段。反向传播阶段接收损失值逐步前向求偏导,进行梯度下降更新参数,最后使得输出的结果符合我们的要求,模型训练完成。
今天的文章反向传播算法_反向传播和梯度下降区别分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/52828.html