乐趣区

关于算法:反向传播算法

一. 概述

多层网络的学习拟合能力比单层网络要弱小很多。所以想要训练多层网络, 后面的简略感知机学习办法显然有些有余, 须要拟合能力更加弱小的算法。反向流传算法 (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 网络就是一种具备自我更新参数能力,还具备肯定的容错性和抗干扰性。反向流传算法的根本思维:学习过程由数据集信号的正向流传和误差的反向流传两个过程组成,数据集从输出层输出,经隐层解决当前,传向输入层。如果输入层的理论输入和冀望输入不合乎,就进入误差的反向流传阶段。反向流传阶段接管损失值逐渐前向求偏导,进行梯度降落更新参数,最初使得输入的后果合乎咱们的要求,模型训练实现。

退出移动版