机器学习笔记:偏差、方差、正则化与归一化详解
机器学习笔记:偏差、方差、正则化与归一化详解
机器学习中的偏差、方差、正则化和归一化是模型训练中非常重要的概念。本文将通过详细的数学解释、实例分析和直观的图表,帮助读者理解这些概念及其在模型训练中的重要作用。
1. 深度学习中的偏差(Bias)与方差(Variance)
在深度学习中,“偏差(Bias)和方差(Variance)”是模型误差的两个核心来源,反映了模型的复杂度和对数据的拟合能力。理解这两个概念对于优化模型性能至关重要。
1.1 偏差(Bias)
定义:偏差是模型预测值的期望与真实值之间的差异。
数学表示(以回归问题为例):
其中,
是模型预测值,f(x) 是真实值。
特点:
- 高偏差:模型过于简单,无法捕捉数据中的复杂模式(如线性模型拟合非线性数据),导致欠拟合。
- 低偏差:模型复杂,能够拟合训练数据中的细节。
1.2 方差(Variance)
定义:方差是模型预测值的变化范围,反映模型对训练数据中噪声的敏感程度。
数学表示:
特点:
- 高方差:模型过于复杂,对训练数据中的噪声过度敏感,导致过拟合(在训练集表现好,测试集表现差)。
- 低方差:模型对数据扰动不敏感,稳定性高。
1.3 偏差-方差权衡(Bias-Variance Tradeoff)
模型的误差可分解为:
偏差和方差的矛盾:
- 简单模型(如线性回归)通常高偏差、低方差。
- 复杂模型(如深度神经网络)可能低偏差、高方差。
目标:找到模型复杂度的平衡点,使总误差最小。
1.4 二分类实例:乳腺癌良恶性预测
假设使用深度学习模型对乳腺癌患者的肿瘤进行良恶性分类(标签为0或1),数据集包含肿瘤大小、形状等特征。
场景1:高偏差(欠拟合)
- 模型:单层逻辑回归(简单线性分类器)。
- 表现:
- 训练集准确率低(例如70%)。
- 测试集准确率同样低(例如68%)。
- 原因:线性模型无法捕捉肿瘤特征与恶性程度之间的复杂非线性关系。
- 解决方法:
- 增加模型复杂度(如使用深度神经网络)。
- 引入非线性激活函数(如ReLU)。
场景2:高方差(过拟合)
- 模型:深度神经网络(5层,每层256个神经元,无正则化)。
- 表现:
- 训练集准确率高(例如99%)。
- 测试集准确率低(例如80%)。
- 原因:模型过度拟合了训练数据中的噪声(如异常样本)。
- 解决方法:
- 添加正则化(如L2正则化、Dropout)。
- 扩大数据集或使用数据增强。
- 降低模型复杂度(减少层数或神经元数量)。
场景3:偏差-方差平衡
- 模型:3层神经网络(带Dropout和L2正则化)。
- 表现:
- 训练集准确率(92%)。
- 测试集准确率(90%)。
- 原因:模型复杂度适中,既能拟合数据又不敏感于噪声。
总结
- 高偏差:模型太简单,需要增加复杂度(如加深网络、添加特征)。
- 高方差:模型太复杂,需降低复杂度或引入正则化。
- 核心目标:通过调整模型结构、正则化和数据策略,实现偏差与方差的平衡。
2. 正则化在机器学习中的作用,为什么可以有效避免过拟合?
正则化是机器学习中用于防止模型过拟合的核心技术之一。它通过修改模型的训练过程,限制模型的复杂度,从而提升泛化能力。以下从作用机制、常见方法详细解释:
2.1 正则化的作用
- 控制模型复杂度:正则化通过在损失函数中添加额外的惩罚项,约束模型参数(如权重)的大小。例如,L2正则化惩罚较大的权重值,迫使模型参数趋向于较小的数值,降低模型对训练数据中噪声的敏感性。
- 防止过拟合:过拟合发生时,模型在训练集上表现极佳,但在测试集上性能骤降。正则化通过限制参数的自由度,阻止模型过度适应训练数据中的噪声或偶然模式。
- 促进稀疏性或平滑性
- L1正则化(Lasso):通过惩罚权重的绝对值之和,促使部分权重变为零,实现特征选择,适合高维稀疏数据。
- L2正则化(Ridge):通过惩罚权重的平方和,使权重分布更平滑,适合处理共线性数据。
- 提升模型鲁棒性:正则化使模型对输入数据的小扰动更不敏感,增强泛化能力。例如,Dropout在训练时随机丢弃神经元,模拟集成学习效果。
2.2 正则化为何能有效避免过拟合
1、数学视角:约束优化问题
正则化将原始损失函数 J(θ) 修改为:
其中:
- Ω(θ) 是正则化项(如L1或L2范数);
- λ 是正则化强度,控制惩罚力度。
优化目标变化:模型不仅要最小化训练误差,还需保持参数简单(如权重较小)。这种双重目标限制了模型的复杂度,避免其过度拟合。
2、实例解释:线性回归中的正则化
假设用线性回归预测房价,特征包括面积、房间数等。若特征维度高或存在多重共线性,模型可能过拟合。
- 无正则化:模型可能赋予某些特征过大的权重,导致对噪声敏感。
- 加入L2正则化:约束权重大小,使模型更平滑,避免极端参数值。
- 加入L1正则化:筛选重要特征(如仅保留“面积”和“房间数”),剔除冗余特征。
3. 正则化的个人理解
上图,是一个二分类任务,最左边表示模型的欠拟合(模型过于简单),最右边表示模型的过拟合(模型过于复杂,将噪声也学了进去),而正则化的作用就是通过惩罚项,降低模型过于复杂的非线性能力。
其实,比如,在神经网络的传播过程中,也就相当于将隐藏层中的部分神经单元作用弱化(图1神经元不是说完全剔除,而是减低作用)(比如采用激活函数tanh,当x自变量变得很小时,y因变量的趋势就近似为线性关系(图2中的红线部分))从而在一定程度上降低模型的非线性拟合能力。如下图所示:
图三 dropout正则化前后对比
4. 为什么要归一化?
目的就是为了加速模型训练过程,那么从代价函数开始讲起吧。
其实质就是关于W以及B的函数表达式:
举个例子:
假设神经网络有两个特征值:X1,X2。其数据的初始刻度如图4所示
图4 X1,X2的散点图
可以发现,在横轴上X1的跨度比较大,结果会导致于X1,X2相关的W1,W2的数据跨度差异比较大,相应的代价函数就如同图5所示,那么采用梯度下降寻找最优点,相应的步长可能需要多次迭代,反复调整,如图6所示
图5 代价函数关于B和W的三维图 图6未归一化的梯度下降
那么为了加速神经网络的训练过程,首先对散点图进行归一化,通过“平移”、“拉伸”、“缩放”,那么数据就可能显得“均匀”如图7所示:
图7 归一化之后的散点图
同样,归一化之后的数据三维图以及梯度下降,如图7、图8所示
图7 归一化之后的三维图 图8 归一化之后的梯度下降
因此,通过对比,代价函数显得更加均匀,学习率的取得相对未归一化之前可以更大一些(不论从那个地方哪个开始)
当然,并不是所有数据都需要归一化,前提是数据分布尽可能的“均匀”,或者相似的范围(跨度不大,比如X1:150,X2:2070)
这只是我的个人理解,有什么不足之处,欢迎指正哈!