- 欠拟合(under fit):还没有拟合到位,训练集和测试集的准确率都还没有到达最高,学的还不到位。
- 过拟合(over fit):拟合过度,训练集的准确率升高的同时,测试集的准确率反而降低。学的过度了(走火入魔),做过的卷子都能再次答对(死记硬背),考试碰到新的没见过的题就考不好(不会举一反三)。
- 恰到好处(just right):过拟合前,训练集和测试集准确率都达到巅峰。好比,学习并不需要花费很多时间,理解的很好,考试的时候可以很好的把知识举一反三。
正则化就是防止过拟合,增加模型的鲁棒性,鲁棒是 Robust 的音译,也就是强壮的意思。就像计算机软件在面临攻击、网络过载等情况下能够不死机不崩溃,这就是软件的鲁棒性。鲁棒性调优就是让模型拥有更好的鲁棒性,也就是让模型的泛化能力和推广 能力更加的强大。
举例子说明:下面两个式子描述同一条直线那个更好?
$y = 0.3x_1 + 0.4x_2 + 0.5$
$y = 3x_1 + 4x_2 + 5$
第一个更好,因为下面的公式是上面的十倍,当 w 越小公式的容错的能力就越好。因为把测试数据带入公式中如果测试集原来是 [32, 128] 在带入的时候发生了一些偏差,比如说变成 [30, 120] ,第二个模型结果就会比第一个模型结果的偏差大的多。公式中 $y = W^Tx$ ,当 x 有一点错误,这个错误会通过 w 放大。但是 w 不能太小,当 w 太小时(比如都趋近0),模型就没有意义了,无法应用。想要有一定的容错率又要保证正确率就要由正则项来发挥作用了!
所以正则化(鲁棒性调优)的本质就是牺牲模型在训练集上的正确率来提高推广、泛化能力, W 在数值上越小越好,这样能抵抗数值的扰动。同时为了保证模型的正确率 W 又不能极小。 故而人们将原来的损失函数加上一个惩罚项,这里面损失函数就是原来固有的损失函数,比如回归的话通常是 MSE,分类的话通常是 cross entropy 交叉熵,然后在加上一部分惩罚项来使得计算出来的模型 W 相对小一些来带来泛化能力。
常用的惩罚项有L1 正则项或者 L2 正则项:
- $L_1 = ||w||1 = \sum\limits{i = 1}^n|w_i|$ 对应曼哈顿距离
- $L_2 = ||w||2 = \sqrt{\sum\limits{i = 1}^n(w_i)^2}$ 对应欧氏距离
其实 L1 和 L2 正则的公式数学里面的意义就是范数,代表空间中向量到原点的距离:
$L_p = ||X||p = \sqrt[p]{\sum\limits{i = 1}^nx_i^p} , X = (x_1,x_2,……x_n)$
当我们把多元线性回归损失函数加上 L2 正则的时候,就诞生了 Ridge 岭回归。当我们把多元线性回归损失函数加上 L1 正则的时候,就孕育出来了 Lasso 回归。其实 L1 和 L2 正则项惩罚项可以加到任何算法的损失函数上面去提高计算出来模型的泛化能力的。