一、训练三步骤正向传播 → 计算损失 → 反向传播(算梯度) → 梯度下降(更新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]dzdaa(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尽量避免用在隐藏层。