关于算法:反向传播算法

10次阅读

共计 1752 个字符,预计需要花费 5 分钟才能阅读完成。

一. 概述

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

正文完
 0