当前位置: 首页 > news >正文

【第三章:神经网络原理详解与Pytorch入门】01.神经网络算法理论详解与实践-(3)神经网络中的前向传播、反向传播的原理与实现

第三章: 神经网络原理详解与Pytorch入门

第一部分:神经网络算法理论详解与实践

第三节:神经网络中的前向传播、反向传播的原理与实现

内容:详解如何梯度下降法更新整个网络权重

学习目标:

  • 掌握神经网络中前向传播与反向传播的数学原理

  • 理解梯度下降如何更新权重

  • 明确各层之间的导数传播过程,奠定自动微分和框架实现基础


一、前向传播(Forward Propagation)

前向传播是神经网络的“推理”过程,计算从输入到输出的映射:

以一个两层神经网络为例:

z^{(1)} = W^{(1)}x + b^{(1)}
a^{(1)} = \sigma(z^{(1)})
z^{(2)} = W^{(2)}a^{(1)} + b^{(2)}
\hat{y} = f(z^{(2)})

  • x:输入特征

  • W^{(i)}:权重矩阵

  • σ:激活函数(ReLU、Sigmoid等)

  • \hat{y}:输出预测值


二、损失函数(Loss Function)

【深度学习】关键技术-损失函数(Loss Function)_slideloss[16]损失函数是由googleai在2022年提出的一种用于深度学习目标检测中的-CSDN博客

神经网络使用损失函数衡量预测值与真实值之间的差异。常见损失:

任务类型损失函数公式
回归均方误差 MSE\frac{1}{n} \sum (\hat{y}_i - y_i)^2
分类交叉熵 CrossEntropy-\sum y_i \log(\hat{y}_i)

三、反向传播原理(Backpropagation)

【漫话机器学习系列】008.反向传播算法(Backpropagation Algorithm)-CSDN博客

1. 链式法则(Chain Rule)

【漫话机器学习系列】022.微积分中的链式求导法则(chain rule of Calculus)-CSDN博客

反向传播依赖链式法则来逐层计算梯度:

\frac{\partial L}{\partial W^{(1)}} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z^{(2)}} \cdot \frac{\partial z^{(2)}}{\partial a^{(1)}} \cdot \frac{\partial a^{(1)}}{\partial z^{(1)}} \cdot \frac{\partial z^{(1)}}{\partial W^{(1)}}

整个过程:

  • 从损失函数 L 开始

  • 一步步传回去,计算各层的梯度

  • 将误差分配到每一层的权重和偏置

2. 每层误差 δ 的表达

定义 \delta^{(l)} = \frac{\partial L}{\partial z^{(l)}},即该层输出的“误差信号”

\delta^{(l)} = ((W^{(l+1)})^T \delta^{(l+1)}) \circ \sigma'(z^{(l)})

其中:

  • ∘ 表示按元素相乘(Hadamard积)

  • σ′(z) 是激活函数的导数


四、梯度下降更新参数

【学习笔记】深入浅出梯度下降算法_gradient descent-CSDN博客

【漫话机器学习系列】063.梯度下降(Gradient Descent)_机器学习 梯队下降-CSDN博客

1. 更新公式(以学习率 η)

W^{(l)} := W^{(l)} - \eta \cdot \frac{\partial L}{\partial W^{(l)}}
b^{(l)} := b^{(l)} - \eta \cdot \frac{\partial L}{\partial b^{(l)}}

2. 训练迭代流程

  1. 初始化参数

  2. 前向传播计算 \hat{y}

  3. 计算损失函数

  4. 反向传播计算梯度

  5. 更新参数

  6. 重复多个 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} 与真实值的误差
反向传播应用链式法则从输出到输入逐层计算梯度
梯度更新使用梯度下降更新权重,控制学习速率

http://www.dtcms.com/a/265421.html

相关文章:

  • Python中`import` 语句的执行涉及多个步骤
  • 【Python】批量提取超声波检查图片的某一行数据
  • Docker 容器如何实现资源限制(如 CPU 和内存)
  • MacOS Safari 如何打开F12 开发者工具 Developer Tools
  • 【C++】状态模式
  • 好用的自带AI功能的国产IDE
  • Go与Python爬虫对比及模板实现
  • 信刻光盘安全隔离与文件单向导入/导出系统
  • 高压电缆护层安全的智能防线:TLKS-PLGD 监控设备深度解析
  • NVIDIA Spectrum-3 SN4000 系列SN4000 SN4000 系列速度高达 400Gb/秒的现代横向扩展分布式数据中心应用提供支持。
  • 站在 Java 程序员的角度如何学习和使用 AI?从 MVC 到智能体,范式变了!
  • 使用Mac自带的图像捕捉导出 iPhone 相册
  • Mac电脑 虚拟机 VMware Fusion13
  • 办公文档批量打印器 Word、PPT、Excel、PDF、图片和文本,它都支持批量打印。
  • AI 如何批量提取 Word 表格中的字段数据到 Excel 中?
  • docker-compose一键部署全栈项目。springboot后端,react前端
  • 前端框架中注释占位与Fragment内容替换的实现与优化
  • 按键精灵 安卓脚本开发:游戏实战之自动切换账号辅助工具
  • 回归模型评价指标
  • 板凳-------Mysql cookbook学习 (十一--------3)
  • c# [AllowAnonymous] API 匿名访问
  • 微软发布突破性医疗AI系统
  • 基于 Elasticsearch 实现地图点聚合
  • thinkphp中间件
  • Redis—哨兵模式
  • OpenCV篇——项目(二)OCR文档扫描
  • DHCP中继及动态分配
  • 万字详解AVL树
  • 【指针(4)-- 深入理解指针】
  • “AI+”赋能千行百业创新融合的应用场景