【DL】链式法则|反向传播|神经网络梯度

发布时间:2026/8/27 5:00:26
【DL】链式法则|反向传播|神经网络梯度 q:为什么需要反向传播【DL】神经网络学习机制predictionlossgradient模型可以知道Loss是多少都是它不知道w应该增加还是减少增加多少或者减少多少所以需要Loss ↓ 找到每个参数影响多少 ↓ 调整参数这个过程叫做反向传播Backpropagation。Forwardx↓w1↓h↓w2↓ŷ↓LossBackwardLoss↓∂L/∂ŷ↓∂L/∂h↓∂L/∂w1p核心思想链式法则链式法则如果你学习过导数你应该听说过我们想知道w2对 Loss 影响多少也就是∂L/∂w。w1呢eg:体重 ↓ BMI ↓ 健康评分如果想要知道体重变化对健康评分的变化我们通过BMI进行查看体重 → BMI → 健康评分。链式法则最终影响中间影响 × 前面影响数学∂L/∂w2 ∂L/∂ŷ × ∂ŷ/∂w2o.神经网络训练流程Forward 神经网络前向传播只是计算当前参数下的预测值。 输入 ↓ 参数 ↓ 预测 ↓ Loss Backward Loss ↓ 梯度 ↓ 更新参数 重复很多次do.使用python模拟反向传播#realityx2y20#参数w15w23# forwardh w1 * xy_hatw2*h loss(y_hat-y)**2# backwarddL_dyhat2*(y_hat-y)dYhat_dw2h dYhat_dhw2 dh_dw1x dL_dw2dL_dyhat*dYhat_dw2 dL_dw1dL_dyhat*dYhat_dh*dh_dw1print(dL_dw1)print(dL_dw2)这种简单的你可以手写但是情况一旦复杂不可能人工计算所以我们以后使用pytorchuse:PyTorch 的解决方案建立计算图Computational Graphyw*xpytorch内部记录 * / \ w x w参与了乘法 x参与了乘法#计算lossloss.backward() PyTorch 自动沿着图反向计算 Loss ↓ 乘法节点 ↓ w梯度 PyTorch 自动求梯度importtorch xtorch.tensor(2.0)wtorch.tensor(3.0,requires_gradTrue)yw*x lossy**2loss.backward()print(w.grad)神经网络训练真实流程(神经网络训练循环)数据 | v Forward | v Prediction | v Loss | v backward() | v Gradient | v Update 参数 | v 新模型实现一个小神经网络import torch #x → w1 → h → w2 → y x torch.tensor(2.0) y torch.tensor(20.0) w1 torch.tensor( 5.0, requires_gradTrue ) w2 torch.tensor( 3.0, requires_gradTrue ) # forward h w1*x y_hat w2*h loss (y_hat-y)**2 print(loss) # backward loss.backward() print(w1.grad) print(w2.grad)讲到这里你应该有一个新的认知神经网络 大量简单计算节点组成的计算图 自动链式求导 参数更新

相关新闻