第三章: 神经网络原理详解与Pytorch入门
第一部分:神经网络算法理论详解与实践
第三节:神经网络中的前向传播、反向传播的原理与实现
内容:详解如何梯度下降法更新整个网络权重
学习目标:
掌握神经网络中前向传播与反向传播的数学原理
理解梯度下降如何更新权重
明确各层之间的导数传播过程,奠定自动微分和框架实现基础
一、前向传播(Forward Propagation)
前向传播是神经网络的“推理”过程,计算从输入到输出的映射:
以一个两层神经网络为例:
x:输入特征
:权重矩阵
σ:激活函数(ReLU、Sigmoid等)
:输出预测值
二、损失函数(Loss Function)
【深度学习】关键技术-损失函数(Loss Function)_slideloss[16]损失函数是由googleai在2022年提出的一种用于深度学习目标检测中的-CSDN博客
神经网络使用损失函数衡量预测值与真实值之间的差异。常见损失:
任务类型 | 损失函数 | 公式 |
---|---|---|
回归 | 均方误差 MSE | |
分类 | 交叉熵 CrossEntropy |
三、反向传播原理(Backpropagation)
【漫话机器学习系列】008.反向传播算法(Backpropagation Algorithm)-CSDN博客
1. 链式法则(Chain Rule)
【漫话机器学习系列】022.微积分中的链式求导法则(chain rule of Calculus)-CSDN博客
反向传播依赖链式法则来逐层计算梯度:
整个过程:
从损失函数 L 开始
一步步传回去,计算各层的梯度
将误差分配到每一层的权重和偏置
2. 每层误差 δ 的表达
定义 ,即该层输出的“误差信号”
其中:
∘ 表示按元素相乘(Hadamard积)
σ′(z) 是激活函数的导数
四、梯度下降更新参数
【学习笔记】深入浅出梯度下降算法_gradient descent-CSDN博客
【漫话机器学习系列】063.梯度下降(Gradient Descent)_机器学习 梯队下降-CSDN博客
1. 更新公式(以学习率 η)
2. 训练迭代流程
初始化参数
前向传播计算
计算损失函数
反向传播计算梯度
更新参数
重复多个 epoch,直到收敛
五、PyTorch 实现前后向传播简例
【人工智能】Python常用库-PyTorch常用方法教程-CSDN博客
import torch
import torch.nn as nn
import torch.optim as optim
# 模拟数据
x = torch.randn(10, 5)
y = torch.randint(0, 2, (10,))
# 简单神经网络
model = nn.Sequential(
nn.Linear(5, 16),
nn.ReLU(),
nn.Linear(16, 2)
)
loss_fn = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 一次前后传播
y_pred = model(x)
loss = loss_fn(y_pred, y)
loss.backward() # 自动反向传播
optimizer.step() # 更新参数
optimizer.zero_grad() # 梯度清零
小结表格
流程阶段 | 主要操作 |
---|---|
前向传播 | 将输入逐层计算,输出预测值 y^\hat{y} |
计算损失 | 使用 Loss 函数衡量 y^\hat{y} 与真实值的误差 |
反向传播 | 应用链式法则从输出到输入逐层计算梯度 |
梯度更新 | 使用梯度下降更新权重,控制学习速率 |