目录

深度学习反向传播

深度学习反向传播

一、白话解释

https://i-blog.csdnimg.cn/direct/cecc52e87a3847bfa552046beeb3d21c.png

梯度其实就是导数,除了用符号求导也可以用近似求导:

https://i-blog.csdnimg.cn/direct/1e43204336e24941954eea4d2412a6c5.png

然后更新w=w-学习率*导数

反向传播就是链式求导

向前计算:对每个节点求偏导

在前向传播的时候,进行一次前向计算的时候就可以把每一条线的偏导数都知道

前向传播和反向传播是交替进行的

二、反向传播

反向传播全称 误差反向传播算法 ,其核心思想是通过链式法则(Chain Rule)将预测误差从输出层逐层反向传递至输入层,从而计算损失函数对每个参数的梯度。这些梯度随后被用于参数更新(如梯度下降法),以最小化模型预测误差。

步骤

1.前向传播

某层神经元加权输入再激活输出

2.计算损失

比较预测输出与真实标签,计算损失值(均方误差、交叉熵)

3.反向传播

从输出层开始,计算损失对输出的梯度也就是损失对激活输出求导,然后逐层反向传播,利用链式求导法则计算各层参数的梯度(导数)。

4.参数更新

用梯度下降法进行更新参数

https://i-blog.csdnimg.cn/direct/a2e8a14c38c94de1a0988d7bde760c94.png

示例:

https://i-blog.csdnimg.cn/direct/801fbccc79b7447eb3aa74a12cf1aeb1.png

比如计算某神经元的误差:

https://i-blog.csdnimg.cn/direct/cbd34a5137184d1e9d1c7f8a03b04e87.png

然后修改权重:

https://i-blog.csdnimg.cn/direct/c2735178e0394a43bbbea088fe5c8044.png

PyTorch主要使用符号微分,因为有计算简化,这样计算量会小很多。