反向传播梯度求解推导

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向传播梯度求解推导相关的知识,希望对你有一定的参考价值。

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

是第 层的第 个神经元连接第 层的第 个神经元的权重

表示第 层的第 个节点的偏置,所有连接到该节点的链接都公用该偏置
表示第 层第 个节点的输入:即
向量化之后得到:

前向传播公式:

反向传播是为了计算出 和 其中 表示损失函数

最后一层误差:
向量形式:

任意层的误差:

假设我们已知第 层的误差,通过 回传到第 层

权重梯度

解释: 根据 层输入与输出关系
由 得
然后需要将此处X替换成前一层的输出,即为这一层的输入 替换后即得到公式3

同理得到

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

Torch反向传播时出错或者梯度为NaN的问题排查

参考技术A 师兄问到的backward时出现NaN和错误不好定位的问题,感觉有必要记录一下

解决方案
Automatic differentiation package - torch.autograd — PyTorch 1.9.0 documentation
使用 with torch.autograd.detect_anomaly(): 包裹传播过程检测错误

粗暴的方法,直接查看模型各节点的梯度是否计算正确

以上是关于反向传播梯度求解推导的主要内容,如果未能解决你的问题,请参考以下文章

Torch反向传播时出错或者梯度为NaN的问题排查

反向传播

反向传播算法之要点(Backpropagation)

如何理解神经网络里面的反向传播算法

反向传播算法推导

反向传播 - 李宏毅机器学习笔记