正则化
正则化:通过降低模型复杂度防止过拟合,在损失函数中添加一个惩罚项来限制模型的权重。
模型不在只是以最小化损失为目标,这称为经验风险最小化:
minimize(Loss(Data|Model))
\text{minimize(Loss(Data|Model))}
minimize(Loss(Data|Model))
而是以最小化损失和复杂度为目标,这称为结构风险最小化:
minimize(Loss(Data|Model)
+
λ
complexity(Model))
\text{minimize(Loss(Data|Model)} + \lambda \text{ complexity(Model))}
minimize(Loss(Data|Model)+λ complexity(Model))
现在,训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度,另一个是正则化项,用于衡量模型复杂度。
λ \lambda λ 是正则化系数,表示正则化的效果,对模型权重惩罚的力度。
在选择 λ \lambda λ 值时,目标是在简单化和训练数据拟合之间达到适当的平衡:
(1)如果您的
λ
\lambda
λ 值过高,则模型会非常简单,但是您将面临数据欠拟合的风险。您的模型将无法从训练数据中获得足够的信息来做出有用的预测。
(2)如果您的
λ
\lambda
λ 值过低,则模型会比较复杂,并且您将面临数据过拟合的风险。您的模型将因获得过多训练数据特点方面的信息而无法泛化到新数据。
L1正则化:
L
1
regularization term
=
∣
∣
w
∣
∣
=
∣
∣
w
1
∣
∣
+
∣
∣
w
2
∣
∣
+
.
.
.
+
∣
∣
w
n
∣
∣
L_1\text{ regularization term} = ||\boldsymbol w|| = {||w_1|| + ||w_2|| + ... + ||w_n||}
L1 regularization term=∣∣w∣∣=∣∣w1∣∣+∣∣w2∣∣+...+∣∣wn∣∣
一种正则化,根据权重绝对值总和来惩罚权重。
在依赖稀疏特征的模型中,L1 正则化有助于使不相关或几乎不相关的特征的权重正好为 0(稀疏矩阵),从而将这些特征从模型中移除,可用于特征选择。 缺点就是通常它在计算上不如L2惩罚项高效。
稀疏矢量通常包含许多维度。创建特征组合会导致包含更多维度。由于使用此类高维度特征矢量,因此模型可能会非常庞大,并且需要大量的 RAM。
在高维度稀疏矢量中,最好尽可能使权重正好降至 0。正好为 0 的权重基本上会使相应特征从模型中移除。 将特征设为 0 可节省 RAM 空间,且可以减少模型中的噪点。
而使用 L1 正则化正好可以使模型中很多信息缺乏的系数正好为 0。
L2正则化
一种正则化,根据权重平方和来惩罚权重。
L2 正则化有助于使离群值(具有较大正值或较小负值)权重接近于0,但又不正好为 0。在线性模型中,L2 正则化始终可以改进泛化。
L
2
regularization term
=
∣
∣
w
∣
∣
2
2
=
w
1
2
+
w
2
2
+
.
.
.
+
w
n
2
L_2\text{ regularization term} = ||\boldsymbol w||_2^2 = {w_1^2 + w_2^2 + ... + w_n^2}
L2 regularization term=∣∣w∣∣22=w12+w22+...+wn2
在这个公式中,接近于 0 的权重对模型复杂度几乎没有影响,而离群值权重则可能会产生巨大的影响。
执行 L2 正则化对模型具有以下影响:
(1)使权重值接近于 0(但并非正好为 0)
(2)使权重的平均值接近于 0,且呈正态(钟形曲线或高斯曲线)分布。
增大
λ
\lambda
λ 将增强正则化效果,降低
λ
\lambda
λ 的值往往会得出比较平缓的直方图
L1和L2正则化的区别:
L2 和 L1 具有不同的导数:
L2 的导数为 2 * 权重,L1 的导数为 k(一个常数,其值与权重无关)。
L2 的导数的作用理解为每次移除权重的 x%,通常不能是权重为0;将 L1 的导数的作用理解为每次从权重中减去一个常数,能使权重为0。
下面是权重矩阵的情形。注意L1矩阵是稀疏的权值矩阵,有很多0值,而L2矩阵则有相对较小的权值。
L2 正则化可以使权重变小,但是并不能使它们正好为 0。L1正则化可以使不相关或几乎不相关的权重为0。
参考:
知乎-机器学习中的正则化
正则化方法:L1和L2 regularization、数据集扩增、dropout
机器学习的归一化和正则化