过拟合:L2 正则化#
在上一节中我们提到了「正则化」这个概念,即给复杂模型施加惩罚,逼着它在拟合数据的同时尽量保持简单。可惩罚的力度用什么来衡量、又要惩罚到什么程度呢,就是这一节要回答的问题。
$L_2$ 正则化($L_2$ regularization)是最常用的正则化度量,它把所有权重的平方加在一起:
$$L_2\text{ regularization } = {w_1^2 + w_2^2 + ... + w_n^2}$$公式里每一项都是平方,这也正是大权重会被重罚的原因。
下面是一个拥有六个权重的模型,$L_2$ 正则化的计算过程:
| 权重 | 取值 | 平方值 |
|---|---|---|
| $w_1$ | 0.2 | 0.04 |
| $w_2$ | -0.5 | 0.25 |
| $w_3$ | 5.0 | 25.0 |
| $w_4$ | -1.2 | 1.44 |
| $w_5$ | 0.3 | 0.09 |
| $w_6$ | -0.1 | 0.01 |
| 26.83 = 合计 |
这张表里有两件事值得留意。
第一,接近零的权重对 $L_2$ 正则化的结果影响很小,但大权重的威力却相当惊人。就上面这次计算而言:
单是 $w_3$ 这一个权重,就贡献了大约 93% 的总复杂度。
另外五个权重加起来,只贡献了大约 7%。
第二,$L_2$ 正则化的作用方向,是把权重往零推,但永远不会真的推到零。这一点很关键,下面的练习就会考到它。
练习:检验你的理解#
第1题: 如果你在训练模型时使用了 $L_2$ 正则化,这个模型的整体复杂度通常会怎么变?
A. 大概率下降
B. 大概率保持不变
C. 大概率上升
第2题: 如果你在训练模型时使用了 $L_2$ 正则化,是否会有特征被从模型中移除?
A. 是
B. 否
正则化率(lambda)#
前面提过,训练的过程其实是在最小化损失与复杂度的某种组合:
$$\text{minimize(loss + complexity)}$$模型开发者会用一个称为 正则化率(regularization rate),也叫作惩罚项系数, 的标量,乘在复杂度上,用它来调节复杂度对整个训练过程的影响。这个标量通常用希腊字母 $\lambda$ 表示。
于是,目标就变成了:
$$ \text{minimize}(\text{loss} + \lambda\cdot \text{ complexity}) $$正则化率高的时候:
正则化的作用被加强,过拟合的可能性随之降低。
权重的直方图往往呈现这样的特征:
正态分布。
平均权重为 0。
正则化率低的时候:
正则化的作用被削弱,过拟合的可能性随之上升。
权重的直方图往往呈现平坦的分布。
举个例子,高正则化率下的权重直方图,大概就是图 18 这样。
相反,低正则化率下的直方图会明显更平坦,如图 19 所示。
提示: 把正则化率设为零,就等于彻底取消了正则化。这时训练只顾着一味最小化损失,过拟合的风险也就高到顶了。
如何选择正则化率#
理想的正则化率,能造出一个对全新的、没见过的数据也泛化良好的模型。遗憾的是,这个理想值取决于具体的数据,因此你必须自己调一调。
早停:不基于复杂度的另一种正则化#
早停(early stopping) 是另一种正则化方法,它不需要计算复杂度。早停的意思很简单:在模型完全收敛之前就结束训练。比如,当验证集的损失曲线开始上升(斜率转为正)时,你就该收手了。
虽然早停通常会让训练损失变高,但它有可能让测试损失下降。
早停是一种快捷、但很少是最优的正规化方式。靠它训出来的模型,几乎不可能比用理想的正则化率充分训练出来的模型更好。
在学习率与正则化率之间找平衡#
学习率(learning rate) 与正则化率,对权重的作用方向恰好相反。学习率高了,权重会被推离零;正则化率高了,权重会被推向零。
如果相对于学习率而言,正则化率过高,那么权重太弱,模型做出的预测就会很差。反过来,如果相对于正则化率而言学习率过高,那么权重太强,模型就会过拟合。
你的目标是找到学习率与正则化率之间的平衡点,这并不容易。最糟糕的是,就算你终于摸到了那个平衡点,之后可能还是得改学习率;而学习率一改,正则化率又得从头再找一遍。
MLWM: 更多关于正则化原理的讲解,可以参见 $L_1$ 与 $L_2$ 正则化背后的权重衰减机制,参见文章 「4.4 L1与L2正则化原理:权重衰减与过拟合抑制」。
关键术语:
- 早停
- $L_1$ 正则化
- $L_2$ 正则化
- 学习率
- 正则化
- 正则化率