深度学习复习笔记
一、梯度消失与梯度爆炸
(一)梯度消失
-
定义
在深层神经网络的反向传播过程中,误差梯度从输出层向输入层传递时,梯度值逐渐衰减至接近 0,导致浅层网络的参数几乎无法更新,模型训练停滞。 -
原因
- 激活函数选择不当:如使用 Sigmoid、Tanh 等饱和激活函数。以 Sigmoid 为例,其导数σ′(x)=σ(x)(1−σ(x))\sigma'(x) = \sigma(x)(1-\sigma(x))σ′(x)=σ(x)(1−σ(x)),当输入x绝对值较大时,导数趋近于 0,反向传播时梯度会被逐层 “缩小”。
- 权重初始化不合理:若初始权重过小,各层输出的量级会因多次乘法运算逐渐衰减,进一步加剧梯度消失。
- 危害
- 浅层网络参数无法有效更新,模型难以学习到有意义的特征,训练收敛极慢甚至不收敛。
- 模型表现差,易出现欠拟合。
- 解决方法
- 更换激活函数:使用 ReLU(f(x)=max(0,x)f(x)=\max(0,x)f(x)=max(0,x),导数在正区间为 1,避免梯度衰减)、Leaky ReLU(解决 ReLU 的 “死亡神经元” 问题)等非饱和激活函数。
- 权重初始化优化:采用 He 初始化(适用于 ReLU,公式w∼N(0,2nin)w \sim N(0, \frac{2}{n_{in}})w∼N(0,nin2))、Xavier 初始化(适用于 Sigmoid/Tanh,公式w∼N(0,1nin)w \sim N(0, \frac{1}{n_{in}})w∼N(0,nin1)),使各层输入输出的方差保持稳定。
- 引入归一化技术:使用 Batch Normalization(BN 层)对每一层的输入进行归一化,减少内部协变量偏移,使梯度传播更稳定。
- 残差连接:在深层网络(如 ResNet)中加入跳连结构(y=F(x)+xy = F(x) + xy=F(x)+x),让梯度可直接通过跳连路径反向传播,缓解浅层梯度消失。
(二)梯度爆炸
-
定义
与梯度消失相反,反向传播时梯度值呈指数级放大,导致参数更新幅度过大,模型训练震荡甚至发散。 -
原因
- 权重初始化过大:初始权重过大,各层输出的量级因多次乘法运算急剧放大,反向传播时梯度被逐层 “放大”。
- 学习率设置过高:即使梯度正常,过高的学习率会使参数更新步长过大,引发训练震荡。
- 危害
- 参数更新不稳定,模型损失函数剧烈震荡,无法收敛。
- 极端情况下,参数值会溢出(如 NaN),导致模型崩溃。
- 解决方法
- 权重初始化优化:同梯度消失的解决思路,通过合理的初始化方法(如 He、Xavier)控制权重的初始量级。
- 梯度裁剪(Gradient Clipping):设置梯度的阈值,当梯度范数超过阈值时,按比例缩放梯度(如g=min(1,threshold∣∣g∣∣)⋅gg = \min(1, \frac{threshold}{||g||}) \cdot gg=min(1,∣∣g∣∣threshold)⋅g),限制梯度的最大幅度。
- 降低学习率:减小学习率,使参数更新步长更平缓,避免因梯度爆炸引发的震荡。
- 使用归一化技术:BN 层同样能缓解梯度爆炸,通过稳定各层输入分布,使梯度传播更可控。
二、常见激活函数
(一)S型函数
1. Sigmoid(Logistic函数)
- 公式:σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}σ(x)=1+e−x1
- 优点:
- 输出范围在(0,1),可直接作为概率输出,适合二分类场景;
- 梯度平滑,无跳跃输出,预测结果明确(接近0或1);
- 特征相差复杂或不显著时效果较好。
- 缺点:
- 存在梯度消失问题,输入趋近于±∞时导数趋近于0,深层网络训练困难;
- 输出不以零为中心,导致后续层神经元输入偏置偏移,降低梯度下降收敛速度;
- 计算成本高,exp函数运算效率低于其他简单激活函数。
2. Tanh(双曲正切函数)
- 公式:tanh(x)=ex−e−xex+e−x=2σ(2x)−1\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = 2\sigma(2x) - 1tanh(x)=ex+e−xex−e−x=2σ(2x)−1
- 优点:
- 输出范围在(-1,1),以零为中心,避免输入偏置偏移问题;
- 相比Sigmoid,梯度范围更大,梯度消失问题有所缓解。
- 缺点:
- 仍存在梯度消失问题,输入趋近于±∞时导数趋近于0;
- 计算依赖exp函数,运算效率较低。
(二)斜坡函数
1. ReLU(修正线性单元)
- 公式:f(x)=max(0,x)f(x) = \max(0, x)f(x)=max(0,x)
- 优点:
- 输入为正时导数恒为1,有效缓解梯度消失问题,适配深层网络;
- 仅包含线性关系,计算速度远快于Sigmoid和Tanh;
- 具有生物学合理性,符合单侧抑制、宽兴奋边界特性。
- 缺点:
- 存在Dead ReLU问题,输入为负时完全失效,梯度为0导致参数无法更新;
- 输出不以零为中心,引入偏置偏移,影响梯度下降效率。
2. Leaky ReLU
- 公式:f(x)=max(αx,x)f(x) = \max(\alpha x, x)f(x)=max(αx,x)(α\alphaα为固定小值,通常取0.01)
- 优点:
- 通过对负输入保留微小线性分量(αx\alpha xαx),缓解Dead ReLU问题;
- 输出范围覆盖(-∞, +∞),扩大激活函数作用范围;
- 计算简单,保持ReLU的高效运算特性。
- 缺点:
- 引入额外超参数α\alphaα,需手动调试以适配不同场景;
- 负输入区域梯度固定,缺乏自适应调整能力。
3. PReLU(参数化ReLU)
- 公式:f(x)=max(αix,x)f(x) = \max(\alpha_i x, x)f(x)=max(αix,x)(αi\alpha_iαi为可学习参数)
- 优点:
- αi\alpha_iαi可通过训练自适应调整,精准缓解不同神经元的Dead ReLU问题;
- 保留ReLU高效计算特性,适配复杂数据分布。
- 缺点:
- 增加模型参数数量,提升模型复杂度和训练成本;
- 训练过程中可能出现过拟合风险,需配合正则化手段。
4. ELU(指数线性单元)
- 公式:f(x)={xx>0α(ex−1)x≤0f(x) = \begin{cases} x & x > 0 \\ \alpha (e^x - 1) & x \leq 0 \end{cases}f(x)={xα(ex−1)x>0x≤0(α\alphaα为超参数)
- 优点:
- 负输入区域采用指数饱和特性,输出更接近零均值,加速收敛;
- 避免Dead ReLU问题,负输入时梯度非零,参数更新更稳定。
- 缺点:
- 包含exp函数运算,计算成本高于ReLU和Leaky ReLU;
- 超参数α\alphaα需手动调试,适配难度较高。
5. SELU(缩放ELU)
- 公式:f(x)=λ{xx>0α(ex−1)x≤0f(x) = \lambda \begin{cases} x & x > 0 \\ \alpha (e^x - 1) & x \leq 0 \end{cases}f(x)=λ{xα(ex−1)x>0x≤0(α≈1.673\alpha≈1.673α≈1.673,λ≈1.051\lambda≈1.051λ≈1.051为固定值)
- 优点:
- 具备自归一化属性,理论上收敛性能更优;
- 继承ELU零均值输出特性,缓解梯度消失问题。
- 缺点:
- 依赖特定初始化策略,否则无法发挥自归一化优势;
- 计算复杂度较高,exp函数影响运算效率。
(三)复合函数
1. Swish
- 公式:swish(x)=x⋅σ(βx)swish(x) = x \cdot \sigma(\beta x)swish(x)=x⋅σ(βx)(σ\sigmaσ为Sigmoid函数,β\betaβ为可学习参数或固定超参数)
- 优点:
- 采用自门控机制,σ(βx)\sigma(\beta x)σ(βx)实现软性开关,自适应调节输出;
- 深层网络中表现优于ReLU,梯度流动更顺畅。
- 缺点:
- 包含exp函数,计算成本高于ReLU;
- 可学习参数β\betaβ增加训练复杂度,调试难度较大。
2. GELU(高斯误差线性单元)
- 公式:GELU(x)=x⋅Φ(x)GELU(x) = x \cdot \Phi(x)GELU(x)=x⋅Φ(x)(Φ(x)\Phi(x)Φ(x)为标准正态分布的累积分布函数,近似为Φ(x)≈σ(1.702x)\Phi(x) \approx \sigma(1.702x)Φ(x)≈σ(1.702x))
- 优点:
- 融合概率特性,对输入的加权更平滑,适配自然语言处理等复杂场景;
- 梯度特性优异,深层网络中收敛速度快。
- 缺点:
- 累积分布函数计算复杂,需近似处理,影响运算效率;
- 理论理解和工程实现难度高于传统激活函数。
三、模型初始化与归一化技术
(一)模型初始化
1. 初始化核心原则
-
禁止参数初始化为0
核心原因:若所有权重初始化为0,反向传播时每层神经元梯度完全相同,导致“对称权重问题”——所有神经元学习效果一致,无法形成差异化特征提取能力,网络等价于单神经元模型。
例外:偏置(Bias)通常初始化为0,因偏置仅影响神经元输出偏移,不涉及对称权重问题。 -
核心目标
- 避免梯度消失/爆炸:通过合理初始化,确保每层输入输出的方差一致,让梯度在反向传播中既不被过度缩小(消失),也不被过度放大(爆炸)。
- 适配激活函数:针对不同激活函数(如Sigmoid、ReLU)设计初始化策略,避免激活函数进入饱和区(如Sigmoid的|x|>5区域,梯度趋近于0)。
2. 常见初始化方法
(1)基础随机分布初始化
| 方法 | 原理 | 适用场景 |
|---|---|---|
| Gaussian分布初始化 | 权重从均值为0、固定方差(如0.01)的高斯分布中随机采样 | 简单全连接网络、小规模模型 |
| 均匀分布初始化 | 权重在区间[−r,r][-r, r][−r,r]内均匀采样(rrr通常为1输入特征数\frac{1}{\sqrt{输入特征数}}输入特征数1) | 通用场景,避免权重过大/过小 |
(2)方差缩放初始化(解决梯度传播问题)
- 核心思想:通过数学推导确定权重方差,确保每层输入输出的方差一致,避免梯度消失/爆炸。
- 典型方法:
- Xavier初始化(适用于Sigmoid、Tanh等激活函数)
公式:权重从均值为0、方差为2输入特征数+输出特征数\frac{2}{输入特征数+输出特征数}输入特征数+输出特征数2的均匀/高斯分布中采样。
原理:适配Sigmoid/Tanh的梯度特性,确保输入经过权重变换后仍处于激活函数的非饱和区。 - He初始化(适用于ReLU及其变种)
公式:权重从均值为0、方差为2输入特征数\frac{2}{输入特征数}输入特征数2的高斯分布中采样。
原理:ReLU会“丢弃”一半负输入,需通过更大方差补偿,避免输入方差被过度缩小。
- Xavier初始化(适用于Sigmoid、Tanh等激活函数)
(3)正交初始化
- 步骤:
- 先从均值为0、方差为1的高斯分布初始化一个矩阵;
- 对矩阵进行奇异值分解(SVD),取其中一个正交矩阵作为权重矩阵。
- 优势:正交矩阵满足“输入向量经过权重变换后,范数保持不变”,避免梯度在传播中被放大/缩小,适配RNN等时序模型(减少梯度累积问题)。
(4)预训练初始化
- 原理:利用已在大规模数据集(如ImageNet)上训练好的模型权重(如ResNet、VGG),作为新模型的初始权重,仅微调顶层网络适配新任务。
- 优势:
- 跳过底层特征学习过程(如边缘、纹理提取),加速模型收敛;
- 缓解小数据集过拟合问题,利用预训练模型的泛化能力。
- 适用场景:迁移学习任务(如将图像分类模型适配到目标检测、图像分割)。
(5)固定值初始化
- 原理:将权重初始化为固定的非零值(如0.1、1.0),仅用于简单测试或特殊场景。
- 缺点:无法适配复杂网络,易导致梯度消失/爆炸,实际工程中极少使用。
3. 初始化相关问题与规避
-
梯度爆炸风险
诱因:权重初始值过大(如从方差为1的高斯分布采样),反向传播时梯度呈指数级放大。
规避:采用方差缩放初始化(Xavier/He),或对权重进行“范数裁剪”(如限制权重L2范数不超过1)。 -
激活函数饱和
诱因:权重初始化不当导致输入进入激活函数饱和区(如Sigmoid的|x|>5)。
规避:针对激活函数选择匹配的初始化方法(如ReLU用He初始化),配合数据归一化(如Batch Normalization)稳定输入范围。
(二)归一化
1. 归一化核心目标
-
解决内部协变量偏移(Internal Covariate Shift)
问题:训练过程中,每层输入的分布随权重更新不断变化,导致后续层需持续适配新分布,延缓收敛。
解决方案:通过归一化将每层输入调整到固定分布(如均值为0、方差为1),让网络聚焦于特征学习而非分布适配。 -
缓解梯度消失
原理:将输入稳定在激活函数的非饱和区(如ReLU的x>0、Sigmoid的|x|<1),确保梯度非零,提升反向传播效率。 -
加速收敛
效果:归一化后损失函数的优化地形更平滑,梯度下降步长可设置更大,收敛速度提升2-10倍。
2. 常见归一化方法
(1)输入数据归一化(预处理阶段)
| 方法 | 公式 | 适用场景 |
|---|---|---|
| 最小-最大归一化 | x′=x−min(x)max(x)−min(x)x' = \frac{x - \min(x)}{\max(x) - \min(x)}x′=max(x)−min(x)x−min(x)(输出范围[0,1]) | 数据分布已知、无极端值场景 |
| 标准化(Z-Score) | x′=x−μσx' = \frac{x - \mu}{\sigma}x′=σx−μ(μ\muμ为均值,σ\sigmaσ为标准差,输出均值0、方差1) | 通用场景,适配大多数模型 |
| 白化(Whitening) | 去除特征间相关性(如PCA降维后标准化),降低数据冗余 | 计算机视觉(如图像识别) |
关键注意:训练集与测试集需独立归一化——先计算训练集的μ\muμ和σ\sigmaσ,再用相同参数标准化测试集,避免“数据泄露”(测试集参与训练集统计信息计算,导致泛化能力下降)。
(2)逐层归一化(网络训练阶段)
① 批量归一化(Batch Normalization, BN)
-
核心思想:对每个批次(Batch)的输入特征进行归一化,适配全连接网络、CNN等模型。
-
操作流程:
- 训练阶段:
- 计算批次内特征的均值μB=1B∑i=1Bxi\mu_B = \frac{1}{B}\sum_{i=1}^B x_iμB=B1∑i=1Bxi和方差σB2=1B∑i=1B(xi−μB)2\sigma_B^2 = \frac{1}{B}\sum_{i=1}^B (x_i - \mu_B)^2σB2=B1∑i=1B(xi−μB)2;
- 归一化:x^i=xi−μBσB2+ϵ\hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}x^i=σB2+ϵxi−μB(ϵ\epsilonϵ避免分母为0);
- 仿射变换:yi=γ⋅x^i+βy_i = \gamma \cdot \hat{x}_i + \betayi=γ⋅x^i+β(γ\gammaγ、β\betaβ为可学习参数,恢复网络表达能力)。
- 测试阶段:
- 不使用批次统计信息,而是使用训练过程中累积的移动均值μmoving=α⋅μmoving+(1−α)⋅μB\mu_{moving} = \alpha \cdot \mu_{moving} + (1-\alpha) \cdot \mu_Bμmoving=α⋅μmoving+(1−α)⋅μB和移动方差σmoving2=α⋅σmoving2+(1−α)⋅σB2\sigma_{moving}^2 = \alpha \cdot \sigma_{moving}^2 + (1-\alpha) \cdot \sigma_B^2σmoving2=α⋅σmoving2+(1−α)⋅σB2(α\alphaα通常为0.99)。
- 训练阶段:
-
优点:
- 允许更大学习率,加速收敛;
- 缓解过拟合(批次内随机性相当于正则化);
- 降低权重初始化要求。
-
缺点:
- 依赖批次大小,小批次(B<8)时统计信息不准确;
- 不适用于RNN等时序模型(批次维度与时间步冲突)。
② 层归一化(Layer Normalization, LN)
-
核心思想:对单一样本的所有特征维度进行归一化,适配RNN、Transformer等时序模型。
-
操作流程:
- 计算单一样本所有特征的均值μ=1D∑i=1Dxi\mu = \frac{1}{D}\sum_{i=1}^D x_iμ=D1∑i=1Dxi和方差σ2=1D∑i=1D(xi−μ)2\sigma^2 = \frac{1}{D}\sum_{i=1}^D (x_i - \mu)^2σ2=D1∑i=1D(xi−μ)2(DDD为特征维度);
- 归一化与仿射变换:同BN(x^i=xi−μσ2+ϵ\hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}}x^i=σ2+ϵxi−μ,yi=γ⋅x^i+βy_i = \gamma \cdot \hat{x}_i + \betayi=γ⋅x^i+β)。
-
优点:
- 不依赖批次大小,适配小批次或在线学习场景;
- 适用于时序模型(如LSTM、Transformer),解决BN在时间步上的统计信息不稳定问题。
-
缺点:
- 对特征维度敏感,维度较小时归一化效果波动大;
- 计算成本高于BN(需逐样本计算统计信息)。
③ 其他归一化方法
| 方法 | 核心逻辑 | 适用场景 |
|---|---|---|
| 权重归一化(Weight Normalization) | 对权重向量进行归一化(而非输入特征),将权重分解为“方向向量”和“缩放因子” | 小批次模型、生成对抗网络(GAN) |
| 局部响应归一化(LRN) | 对CNN同一卷积核的局部特征进行归一化,增强局部竞争机制 | 早期CNN(如AlexNet),现较少用 |
3. 归一化关键注意事项
-
归一化位置
通常在“仿射变换(如Linear、Conv)之后、激活函数之前”,避免激活函数因输入过大/过小进入饱和区。
例外:LRN在CNN激活函数之后,增强局部特征区分度。 -
参数训练
BN/LN的γ\gammaγ、β\betaβ需与网络权重一起训练,初始值通常设为γ=1\gamma=1γ=1、β=0\beta=0β=0(保证初始归一化后输出不变)。 -
推理阶段适配
BN在推理时需加载训练好的移动均值/方差,不可直接使用批次统计;
LN在推理时逻辑与训练一致,无需额外统计信息。
(三)初始化与归一化的协同关系
-
互补作用
- 初始化解决“初始权重分布问题”,确保训练起步阶段梯度正常传播;
- 归一化解决“训练过程中输入分布漂移问题”,确保梯度持续稳定传播。
-
典型搭配方案
- ReLU + He初始化 + BN:适配深层CNN,缓解梯度消失,加速收敛;
- Tanh + Xavier初始化 + LN:适配RNN时序模型,稳定时间步上的输入分布。
四、损失函数
(一)损失函数核心定位与分类逻辑
损失函数是神经网络训练的“目标导向工具”,用于量化模型预测值与真实值的差异,指导优化算法(如Adam、SGD)调整参数以最小化误差。按任务类型可划分为回归损失、分类损失、排名损失三大类,核心逻辑是“匹配任务输出类型(连续值/离散值/相对关系)与误差计算需求”。
(二)回归损失(处理连续值输出)
回归任务的输出为连续值(如房价、温度、销量),损失函数需量化“连续预测值与真实值的绝对/相对偏差”。
1. L1损失(MAE,平均绝对误差)
- 公式:LMAE=1N∑i=1N∣yi−y^i∣L_{MAE} = \frac{1}{N} \sum_{i=1}^N |y_i - \hat{y}_i|LMAE=N1∑i=1N∣yi−y^i∣(yiy_iyi为真实值,y^i\hat{y}_iy^i为预测值,NNN为样本数)
- 核心特点:
- 对异常值鲁棒(仅计算绝对偏差,不受极端值过度影响);
- 梯度恒定(∂L∂y^i=±1N\frac{\partial L}{\partial \hat{y}_i} = \pm \frac{1}{N}∂y^i∂L=±N1),但在预测值=真实值处不可导,可能影响优化稳定性。
- PyTorch实现:
torch.nn.L1Loss() - 适用场景:数据含较多异常值的回归任务(如房屋价格预测、医疗指标预测)。
2. L2损失(MSE,均方误差)
- 公式:LMSE=1N∑i=1N(yi−y^i)2L_{MSE} = \frac{1}{N} \sum_{i=1}^N (y_i - \hat{y}_i)^2LMSE=N1∑i=1N(yi−y^i)2
- 核心特点:
- 对偏差敏感(平方项放大较大误差),优化过程更关注大偏差样本;
- 梯度与偏差成正比(∂L∂y^i=2N(yi−y^i)\frac{\partial L}{\partial \hat{y}_i} = \frac{2}{N}(y_i - \hat{y}_i)∂y^i∂L=N2(yi−y^i)),可导性好,优化稳定,但对异常值鲁棒性差(极端值会导致梯度爆炸)。
- PyTorch实现:
torch.nn.MSELoss() - 适用场景:数据无异常值、追求精准拟合的回归任务(如股票价格预测、推荐系统评分预测)。
3. SmoothL1Loss(平滑L1损失)
- 公式:LSmoothL1={12(yi−y^i)2∣yi−y^i∣<1∣yi−y^i∣−12∣yi−y^i∣≥1L_{SmoothL1} = \begin{cases} \frac{1}{2}(y_i - \hat{y}_i)^2 & |y_i - \hat{y}_i| < 1 \\ |y_i - \hat{y}_i| - \frac{1}{2} & |y_i - \hat{y}_i| \geq 1 \end{cases}LSmoothL1={21(yi−y^i)2∣yi−y^i∣−21∣yi−y^i∣<1∣yi−y^i∣≥1
- 核心特点:
- 融合L1与L2优势:偏差小时用L2(平滑梯度,稳定优化),偏差大时用L1(抑制异常值影响);
- 避免L1在原点不可导、L2对异常值敏感的问题。
- PyTorch实现:
torch.nn.SmoothL1Loss() - 适用场景:对精度和鲁棒性均有要求的任务(如目标检测中的边界框回归)。
4. 其他回归损失(补充提及)
- Huber损失:与SmoothL1类似,但可通过超参数δ\deltaδ调整“L1/L2切换阈值”,灵活性更高;
- Log-Cosh损失:用双曲余弦函数的对数近似MSE,对异常值鲁棒性优于MSE,计算成本略高。
(三)分类损失(处理离散值输出)
分类任务的输出为离散类别(如手写数字0-9、图像分类标签),损失函数需量化“预测类别概率分布与真实类别分布的差异”。
1. 交叉熵损失(CrossEntropyLoss)
- 公式:LCE=−1N∑i=1N∑c=1Cyi,clog(y^i,c)L_{CE} = -\frac{1}{N} \sum_{i=1}^N \sum_{c=1}^C y_{i,c} \log(\hat{y}_{i,c})LCE=−N1∑i=1N∑c=1Cyi,clog(y^i,c)(CCC为类别数,yi,cy_{i,c}yi,c为真实标签的独热编码,y^i,c\hat{y}_{i,c}y^i,c为预测类别概率)
- 核心特点:
- 直接量化“概率分布差异”,梯度计算简洁(∂L∂y^i,c=y^i,c−yi,cN\frac{\partial L}{\partial \hat{y}_{i,c}} = \frac{\hat{y}_{i,c} - y_{i,c}}{N}∂y^i,c∂L=Ny^i,c−yi,c);
- PyTorch实现中内置
LogSoftmax,输入可直接为模型线性输出(无需手动加Softmax),避免数值不稳定。
- PyTorch实现:
torch.nn.CrossEntropyLoss() - 适用场景:多分类任务(如MNIST手写数字识别、ImageNet图像分类)。
2. 二元交叉熵损失(BCELoss)
- 公式:LBCE=−1N∑i=1N[yilog(y^i)+(1−yi)log(1−y^i)]L_{BCE} = -\frac{1}{N} \sum_{i=1}^N [y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)]LBCE=−N1∑i=1N[yilog(y^i)+(1−yi)log(1−y^i)](yi∈{0,1}y_i \in \{0,1\}yi∈{0,1}为二元标签,y^i∈(0,1)\hat{y}_i \in (0,1)y^i∈(0,1)为预测概率)
- 核心特点:
- 专为二分类设计,需手动在模型输出层加
Sigmoid(确保预测值在(0,1)区间); - 支持“多标签二分类”(如一张图片同时包含猫和狗,标签为[1,1])。
- 专为二分类设计,需手动在模型输出层加
- PyTorch实现:
torch.nn.BCELoss()(需配合torch.nn.Sigmoid()使用) - 适用场景:二分类任务(如垃圾邮件识别、疾病诊断)、多标签分类任务。
3. 负对数似然损失(NLLLoss)
- 公式:LNLL=−1N∑i=1Nlog(y^i,yi)L_{NLL} = -\frac{1}{N} \sum_{i=1}^N \log(\hat{y}_{i,y_i})LNLL=−N1∑i=1Nlog(y^i,yi)(yiy_iyi为真实类别索引,y^i,yi\hat{y}_{i,y_i}y^i,yi为对应类别的预测概率对数)
- 核心特点:
- 输入需先经过
LogSoftmax(将概率转换为对数概率),本质是交叉熵损失的“分步实现”; - 可灵活适配自定义概率分布(如带权重的类别预测)。
- 输入需先经过
- PyTorch实现:
torch.nn.NLLLoss()(需配合torch.nn.LogSoftmax()使用) - 适用场景:需自定义概率处理逻辑的分类任务(如带类别权重的不平衡分类)。
4. 其他分类损失(补充提及)
- Focal Loss:通过“难度权重”降低易分类样本的损失占比,聚焦难分类样本,适配类别不平衡任务(如目标检测中的少量前景目标);
- Label Smoothing CrossEntropy:将独热标签替换为“带平滑的概率分布”(如真实标签1→0.9,其他标签→0.1/(C-1)),缓解过拟合。
(四)排名损失(处理相对关系输出)
排名任务的核心是“预测样本间的相对顺序”(而非绝对值/类别),损失函数用于量化“相对偏差”。
1. 三重边际损失(TripletMarginLoss)
- 核心逻辑:输入“锚点样本(anchor)、正样本(positive,与锚点相似)、负样本(negative,与锚点不相似)”,通过损失函数让“锚点-正样本距离”小于“锚点-负样本距离”并满足边际(margin)。
- 公式:LTriplet=1N∑i=1Nmax(d(ai,pi)−d(ai,ni)+margin,0)L_{Triplet} = \frac{1}{N} \sum_{i=1}^N \max(d(a_i, p_i) - d(a_i, n_i) + margin, 0)LTriplet=N1∑i=1Nmax(d(ai,pi)−d(ai,ni)+margin,0)(d(x,y)d(x,y)d(x,y)为样本间距离,如L2距离)
- 核心特点:
- 直接优化样本间的相对距离,适配“相似性排序”场景;
- 需合理选择样本三元组(如难例挖掘),否则损失易为0,模型无法学习。
- PyTorch实现:
torch.nn.TripletMarginLoss() - 适用场景:人脸识别(区分同一人与不同人)、商品推荐(相似商品排序)。
2. 余弦嵌入损失(CosineEmbeddingLoss)
- 核心逻辑:通过余弦相似度衡量样本对的相似性,正样本对(相似)损失最小化,负样本对(不相似)损失最大化。
- 公式:LCosine=1N∑i=1N{1−cos(ai,bi)yi=1(正样本对)max(0,cos(ai,bi)−margin)yi=−1(负样本对)L_{Cosine} = \frac{1}{N} \sum_{i=1}^N \begin{cases} 1 - \cos(a_i, b_i) & y_i = 1(正样本对) \\ \max(0, \cos(a_i, b_i) - margin) & y_i = -1(负样本对) \end{cases}LCosine=N1∑i=1N{1−cos(ai,bi)max(0,cos(ai,bi)−margin)yi=1(正样本对)yi=−1(负样本对)(cos(a,b)\cos(a,b)cos(a,b)为样本a与b的余弦相似度)
- 核心特点:
- 对样本尺度不敏感(余弦相似度仅关注方向),适合高维特征场景;
- 需手动将样本特征归一化,确保相似度计算有效。
- PyTorch实现:
torch.nn.CosineEmbeddingLoss() - 适用场景:文本相似度匹配(如问答系统)、特征检索。
3. Kullback-Leibler散度损失(KLDivLoss)
- 核心逻辑:量化两个概率分布的“相对熵”,衡量预测分布与真实分布的差异(仅当预测分布逼近真实分布时,损失趋近于0)。
- 公式:LKL=1N∑i=1N∑c=1Cyi,clog(yi,cy^i,c)L_{KL} = \frac{1}{N} \sum_{i=1}^N \sum_{c=1}^C y_{i,c} \log\left(\frac{y_{i,c}}{\hat{y}_{i,c}}\right)LKL=N1∑i=1N∑c=1Cyi,clog(y^i,cyi,c)
- 核心特点:
- 非对称损失(KL(P||Q)≠KL(Q||P)),更关注“真实分布P对预测分布Q的惩罚”;
- 输入需先经过
LogSoftmax,且真实分布需为概率形式(如标签平滑后的分布)。
- PyTorch实现:
torch.nn.KLDivLoss() - 适用场景:模型蒸馏(学生模型拟合教师模型的概率分布)、生成模型(如VAE中重构分布与真实分布的匹配)。
(五)损失函数选择与使用注意事项
1. 核心选择原则
- 匹配任务类型:连续值用回归损失(如MSE),离散类别用分类损失(如CrossEntropy),相对关系用排名损失(如TripletMargin);
- 考虑数据特性:含异常值选L1/SmoothL1,类别不平衡选Focal Loss,高维特征选余弦嵌入损失;
- 平衡优化难度:优先选择可导性好、梯度稳定的损失(如MSE、CrossEntropy),避免不可导点过多的损失(如纯L1)。
2. 关键使用细节
- 数值稳定性:分类损失中避免手动叠加
Softmax+Log(易导致数值下溢),优先用PyTorch内置实现(如CrossEntropyLoss含LogSoftmax); - 标签格式适配:CrossEntropyLoss输入真实标签为“类别索引”(如0-9),BCELoss输入为“0/1标签”,需提前转换标签格式;
- 超参数调优:排名损失中的
margin(如TripletMarginLoss的margin=1.0)需根据任务调整,过小易导致样本重叠,过大易导致损失恒为0。
3. 典型任务与损失函数搭配示例
| 任务类型 | 损失函数选择 | 模型输出适配 |
|---|---|---|
| 波士顿房价预测(回归) | MSE/SmoothL1Loss | 单输出神经元(连续值) |
| MNIST手写数字识别(多分类) | CrossEntropyLoss | 10输出神经元(类别概率) |
| 垃圾邮件识别(二分类) | BCELoss | 1输出神经元+Sigmoid(概率) |
| 人脸识别(排名) | TripletMarginLoss | 高维特征向量(如128维嵌入) |
五、线性模型解决非线性问题的三种方式
1、非线性转化(数据层:人工特征升维)
核心原理
通过人工特征工程,将原始低维空间中线性不可分的数据,映射到更高维度的特征空间,使数据在新空间中满足线性可分条件,再用线性模型(如线性回归、感知机)求解。本质是“用空间维度提升换线性可解性”。
关键操作
- 特征构造:基于业务或数学逻辑设计非线性特征,如对二维输入((x_1, x_2)),构造多项式特征((x_1^2, x_2^2, x_1x_2))、交叉特征等。
- 典型案例:解决“异或问题”——原始二维空间中((0,0))“异或”((0,1))结果非线性可分,通过升维至三维((x_1, x_2, (x_1-x_2)^2)),可找到线性超平面分割数据。
优缺点
- 优点:原理直观,无需修改模型结构,仅通过数据预处理即可适配线性模型。
- 缺点:依赖人工经验,高维映射易导致“维度灾难”(计算复杂度剧增),对复杂非线性模式适配性有限。
2、核函数方法(算法层:隐式空间映射)
核心原理
无需显式将数据映射到高维空间,而是通过核函数(Kernel Function)直接在原始低维空间计算“高维空间的内积”,间接实现高维线性拟合。核心是“用核函数替代高维计算,保留线性模型的简洁性”。
关键操作
- 核函数选择:根据数据特性选择适配的核函数,常用类型包括:
- 高斯核(RBF):可将数据映射到无穷维空间,适配复杂非线性分布,公式为(K(x_i, x_j) = \exp(-\gamma||x_i - x_j||^2))((\gamma)为带宽参数);
- 多项式核:实现有限维多项式映射,公式为(K(x_i, x_j) = (x_i \cdot x_j + c)^d)((d)为多项式次数,(c)为常数)。
- 模型适配:将核函数嵌入线性模型(如支持向量机SVM),通过核技巧实现对非线性数据的分类或回归。
优缺点
- 优点:规避维度灾难,计算效率高于显式升维,对中小规模数据的非线性拟合效果稳定。
- 缺点:核函数参数(如高斯核的(\gamma))需手动调优,对超大规模数据或高维数据(如图像)的计算成本较高,可解释性弱。
3、深度学习方法(模型层:自适应非线性学习)
核心原理
通过构建多层神经网络(如多层感知机MLP、CNN、Transformer),利用“线性变换+非线性激活函数”的堆叠结构,让模型自主学习数据的非线性特征表示。本质是“用模型深度和复杂度换自动非线性拟合能力”,无需人工干预特征设计。
关键操作
- 网络结构设计:
- 基础组件:每层包含线性加权((z = Wx + b))和非线性激活(如ReLU、Sigmoid),激活函数是引入非线性的核心(无激活函数的多层网络仍为线性模型);
- 典型架构:多层感知机通过“输入层-隐藏层-输出层”的全连接结构,实现从低维到高维特征的自动映射;CNN通过卷积核和池化层,提取局部非线性特征。
- 优化机制:通过反向传播算法(BP)和梯度下降(或其变体),迭代更新网络参数(权重(W)、偏置(b)),最小化损失函数(如MSE、交叉熵)。
优缺点
- 优点:端到端学习,无需人工设计特征,可自动适配复杂非线性场景(如图像、语音、自然语言),泛化能力强。
- 缺点:需大量数据和计算资源,模型复杂度高(易过拟合),需调优超参数(如层数、学习率),可解释性较弱。
三种方法对比与适用场景
| 方法 | 核心逻辑 | 适用场景 | 依赖条件 | 计算复杂度 |
|---|---|---|---|---|
| 非线性转化(升维) | 人工显式升维+线性模型 | 简单非线性问题、小数据集、可解释性要求高 | 人工特征工程经验 | 低-中 |
| 核函数方法 | 核函数隐式升维+线性模型 | 中小规模数据、非线性适中、避免维度灾难 | 核函数选择与参数调优 | 中 |
| 深度学习 | 多层网络自适应非线性学习 | 复杂非线性问题、大数据、高维数据(如图像/NLP) | 大量数据、计算资源 | 高 |
六、单个神经元核心过程
(一)前向传播(核心:从输入到输出的预测过程)
-
接收输入信号
神经元接收多个输入(如特征值、上一层神经元输出),记为 x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn,每个输入对应一个权重 w1,w2,...,wnw_1, w_2, ..., w_nw1,w2,...,wn(衡量输入的重要性),同时包含一个偏置项 b(调节神经元激活的基准)。 -
线性加权求和
对输入和对应权重做乘法后求和,再加上偏置项,得到线性组合结果 z,公式:z=w1x1+w2x2+...+wnxn+b=∑i=1nwixi+bz = w_1x_1 + w_2x_2 + ... + w_nx_n + b = \sum_{i=1}^n w_ix_i + bz=w1x1+w2x2+...+wnxn+b=∑i=1nwixi+b(本质是线性变换,仅能处理线性关系)。 -
非线性激活
将线性结果 z 传入激活函数(如 ReLU、Sigmoid),输出神经元的最终结果 y^\hat{y}y^,公式:y^=f(z)\hat{y} = f(z)y^=f(z)(激活函数是关键,引入非线性,让神经元能学习复杂模式)。 -
最终输出
y^\hat{y}y^ 作为该神经元的输出,可传递给下一层神经元,或作为整个模型的预测结果(如二分类任务中 Sigmoid 输出的概率)。
(二)反向传播(核心:根据误差优化参数)
当预测结果 y^\hat{y}y^ 与真实标签 y 存在误差时,通过反向传播更新权重 w 和偏置 b,减少误差:
-
计算损失
用损失函数(如 MSE、交叉熵)衡量预测误差,记为 L(y,y^)L(y, \hat{y})L(y,y^)(如 MSE:L=12(y−y^)2L = \frac{1}{2}(y - \hat{y})^2L=21(y−y^)2)。 -
梯度计算
利用链式法则,计算损失函数对权重 w 和偏置 b 的梯度(梯度表示参数变化对损失的影响程度):
- 对权重 wiw_iwi 的梯度:∂L∂wi=∂L∂y^⋅f′(z)⋅xi\frac{\partial L}{\partial w_i} = \frac{\partial L}{\partial \hat{y}} \cdot f'(z) \cdot x_i∂wi∂L=∂y^∂L⋅f′(z)⋅xi
- 对偏置 b 的梯度:∂L∂b=∂L∂y^⋅f′(z)\frac{\partial L}{\partial b} = \frac{\partial L}{\partial \hat{y}} \cdot f'(z)∂b∂L=∂y^∂L⋅f′(z)
(其中 f′(z)f'(z)f′(z) 是激活函数的导数,决定梯度传播的效率)。
- 参数更新
沿梯度下降方向更新参数,公式(α\alphaα 为学习率,控制更新步长):
wi=wi−α⋅∂L∂wiw_i = w_i - \alpha \cdot \frac{\partial L}{\partial w_i}wi=wi−α⋅∂wi∂L
b=b−α⋅∂L∂bb = b - \alpha \cdot \frac{\partial L}{\partial b}b=b−α⋅∂b∂L
七、神经元核心参数(w 与 b)
(一)核心参数:w(权重)
-
含义
衡量每个输入信号 xix_ixi 对神经元输出的 “重要性程度”,是输入与输出之间的关联强度指标。
数值正负表示关联方向:正权重增强输入信号的影响,负权重削弱输入信号的影响;数值绝对值越大,该输入对输出的影响越显著。 -
作用(结合前向传播)
神经元接收输入 x1,x2,...,xnx_1, x_2, ..., x_nx1,x2,...,xn 后,每个输入会与对应权重相乘(w1x1,w2x2,...,wnxnw_1x_1, w_2x_2, ..., w_nx_nw1x1,w2x2,...,wnxn),实现对不同输入的 “加权筛选”。
例如:识别图像中 “猫的耳朵” 特征时,对应耳朵像素的输入权重 w 会被训练得更大,突出该特征对 “猫” 分类结果的贡献。 -
学习与更新(反向传播过程)
- 初始值:不能设为全 0(会导致所有神经元输出一致,无法学习),通常用 He 初始化(适配 ReLU)、Xavier 初始化(适配 Sigmoid/Tanh)等随机方式赋值。
- 更新公式(梯度下降):wi=wi−α⋅∂L∂wiw_i = w_i - \alpha \cdot \frac{\partial L}{\partial w_i}wi=wi−α⋅∂wi∂L
α\alphaα 是学习率,控制更新步长;∂L∂wi\frac{\partial L}{\partial w_i}∂wi∂L 是损失函数对 wiw_iwi 的梯度,反映权重变化对误差的影响方向。 - 核心逻辑:若某权重导致预测误差增大,梯度会引导其减小;若帮助降低误差,则引导其增大,逐步优化到最优值。
(二)核心参数:b(偏置)
-
含义
神经元的 “激活基准偏移量”,用于调整线性组合结果 z=∑wixi+bz = \sum w_ix_i + bz=∑wixi+b 的整体位置,决定神经元被激活的难易程度。
可理解为 “神经元的基础灵敏度”:无需依赖输入信号,就能改变输出的基准水平。 -
作用(结合前向传播)
抵消输入信号的整体偏移,让神经元更灵活地拟合输入输出关系。
例如:输入信号整体偏小(如都在 0~0.1 之间),若没有偏置 b,线性组合结果 z 可能始终偏小,导致 ReLU 激活函数输出为 0(神经元 “死亡”);加入正偏置 b 后,可抬高 z 的值,让神经元正常激活并学习。 -
学习与更新(反向传播过程)
- 初始值:通常设为 0(偏置的对称性不会导致模型瘫痪,后续训练会自适应调整),也可设为小随机数。
- 更新公式(梯度下降):b=b−α⋅∂L∂bb = b - \alpha \cdot \frac{\partial L}{\partial b}b=b−α⋅∂b∂L
∂L∂b\frac{\partial L}{\partial b}∂b∂L 是损失函数对 b 的梯度,反映偏置变化对误差的影响。 - 核心逻辑:若神经元激活过度(输出始终偏大),梯度引导 b 减小;若激活不足(输出始终偏小),则引导 b 增大,适配输入数据的分布。
(三)w 与 b 的关联与区别
| 维度 | w(权重) | b(偏置) |
|---|---|---|
| 核心作用 | 调节单个输入的重要性(差异化加权) | 调节神经元整体激活基准(全局偏移) |
| 依赖输入 | 与具体输入 xix_ixi 一一对应,依赖输入 | 不依赖单个输入,是神经元的“全局参数” |
| 初始值要求 | 禁止全 0,需随机初始化(如 He/Xavier) | 可设为 0,或小随机数 |
| 影响范围 | 仅对应输入 xix_ixi 对输出的贡献 | 影响整个神经元的输出基准,无输入针对性 |
总结
- w 负责 “精准调节每个输入的重要性”,是神经元学习 “输入特征优先级” 的关键;
- b 负责 “整体校准激活基准”,是神经元学习 “输入分布偏移” 的补充;
- 两者通过反向传播不断更新,共同让神经元拟合输入与输出之间的映射关系(线性或非线性,依赖激活函数)。
八、链式法则求误差梯度
1、核心前提假设
以单神经元或多层神经网络为基础,明确关键变量与目标:
- 网络结构:含输入层、隐藏层、输出层,每层神经元通过线性加权(z = wx + b)+ 非线性激活(a = f(z))处理数据,形成复合函数关系(如输出aₗ = fₗ(wₗ·aₗ₋₁ + bₗ));
- 损失函数:量化预测输出与真实标签的差异(如回归任务用MSE、分类任务用交叉熵);
- 目标:计算损失函数对所有可训练参数(各层w和b)的偏导数(∂L/∂w、∂L/∂b),用于后续梯度下降优化。
2、核心原理与通用公式
1. 基本逻辑
神经网络的预测过程是多层函数嵌套的复合函数(损失L → 输出层aₗ → 输出层zₗ → 隐藏层aₗ₋₁ → … → 输入层x),根据链式法则,损失对某层参数的梯度 = 损失对该层输出的梯度 × 该层输出对净输入的梯度 × 该层净输入对参数的梯度,即:
∂L∂θ=∂L∂a×∂a∂z×∂z∂θ\frac{\partial L}{\partial \theta} = \frac{\partial L}{\partial a} \times \frac{\partial a}{\partial z} \times \frac{\partial z}{\partial \theta}∂θ∂L=∂a∂L×∂z∂a×∂θ∂z
其中θ代表待求参数(w或b),a为神经元激活输出,z为神经元线性净输入(z = wx + b)。
2. 多层网络通用传递规则
对于L层神经网络,第k层参数的梯度需从输出层反向传递至第k层,公式可扩展为:
∂L∂wk=∂L∂aL×∂aL∂zL×∂zL∂aL−1×∂aL−1∂zL−1×...×∂zk∂wk\frac{\partial L}{\partial w_k} = \frac{\partial L}{\partial a_L} \times \frac{\partial a_L}{\partial z_L} \times \frac{\partial z_L}{\partial a_{L-1}} \times \frac{\partial a_{L-1}}{\partial z_{L-1}} \times ... \times \frac{\partial z_k}{\partial w_k}∂wk∂L=∂aL∂L×∂zL∂aL×∂aL−1∂zL×∂zL−1∂aL−1×...×∂wk∂zk
核心是“梯度从后向前逐层传递,每一层梯度都依赖于下一层的梯度结果”,形成“梯度链”。
3、单神经元梯度计算步骤(实操示例)
以单神经元(输入x、权重w、偏置b、激活函数f、损失函数L)为例,分步拆解计算过程:
-
第一步:计算损失对输出的梯度(∂L/∂a)
基于选定的损失函数直接求导,反映输出偏差对损失的影响:- 若为MSE损失(L = 1/2(y - a)²,y为真实标签),则∂L/∂a = -(y - a);
- 若为交叉熵损失(分类任务,a = σ(z)为Sigmoid输出),则∂L/∂a = -(y/a - (1-y)/(1-a))。
-
第二步:计算激活输出对净输入的梯度(∂a/∂z)
即激活函数的导数,是梯度传递的“桥梁”,直接影响梯度传递效率:- ReLU激活(a = max(0, z)):z > 0时∂a/∂z = 1,z ≤ 0时∂a/∂z = 0;
- Sigmoid激活(a = 1/(1+e⁻ᵢ)):∂a/∂z = a(1 - a);
- Tanh激活(a = (eᵢ - e⁻ᵢ)/(eᵢ + e⁻ᵢ)):∂a/∂z = 1 - a²。
-
第三步:计算净输入对参数的梯度(∂z/∂w、∂z/∂b)
神经元净输入z = w·x + b,直接对参数求偏导:- 对权重w:∂z/∂w = x(x为该参数对应的输入值);
- 对偏置b:∂z/∂b = 1(b为常数项,导数恒为1)。
-
第四步:组合计算最终梯度
将三步梯度相乘,得到损失对参数的最终梯度:- 损失对权重:∂L∂w=∂L∂a×∂a∂z×x\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \times \frac{\partial a}{\partial z} \times x∂w∂L=∂a∂L×∂z∂a×x;
- 损失对偏置:∂L∂b=∂L∂a×∂a∂z×1\frac{\partial L}{\partial b} = \frac{\partial L}{\partial a} \times \frac{\partial a}{\partial z} \times 1∂b∂L=∂a∂L×∂z∂a×1。
4、多层网络梯度传递关键规则
- 隐藏层梯度传递:隐藏层参数的梯度需依赖下一层的梯度结果,例如第k层权重wₖ的梯度为:
∂L∂wk=∂L∂zk×ak−1T\frac{\partial L}{\partial w_k} = \frac{\partial L}{\partial z_k} \times a_{k-1}^T∂wk∂L=∂zk∂L×ak−1T
其中∂L∂zk=(∂L∂zk+1×wk+1T)×f′(zk)\frac{\partial L}{\partial z_k} = (\frac{\partial L}{\partial z_{k+1}} \times w_{k+1}^T) \times f'(z_k)∂zk∂L=(∂zk+1∂L×wk+1T)×f′(zk)(f’(zₖ)为第k层激活函数导数),体现“梯度从后层向前层传递”的逻辑; - 批量数据适配:当处理批量样本(批量大小为B)时,需对单个样本的梯度取平均值,即∂L∂w=1B∑i=1B(∂Li∂ai×∂ai∂zi×xi)\frac{\partial L}{\partial w} = \frac{1}{B} \sum_{i=1}^B (\frac{\partial L_i}{\partial a_i} \times \frac{\partial a_i}{\partial z_i} \times x_i)∂w∂L=B1∑i=1B(∂ai∂Li×∂zi∂ai×xi),避免批量大小影响梯度幅度。
5、核心作用与应用场景
- 反向传播算法基础:链式法则是反向传播的数学核心,通过逐层传递梯度,实现深层网络所有参数的梯度计算,解决多层网络梯度难以直接求解的问题;
- 参数更新依据:计算得到的梯度(∂L/∂w、∂L/∂b)直接用于梯度下降优化(w = w - α·∂L/∂w,α为学习率),指导参数向损失减小的方向调整;
- 适配所有网络结构:无论是全连接网络、CNN还是RNN,均可通过链式法则拆解梯度,仅需根据网络结构调整各层梯度的具体计算形式(如CNN需考虑卷积核与特征图的梯度匹配)。
6、关键注意事项
- 梯度消失/爆炸风险:若激活函数导数绝对值小于1(如Sigmoid),多层梯度乘积可能趋近于0(梯度消失);若权重初始化过大,梯度可能呈指数级放大(梯度爆炸),需通过ReLU激活、权重初始化优化(Xavier/He)缓解;
- 导数计算准确性:激活函数和损失函数的导数需精准匹配(如交叉熵+Sigmoid的组合可简化梯度计算),避免手动求导错误;
- 框架自动实现:PyTorch等深度学习框架会基于计算图自动应用链式法则计算梯度(如通过backward()函数),无需手动拆解,但理解原理是调优网络的基础。
九、神经元参数计算例题
例题 1:单神经元前向传播计算(已知参数求输出)
题目:
一个单神经元接收 2 个输入 x1=2x_1=2x1=2,x2=3x_2=3x2=3,对应权重 w1=0.5w_1=0.5w1=0.5,w2=0.8w_2=0.8w2=0.8,偏置 b=0.2b=0.2b=0.2,激活函数为 ReLU。求该神经元的输出 y^\hat{y}y^。
解题步骤:
-
计算线性组合 z
公式:z=w1x1+w2x2+bz = w_1x_1 + w_2x_2 + bz=w1x1+w2x2+b
代入数值:z=0.5×2+0.8×3+0.2=1+2.4+0.2=3.6z = 0.5×2 + 0.8×3 + 0.2 = 1 + 2.4 + 0.2 = 3.6z=0.5×2+0.8×3+0.2=1+2.4+0.2=3.6 -
通过激活函数计算输出 y^\hat{y}y^
ReLU 激活函数:f(z)=max(0,z)f(z) = \max(0, z)f(z)=max(0,z)
因 z=3.6>0z=3.6 > 0z=3.6>0,故:y^=f(z)=3.6\hat{y} = f(z) = 3.6y^=f(z)=3.6
答案:3.6\boxed{3.6}3.6
例题 2:单神经元反向传播计算(已知误差求参数梯度)
题目:
延续例题 1,若真实标签 y=4y=4y=4,损失函数为 MSE(L=12(y−y^)2L = \frac{1}{2}(y - \hat{y})^2L=21(y−y^)2),激活函数仍为 ReLU。求损失对权重 w1w_1w1、w2w_2w2 和偏置 b 的梯度(∂L∂w1\frac{\partial L}{\partial w_1}∂w1∂L、∂L∂w2\frac{\partial L}{\partial w_2}∂w2∂L、∂L∂b\frac{\partial L}{\partial b}∂b∂L)。
解题步骤:
- 明确已知条件
- 预测输出 y^=3.6\hat{y}=3.6y^=3.6(来自例题 1),真实标签 y=4y=4y=4
- 线性组合 z=3.6z=3.6z=3.6,输入 x1=2x_1=2x1=2,x2=3x_2=3x2=3
- 分步计算链式法则各环节导数
-
步骤 1:损失对输出的导数 ∂L∂y^\frac{\partial L}{\partial \hat{y}}∂y^∂L
MSE 损失求导:∂L∂y^=−(y−y^)\frac{\partial L}{\partial \hat{y}} = - (y - \hat{y})∂y^∂L=−(y−y^)
代入数值:∂L∂y^=−(4−3.6)=−0.4\frac{\partial L}{\partial \hat{y}} = - (4 - 3.6) = -0.4∂y^∂L=−(4−3.6)=−0.4 -
步骤 2:输出对 z 的导数 ∂y^∂z\frac{\partial \hat{y}}{\partial z}∂z∂y^
ReLU 导数:z>0z>0z>0 时,f′(z)=1f'(z)=1f′(z)=1
故:∂y^∂z=1\frac{\partial \hat{y}}{\partial z} = 1∂z∂y^=1 -
步骤 3:z 对参数的导数
- ∂z∂w1=x1=2\frac{\partial z}{\partial w_1} = x_1 = 2∂w1∂z=x1=2
- ∂z∂w2=x2=3\frac{\partial z}{\partial w_2} = x_2 = 3∂w2∂z=x2=3
- ∂z∂b=1\frac{\partial z}{\partial b} = 1∂b∂z=1
- 组合计算梯度(链式法则)
公式:∂L∂θ=∂L∂y^×∂y^∂z×∂z∂θ\frac{\partial L}{\partial \theta} = \frac{\partial L}{\partial \hat{y}} × \frac{\partial \hat{y}}{\partial z} × \frac{\partial z}{\partial \theta}∂θ∂L=∂y^∂L×∂z∂y^×∂θ∂z(θ\thetaθ 代表参数)
- ∂L∂w1=−0.4×1×2=−0.8\frac{\partial L}{\partial w_1} = -0.4 × 1 × 2 = -0.8∂w1∂L=−0.4×1×2=−0.8
- ∂L∂w2=−0.4×1×3=−1.2\frac{\partial L}{\partial w_2} = -0.4 × 1 × 3 = -1.2∂w2∂L=−0.4×1×3=−1.2
- ∂L∂b=−0.4×1×1=−0.4\frac{\partial L}{\partial b} = -0.4 × 1 × 1 = -0.4∂b∂L=−0.4×1×1=−0.4
答案:
∂L∂w1=−0.8\frac{\partial L}{\partial w_1} = \boxed{-0.8}∂w1∂L=−0.8,∂L∂w2=−1.2\frac{\partial L}{\partial w_2} = \boxed{-1.2}∂w2∂L=−1.2,∂L∂b=−0.4\frac{\partial L}{\partial b} = \boxed{-0.4}∂b∂L=−0.4
例题 3:两层神经网络参数更新(梯度下降应用)
题目:
延续例题 2,若学习率 α=0.1\alpha=0.1α=0.1,用梯度下降法更新参数 w1w_1w1、w2w_2w2、b,求更新后的值。
解题步骤:
参数更新公式:θnew=θold−α×∂L∂θ\theta_{\text{new}} = \theta_{\text{old}} - \alpha × \frac{\partial L}{\partial \theta}θnew=θold−α×∂θ∂L
- w1new=0.5−0.1×(−0.8)=0.5+0.08=0.58w_1^{\text{new}} = 0.5 - 0.1 × (-0.8) = 0.5 + 0.08 = 0.58w1new=0.5−0.1×(−0.8)=0.5+0.08=0.58
- w2new=0.8−0.1×(−1.2)=0.8+0.12=0.92w_2^{\text{new}} = 0.8 - 0.1 × (-1.2) = 0.8 + 0.12 = 0.92w2new=0.8−0.1×(−1.2)=0.8+0.12=0.92
- bnew=0.2−0.1×(−0.4)=0.2+0.04=0.24b^{\text{new}} = 0.2 - 0.1 × (-0.4) = 0.2 + 0.04 = 0.24bnew=0.2−0.1×(−0.4)=0.2+0.04=0.24
答案:
w1=0.58w_1 = \boxed{0.58}w1=0.58,w2=0.92w_2 = \boxed{0.92}w2=0.92,b=0.24b = \boxed{0.24}b=0.24
计算题核心规律
- 前向传播:按 “输入→加权求和(z)→激活函数→输出” 顺序计算,重点是线性组合和激活函数的应用。
- 反向传播:严格遵循链式法则,分三步拆解梯度(损失→输出→z→参数),注意激活函数导数的取值(如 ReLU 在正区间为 1,Sigmoid 为f(z)(1−f(z))f(z)(1-f(z))f(z)(1−f(z)))。
- 参数更新:梯度下降公式直接套用,注意梯度符号对参数调整方向的影响(负梯度方向是损失减小的方向)。
更多推荐

所有评论(0)