【第三章:神经网络原理详解与Pytorch入门】01.神经网络算法理论详解与实践-(4)神经网络中的重要组件
第三章: 神经网络原理详解与Pytorch入门
第一部分:神经网络算法理论详解与实践
第四节:神经网络中的重要组件
内容:激活函数、loss函数、dropout、梯度消失与爆炸、过拟合与欠拟合
神经网络的性能依赖于多个关键组件的合理设计与使用。理解这些组件有助于构建更加稳健且高效的模型。
一、激活函数(Activation Function)
【深度学习】关键技术-激活函数(Activation Functions)_激活函数代码-CSDN博客
激活函数决定神经元的输出值,常见有:
-
Sigmoid【漫话机器学习系列】142.Sigmoid 激活函数(Sigmoid Activation Function)_sigmoid函数-CSDN博客
-
公式:σ(x) = 1 / (1 + e^(-x))
-
特点:输出范围 (0, 1),容易饱和,导致梯度消失。
-
-
Tanh【漫话机器学习系列】224.双曲正切激活函数(Hyperbolic Tangent Activation Function)_hyperbolic tangent激活函数-CSDN博客
-
公式:tanh(x) = 2σ(2x) - 1
-
输出范围 (-1, 1),中心对称。
-
-
ReLU【漫话机器学习系列】152.ReLU激活函数(ReLU Activation Function)_relu函数-CSDN博客
-
公式:f(x) = max(0, x)
-
非饱和、计算简单,是目前最常用的激活函数。
-
-
Leaky ReLU【漫画机器学习系列】102.带泄露线性整流函数(Leaky ReLU)_leakyrelu-CSDN博客
-
公式:f(x) = x if x > 0 else αx,解决ReLU死神经元问题。
-
激活函数的选取会影响梯度传播、网络非线性表达能力。
二、损失函数(Loss Function)
【深度学习】关键技术-损失函数(Loss Function)-CSDN博客
衡量模型预测与真实标签之间的差距:
-
回归问题常用:
-
均方误差(MSE):
L = 1/n Σ (y - ŷ)^2
-
平均绝对误差(MAE)
-
-
分类问题常用:
-
交叉熵(Cross-Entropy):
L = - Σ y log(ŷ)
-
二元分类:
Binary Cross Entropy
-
多分类:
Categorical Cross Entropy
-
损失函数是反向传播的起点,决定梯度方向。
三、Dropout 正则化
【深度学习】关键技术-正则化(Regularization)_在深度学习中,正则化方法的主要作用是?-CSDN博客
【漫话机器学习系列】151.正则化(Regularization)-CSDN博客
【漫话机器学习系列】228.丢弃对于隐含单元的影响(The Effect Of Dropout On Hidden Units)_卷积神经网络dropout-CSDN博客
【漫话机器学习系列】011.Bagging方法 VS Dropout方法_dropout和bagging-CSDN博客
-
在训练过程中,随机“关闭”神经元(即令输出为0)。
-
减少神经元间的 co-adaptation,防止过拟合。
-
在推理阶段恢复完整网络,并将输出缩放。
import torch.nn as nn
layer = nn.Dropout(p=0.5)
四、梯度消失与梯度爆炸
【漫话机器学习系列】162.“消失”的梯度(Vanishing Gradient Problem)_损失函数梯度消失-CSDN博客
【漫话机器学习系列】053.梯度爆炸(Exploding Gradient Problem)-CSDN博客
-
梯度消失:反向传播时梯度逐层变小,导致靠近输入层的权重几乎不更新,常见于 sigmoid、tanh。
-
梯度爆炸:梯度指数增长,参数剧烈震荡甚至变为
NaN
,常发生在深层网络中。
应对策略:
-
使用 ReLU、BatchNorm、残差结构(ResNet)
-
权重初始化技巧(如 He 初始化)
-
梯度裁剪(Gradient Clipping)
【深度学习】计算机视觉(CV)-图像分类-ResNet(Residual Network,残差网络)_cv resnet-CSDN博客
【漫话机器学习系列】277.梯度裁剪(Gradient Clipping)_梯度裁剪参数作用-CSDN博客
五、过拟合与欠拟合
【漫话机器学习系列】199.过拟合 vs 欠拟合(Overfit vs Underfit)_模型过拟合图片-CSDN博客
【漫话机器学习系列】200.过度拟合(Overfitting)_过度拟合训练数据-CSDN博客
【机器学习】基础知识:拟合度(Goodness of Fit)-CSDN博客
【漫话机器学习系列】007.如何防止过拟合(avoid over-fitting)_如何保证模型不过度依赖训练数据-CSDN博客
-
过拟合(Overfitting):模型在训练集上表现很好,但泛化能力差。
-
原因:模型复杂度过高、训练数据量不足
-
解决方法:增加数据、正则化、Dropout、早停等
-
-
欠拟合(Underfitting):模型在训练集和测试集上都表现差。
-
原因:模型太简单、训练不充分
-
解决方法:提升模型复杂度、调参、增加训练轮数
-
总结表格
组件 | 功能描述 | 常见问题/优化手段 |
---|---|---|
激活函数 | 引入非线性,提高模型表达能力 | 梯度消失(用ReLU)、死神经元问题 |
损失函数 | 衡量预测与真实值的差异 | 根据任务选择适当的loss |
Dropout | 防止过拟合,提高模型泛化能力 | 仅用于训练阶段 |
梯度消失/爆炸 | 影响梯度传播和模型稳定性 | 使用ReLU、BatchNorm、残差连接等 |
过拟合与欠拟合 | 模型泛化与拟合能力问题 | 增加数据、正则化、调参等 |