美文网首页
反向传播梯度求解推导

反向传播梯度求解推导

作者: 枫丫头爱学习 | 来源:发表于2019-03-09 22:49 被阅读0次

1. 引入

反向传播是一场以误差(Error)为主导的反向传播(Back Propagation)运动,目的在于优化神经网络中的参数(权重,偏置)。

2. 常见符号解释

图1

w_{jk}^l 是第 l-1 层的第 k 个神经元连接第 l 层的第 j 个神经元的权重

图2

b_j^l 表示第 l 层的第 j 个节点的偏置,所有连接到该节点的链接都公用该偏置
a_j^l 表示第 l 层第 j 个节点的输入:即 a^{l}_j = \sigma\left( \sum_k w^{l}_{jk} a^{l-1}_k + b^l_j \right)
向量化之后得到:
a^{l} = \sigma(w^l a^{l-1}+b^l)

前向传播公式:
a^l =\sigma(z^l)

z^l_j= \sum_k w^l_{jk} a^{l-1}_k+b^l_j

3.反向传播推导

反向传播是为了计算出\partial C / \partial w\partial C / \partial b 其中C表示损失函数

图3
假设 图4
将小红人看做是一个小的扰动,我们将它看做一个小的误差,误差会随神经网络传播,对网络的输出产生影响。
由此我们定义在第l层第j个神经元上的误差为 \delta^l_j, \delta^l_j \equiv \frac{\partial C}{\partial z^l_j}
公式一

最后一层误差:\delta^L_j = \frac{\partial C}{\partial a^L_j} \sigma'(z^L_j)
向量形式:\delta^L = (a^L-y) \odot \sigma'(z^L)

公式二

任意层的误差:
\delta^l_j = \frac{\partial C}{\partial z^l_j} = \frac{\partial C}{\partial a^l_j} \sigma'(z^l_j)
假设我们已知第l+1层的误差,通过(w^{l+1})^T回传到第l
\delta^l = ((w^{l+1})^T \delta^{l+1}) \odot \sigma'(z^l)

公式三

权重梯度
\frac{\partial C}{\partial w^l_{jk}} =\frac{\partial C}{\partial w^l_{jk}}= a^{l-1}_k \delta^l_j
解释: 根据 l-1 层输入与输出关系 z = W^T*X +b
\delta^l_j = \frac{\partial C}{\partial z^l_j}
\frac{\partial C}{\partial w^l_{jk}}=\frac{\partial C}{\partial z^l_j}×\frac{\partial z^l_j}{\partial w^l_{jk}} = X× \delta^l_j 然后需要将此处X替换成前一层的输出,即为这一层的输入 a^{l-1}_k 替换后即得到公式3

公式四

同理得到 \frac{\partial C}{\partial b^l_j} = \delta^l_j
\frac{\partial C}{\partial b^l_j}=\frac{\partial C}{\partial z^l_j}×\frac{\partial z^l_j}{\partial b^l_j} = 1× \delta^l_j

为了让自己记住而已,每次看完都会忘记,,,,详细可参考http://neuralnetworksanddeeplearning.com/chap2.html
讲的很好哟

相关文章

网友评论

      本文标题:反向传播梯度求解推导

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