正则化
偏差与方差
在讨论正则化之前,有必要先对机器学习和深度学习中的偏差和方差进行一个简单了解,这两个概念是模型学习中衡量模型预测精度,拟合、泛化能力的重要指标之一,对调节模型结构提高模型性能有着至关重要的作用。
偏差
- 偏差是指模型预测的期望值与真实值之间的误差。它反映了模型对数据的拟合程度。
- 当偏差高时,模型对数据的拟合能力差,意味着模型结构过于简单,欠拟合。其表现在训练集和测试集上的误差都较高,预测值系统性的偏离真实值。
- 反之,偏差低时,模型对数据的拟合能力好,训练集与测试集的误差较低,预测值系统性的趋于真实值。“系统性”说明的是数据整体上预测值与真实值的趋近程度方向是一致的,但样本个体间是存在差异的。
- 但要注意的是,拟合能力好并不能表明模型的整体性能就好,拟合能力只是衡量模型性能的指标之一。偏差通常由模型的假设导致(如线性模型假设数据分布是线性的)。
- 解决模型偏差高常用的方法有:
- 可以加深模型的结构,如:增加模型的深度(层数)和宽度(神经元);
- 采用更复杂的模型,如:残差结构、Inception模块、注意力机制等;
- 对数据预处理或者进行数据特征工程。
方差
- 方差是指模型对不同训练数据集的敏感程度,反映了模型对训练数据的适应能力(即过拟合程度)。
- 当方差高时,模型对训练数据的拟合效果过于精确,导致泛化能力差(过拟合)。其表现在训练集误差低,但测试集误差高,模型在对预测集新数据上的效果表现不佳。且高方差的模型容易受到训练数据中噪声的影响。
- 过拟合情况(个人经验):
- 训练集损失值一直下降或者逐渐趋于稳定,而测试集损失值下降后出现反升(指的是一段过程,不是震荡的情况)。
- 训练集准确率较高或者非常高(90%+),而测试集的准确性较低。
- 训练集准确率一直上升或者逐渐趋于稳定,而测试集的准确率上升后出现下降。
- 解决模型方差高常用的方法有:
- 可以减少模型的结构,如:减少模型的深度(层数)和宽度(神经元);
- 增加训练数据;
- 采用正则化方法,如:L1、L2正则化,Dropout等。
模型的偏差和方差通常是相互矛盾的,简单模型的偏差高,方差低;复杂模型的偏差低,方差高。优化模型的目标是找到一个平衡点,使得总误差(偏差+方差)最低,也就是偏差-方差权衡。
常用的正则化方法
L1正则化
- L1正则化是通过在损失函数中添加一个正则化项,这个正则化项是模型所有参数(权重)的绝对值之和,用来惩罚较大的权重值。L1正则化的损失函数公式如下所示:
$$
L(w,b) = L(w,b) + \lambda \sum_{i=1}^{n} \left | w_{i} \right |
$$
- 式中:$λ$ 表示正则化超参数,用于平衡损失项和正则化项的权重。$w_{i}$ 表示模型的第 $i$ 个参数权重。
- L1正则化是模型的所有权重的绝对值总和,绝对值在数学的二维平面所变现出的范围是一个菱形,如:(|$w_{1}$|+|$w_{2}$|),而模型的所有权重是一个高维度矩阵,这时可以将所有权重的绝对值之和看作是一个高维度菱形多面体。在目标优化问题求解中,最优解(即最大最小值)往往出现在约束条件的边界或特定点上,而对于L1正则化所表现出菱形体,其顶点就是最优解出现的位置,所以当模型取得最优解时,模型的某些权重就会收缩为零, 如:当取的最优解为 $w_{1}$ 坐标轴的顶点时, $w_{2}$ =0)。
L2正则化
- L2正则化也是通过在损失函数添加一个正则化项,这个正则化项是模型所有权重参数的平方之和,L2正则化损失函数公式如下所示:
$$
L(w,b) = L(w,b) + \lambda \sum_{i=1}^{n}w_{i}^{2}
$$
- 式中:$λ$ 表示正则化超参数,用于平衡损失项和正则化项的权重。$w_{i}$ 表示模型的第$i$个参数权重。
- L2正则化是所有权重平方和,在二维平面上表现为圆,在高维度空间中表现为高维球体,最优点出现在约束条件的边界即高维球体的表面,并不会出现在坐标轴上,故L2正则化的权重不会为零,而是很小的值。
通过上述L1和L2正则化的介绍,可以发现L1、L2正则化通过对模型的权重进行惩罚,限制模型权重的大小,减少模型的灵活性,从而降低了对训练数据噪声的敏感性。
Dropout
- Dropout也是一种正则化技术,但不同于L1和L2正则化的是,其作用是直接在模型训练的过程中,随机的将一部分神经元的输出归零,减少层与层之间的神经元的相互依赖。