PyTorch自动微分与反向传播学习笔记
一、训练三步骤正向传播 → 计算损失 → 反向传播(算梯度) → 梯度下降(更新w,b) → 重复二、梯度下降公式w新 w旧 - 学习率 × 梯度 b新 b旧 - 学习率 × 梯度三、核心神经网络中loss对w的导数分解链式法则三块的自变量/因变量导数项因变量自变量含义loss激活值a激活函数的结果损失随激活值怎么变激活值a加权求和值z激活函数斜率加权求和值z权重w就是输入x本身注zwxb 是加权求和值未经过激活函数的线性输出神经网络中loss对w的导数分解为loss对激活函数值的导数--激活函数对加权求和的导数--加权求和对w的导数链式法则链式关系改变w → 改变z wx b (加权求和值) → 改变a σ(z) (激活值) → 改变loss反向传播∂loss/∂w (loss对a) × (a对z) × (z对w) (损失对激活值) × (激活函数斜率) × (输入x)反向传播更新权重的完整逻辑关键点提炼层位置核心公式难点输出层梯度 (输出误差) × (激活导数) × (前层输出)直接算简单隐藏层梯度 [累加后面所有路径的误差] × (激活导数) × (前层输出)需要逐层反向累加更新前层权重时loss对当前层激活值的偏导需要把后面所有路径传回来的误差累加起来再乘上已知的激活函数导数和输入值就得到梯度。四、requires_gradTrue参数作用告诉PyTorch这个张量需要计算梯度加在哪里加在需要更新的参数(w,b)上效果backward()自动计算这些张量的梯度五、二分类与多分类概率解释二分类# 二分类3个样本 y_true torch.tensor([0, 1, 0]) # 真实类别0,1,0 y_pred torch.tensor([0.2, 0.8, 0.3]) # 预测概率样本y_pred含义样本10.2预测为类别1的概率0.2类别0的概率0.8样本20.8预测为类别1的概率0.8类别0的概率0.2样本30.3预测为类别1的概率0.3类别0的概率0.7通常二分类只输出类别1的概率类别0的概率 1 - 这个值多分类多分类3个样本3个类别 (A:0, B:1, C:2)# 真实类别样本1是B样本2是A样本3是C y_true torch.tensor([1, 0, 2]) # 预测概率分布每行代表一个样本在3个类别上的概率 y_pred torch.tensor([[0.1, 0.8, 0.1], # 样本1A0.1, B0.8, C0.1 [0.7, 0.2, 0.1], # 样本2A0.7, B0.2, C0.1 [0.2, 0.3, 0.5]]) # 样本3A0.2, B0.3, C0.5样本y_true (索引标签)y_true (one-hot)y_pred (概率分布)预测类别是否正确样本11[0, 1, 0][0.1,0.8, 0.1]B (1)✅ 正确样本20[1, 0, 0][0.7, 0.2, 0.1]A (0)✅ 正确样本32[0, 0, 1][0.2, 0.3,0.5]C (2)✅ 正确六、激活函数中梯度消失的本质一、核心公式链式法则的累乘本质对于n层神经网络反向传播回第1层的梯度关键洞察这个公式描述的是梯度从输出层一路传回第1层的过程中间全是激活函数导数的累乘反向传播∂loss/∂w (loss对a) × (a对z) × (z对w) (损失对激活值) × (激活函数斜率) × (输入x)二、Sigmoid的致命弱点Sigmoid导数范围dadza(1−a)∈(0,0.25]dzda​a(1−a)∈(0,0.25]最大值只有0.25的原因当z0时a0.5导数为0.5×0.50.25当|z|6时导数≈0三、5层临界点的数学证明指数级衰减计算层数最大保留梯度剩余比例1层0.2525%2层0.06256.25%3层0.01561.56%4层0.00390.39%5层0.00100.1%结论5层之后梯度只剩千分之一权重几乎不更新四、网络误以为完美的真相当输入在饱和区|z|6激活函数导数 ≈ 0梯度 损失导数 × 0 × 其他 0权重更新 0网络停止学习讽刺的是网络不是真的完美而是梯度消失了五、解决方案问题解决方案原理Sigmoid导数≤0.25改用ReLUReLU导数恒为1深层梯度衰减残差连接跳过连接梯度直达进入饱和区Batch Normalization将输入拉回0附近六、一句话精髓梯度消失的本质多个sigmoid导数的累乘导致深层网络的梯度指数级衰减权重更新失效网络停止学习。学习感悟理解了这个就理解了为什么深度学习要用ReLU为什么要做Batch Norm为什么要有残差网络。这是深度学习的基石之一七、激活函数的用途及优先级Sigmoid用于二分类输出层将结果映射到0-1概率但隐藏层慎用容易梯度消失Softmax用于多分类输出层将结果转为概率分布Tanh隐藏层可用零中心化优于Sigmoid但仍存在梯度消失ReLU隐藏层首选计算快缓解梯度消失但要注意神经元死亡LeakyReLU/PReLUReLU的改进版解决神经元死亡问题优先级高于ReLU。一句话终极总结隐藏层优先用ReLU家族ReLU/LeakyReLU/PReLU输出层二分类用Sigmoid、多分类用SoftmaxTanh作为备选Sigmoid尽量避免用在隐藏层。

相关新闻

OpenClaw 无法执行读写运行文件操作解决办法

OpenClaw 无法执行读写运行文件操作解决办法

升级到3.2版本后,OpenClaw的权限收紧,当你查看代理-tool中全是灰色的此时只需要打开cmd/命令行执行openclaw config set tools.profile "full"权限说明Profile说明适用场景minimal仅启用最基础工具(如web搜索)生产环境、…

2026/7/5 4:29:26 阅读更多 →
Qwen3-0.6B-FP8与Matlab集成:科学计算对话助手

Qwen3-0.6B-FP8与Matlab集成:科学计算对话助手

Qwen3-0.6B-FP8与Matlab集成:科学计算对话助手 用自然语言对话的方式,让Matlab科学计算变得更简单高效 科研工作者每天都要面对复杂的数学公式和大量的数据处理任务。传统的工作流程往往需要在Matlab命令行、脚本编辑器和文档之间来回切换,不…

2026/7/4 11:40:38 阅读更多 →
新手必看!QWEN-AUDIO语音合成系统3步快速上手指南

新手必看!QWEN-AUDIO语音合成系统3步快速上手指南

新手必看!QWEN-AUDIO语音合成系统3步快速上手指南 1. 从文字到声音,只需三步 想不想让电脑帮你把文字变成自然流畅的语音?不是那种机械的、冷冰冰的电子音,而是带着情感、有温度、像真人说话一样的声音。今天要介绍的QWEN-AUDIO…

2026/5/17 10:18:02 阅读更多 →

最新新闻

位置编码外推实战:从BERT 512到26万token的3种延拓策略

位置编码外推实战:从BERT 512到26万token的3种延拓策略

位置编码外推实战:从BERT 512到26万token的3种延拓策略当处理长文本序列时,BERT等Transformer模型面临一个根本性限制——位置编码的长度约束。传统BERT模型最多只能处理512个token,这严重制约了其在长文档理解、基因组分析等场景的应用潜力。…

2026/7/6 0:11:20 阅读更多 →
如何彻底告别重复点击:AutoClicker鼠标自动化完全指南

如何彻底告别重复点击:AutoClicker鼠标自动化完全指南

如何彻底告别重复点击:AutoClicker鼠标自动化完全指南 【免费下载链接】AutoClicker AutoClicker is a useful simple tool for automating mouse clicks. 项目地址: https://gitcode.com/gh_mirrors/au/AutoClicker 还在为每天重复的鼠标点击任务感到疲惫吗…

2026/7/6 0:11:20 阅读更多 →
DQN 算法实战:CartPole-v0 环境 1000 轮训练实现 200 分满分

DQN 算法实战:CartPole-v0 环境 1000 轮训练实现 200 分满分

DQN算法实战:从零构建CartPole智能体的完整指南1. 环境准备与基础概念在开始构建DQN智能体之前,我们需要先理解几个核心概念。CartPole-v0是OpenAI Gym中的一个经典控制问题,目标是让小车上的杆子保持直立不倒下。这个环境有四个状态变量&…

2026/7/6 0:11:20 阅读更多 →
OpenCV 4.8 双目立体匹配实战:BM/SGBM/GC 3种算法在Middlebury数据集上的精度与速度对比

OpenCV 4.8 双目立体匹配实战:BM/SGBM/GC 3种算法在Middlebury数据集上的精度与速度对比

OpenCV 4.8 双目立体匹配实战:BM/SGBM/GC算法在Middlebury数据集上的精度与速度对比双目立体视觉作为三维重建的核心技术之一,其核心挑战在于如何高效准确地计算左右图像间的视差图。OpenCV作为计算机视觉领域的瑞士军刀,提供了Block Matchin…

2026/7/6 0:07:19 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻