美文网首页
反向传播

反向传播

作者: zhouycoriginal | 来源:发表于2020-02-07 14:26 被阅读0次

反向传播(英語:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。
基本的神经网络结构:

NN
神经网络, 一般所有的权重都是需要初始化的, 初始化方法各异
init weight
反向传播的目标是对权重进行优化以减小损失

前向传播:

前向传播也就是推导过程, 一般网络训练好后, 只需要进行以此前向传播就可以得到预测结果, 这些预测结果是根据输入以及网络权重和激活函数得到的, 这和LR很像, 每一个隐藏层的神经元, 都存在一个激活函数
前向传播比较容易理解

计算误差

现在经过前向传播之后, 我们来到了输出层的神经元, 那么输出结果和我们预想的是否一致? 需要一个评价指标, 使用平方误差和来计算总误差:
E_k=\frac{1}{2}\sum_{j=1}^{l}(\hat y_j^k-y_j^k)^2
其中, j代表输出层的第j个神经元, 意味着有l个类, 我们看到\frac{1}{2}, 它是因为后面求偏导的时候, 为的是可以消除平方, 这个不影响模型参数的求解

BP

反向传播的目标是:通过更新网络中的每一个权重,使得最终的输出接近于groundtruth,这样就得到整个网络的误差作为一个整体进行了最小化。
BP以gradient decent为策略. 以目标的负梯度方向对参数进行调整, 反向都是从最后的一层开始的:
\Delta w_{ij}=-\eta \frac{\partial E_k}{\partial w_{ij}}
这个公式也有这样的含义: w的改变, 可以多大程度上影响E_k, 其中 i,j分别是两个相连接的神经元

我们来看输出层, 先看w_5,想知道w_5多大程度上可以影响到总误差? 也就是\frac{\partial E_{total}}{\partial w_5 },通过链式求导法则:

image.png
我们可以看到, 先影响到最后这个神经元的输入, 再影响到其输出值, 然后影响到
那么我们可以总结出一个公式:

代表第次反向传播
显然, 根据上图的例子, 第个神经元的输入值可以被表示为:

其中就是h层神经元的输出,那么显然:

Sigmoid函数有个特性:

那么. 对于剩下的一部分, 我们令:

对于第一项:
, 把代入求偏导即可
对于第二项, 根据具Sigmoid公特性式:

最后得到一个总的公式:

最后我们可以得BP公式:

为了减小误差. 我们将上一个得值减去当前计算得到得值:

这就是新得更新方式

隐层权重更新

image.png

隐藏层权重的更新方式与输出层的类似, 不过有一点不同, 就是每个隐藏层神经元的输出对最终的输出都是有贡献的, out_{h1}既影响out_{o1}也影响out_{o2}, 因此, \frac{\partial E_{total}}{\partial out_{h1}}要考虑到对两个输出的影响
在 更新w_5的时候, 路径是 out(o1)->net(o1)->w_5, 而在更新w_1的时候, 路径是 out(h1)->net(h1)->w_1, 而此时我们可以忽略掉最后一层输出层, out(h1)会接受来自两个误差 E(o1)和E(o2), 这两个我们都需要计算
先计算\frac{\partial E_{total}}{\partial out_{h1}}
可以看到.
\frac{\partial E_{total}}{\partial out_{h1}}=\frac{\partial E_{O_1}}{\partial out_{h1}}+\frac{\partial E_{O_2}}{\partial out_{h1}}
对于:
\frac{\partial E_{O_1}}{\partial out_{h1}}=\frac{\partial E_{O_1}}{\partial net_{O1}}*\frac{\partial net_{O_1}}{\partial out_{h1}}
此时, \frac{\partial net_{O_1}}{\partial out_{h1}}=w_5

总结:

BP是对链式法则的巧妙运用,反向传播仅仅指反向计算梯度的方法. 它从最后一个输出的神经元开始, 通过求误差和当前神经元的偏导得到该层的权重更新

相关文章

网友评论

      本文标题:反向传播

      本文链接:https://www.haomeiwen.com/subject/ogdmxhtx.html