一. 概述

多层网络的学习拟合能力比单层网络要弱小很多。所以想要训练多层网络,后面的简略感知机学习办法显然有些有余,须要拟合能力更加弱小的算法。反向流传算法( Back Propagation,BP)是其中的经典办法,它能够说是现今最胜利的神经网络算法,事实当中应用到神经网络时,大多是应用BP算法训练的。BP算法不仅能够用于多层前馈神经网络,还能够用于其余类型神经网络,例如LSTM模型,通常所说的BP网络,个别是用BP算法训练的多层前馈网络。

二. BP算法

咱们能够先通过BP网络的走向图大抵把握以下反向流传算法的次要用途,从输出层开始,数据进入到网络中通过每一层的计算变动,最终得出理论输入。而后和冀望输入做比拟计算损失值,此时的损失值将依照反方向逐步向前流传计算,通过梯度降落的形式优化网络中的参数,求取出符合要求的网络模型。如图1中所示:

image.png

图1:BP网络结构图

接下来咱们将通过公式计算逐渐的展现BP网络的根本构造。最开始要假如咱们有一个固定训练汇合{(x1,y1),…,(xm,ym)},它的样本总数为m。这样咱们就能够利用批量梯度降落法来求解参数,也属于有监督学习办法。具体到每个样本(x,y),其代价函数为下式:

image.png

对于给定有m个样本的数据集,咱们能够定义整体的代价函数为:

image.png

上式中的第一项J(w,b)是均方差项。而第二项则是规则化项,是用来束缚解以达到构造危险最小化( Structural risk minimization,SRM),目标是避免模型呈现过拟合( over fitting)。

咱们利用梯度降落法,每一次迭代都依照上面的公式对参数W和b进行更新:

image.png

其中是学习速率。关键步骤在于计算偏导数。咱们当初开始反向流传算法的介绍,它是计算偏导数的一种无效办法。

首先理解一下如何应用反向流传算法来计算image.png和image.png,这两项是单个样例(x,y)的代价函数J(W,b;x,y)的偏导数。只有咱们求出该偏导数,前面才能够推导出整体代价函数J(W,b)的偏导数:

image.png

以上两行公式稍有不同,第一行比第二行多出一项,因为权重衰减是作用于W而不是b。

BP算法的总体流程:首先对每个样本数据,进行前向流传计算,顺次计算出每层每个单元的激活值。接着计算出第l层的每个节点i的“残差”值,该值间接体现了这个单元对最终的输入有多大的影响力。最初一层输入层则能够间接取得最终后果和输入后果的差值,咱们定义为(,而对于两头的暗藏层的残差,咱们则通过加权均匀上层(l+1层)残差来计算。

BP算法的具体推导过程如下:

1)前馈网络传导的计算,逐层算出L2到最初一层的每层节点的激活值。

2)计算各节点的残差值,对于输入层,应用如下公式:

image.png

上式子中的推导过程如下:

image.png

3)从最初一层顺次向前推导到第2层,第l层的残差为:

image.png

推导可得出:

image.png

image.png

按照下面只需将nl替换为l就能够推导到中间层l与l=1的残差关系。能够更新所需的偏导数:

image.png

最初得出BP算法的形容:

在上面的伪代码中,W0是一个与矩阵W维度雷同的矩阵,△b0是一个与b0维度雷同的向量。留神这里“W”是一个矩阵。上面,咱们实现批量梯度降落法中的一次迭代:

1)对于所有l,令△W0:=0,b0:=0(设置为全零矩阵或全零向量)。

2)对于i=1到m,

a)应用反向流传算法计算image.png和image.png。

b)计算image.png。

c)计算image.png。

3)更新权重参数:

image.png

当初,咱们能够反复梯度降落法的迭代步骤来减小代价函数J(w,b)的值,进而求解咱们的神经网络。

三. 总结

整体来说BP网络就是一种具备自我更新参数能力,还具备肯定的容错性和抗干扰性。反向流传算法的根本思维:学习过程由数据集信号的正向流传和误差的反向流传两个过程组成,数据集从输出层输出,经隐层解决当前,传向输入层。如果输入层的理论输入和冀望输入不合乎,就进入误差的反向流传阶段。反向流传阶段接管损失值逐渐前向求偏导,进行梯度降落更新参数,最初使得输入的后果合乎咱们的要求,模型训练实现。