对模型泛化性能及正则化的理解

梳理下在学习吴恩达视频中正则化时与人讨论后的感悟与想法,大部分是对L1、L2、dropout正则化的理解


泛化性

泛化即是,机器学习模型学习到的概念在它处于学习的过程中时模型没有遇见过的样本时候的表现。

过拟合

当某个模型过度的学习训练数据中的细节和噪音,以至于模型在新的数据上表现很差,我们称过拟合发生了。这意味着训练数据中的噪音或者随机波动也被当做概念被模型学习了。而问题就在于这些概念不适用于新的数据,从而导致模型泛化性能的变差。
过拟合更可能在无参数非线性模型中发生,因为学习目标函数的过程是易变的具有弹性的。

网上流传着一张图,很形象的解释了什么叫过拟合。

对模型泛化性能及正则化的理解
1 

也就是说过拟合是指模型在训练时效果很好,但在预测时效果很差。说白了,就是模型对数据学习过度,把局部特征、噪音等当成一个很明显的特征赋予一个较大的权重。

欠拟合

与过拟合相反,指的是模型在训练和预测时效果都很差。

图例

对模型泛化性能及正则化的理解
2 

二分类为例,图左侧蓝线为欠拟合,右侧蓝线为过拟合,中间具有良好的泛化性能。(截取吴恩达视频中的例子。)

正则化

L1、L2正则化(L1、L2Regularization)

又叫L1范数、L2范数。目的是对cost function加上一个约束(也可叫惩罚项),减小其解的范围。
另外,补充下常用的范数定义:

  • 1-范数:||x||1=i=1N|xi|,即向量元素绝对值之和。
  • 2-范数:||x||2=i=1Nxi2,又叫欧几里得(Euclid)范数,是很常见的向量长度计算公式。即向量元素绝对值平方和再进行开方。
  • q-范数:||x||q=(i=1N|xi|q)1q,向量元素绝对值的q次幂的累加和再1q次幂。

神书RRML中的图例(Page145),不同范数q对应的曲线如下图:

对模型泛化性能及正则化的理解
3 q线

可以看出q越小曲线越贴近坐标轴,反之q越大曲线越远离坐标轴。
加入正则化项后的 cost function 为

12j=1N{yjωTσ(xj)}2+λ2j=1N|ωj|q

其中,q=2即为L2正则化,q=1即为L1正则化。即:

  • L2 Regularization:J=J0+αω2.
  • L1 Regularization:J=J0+α|ω|.

那么,加入正则化的作用是什么呢?我们将cost function 简写为J=J0+L,在原始 cost funtion j0后添加正则化项时,相当于对J0做了一个约束,即在L约束下求出J0取最小值的解。

加上正则化后 cost function 的二维平面可视化如下(截取自PRML,Page146):

对模型泛化性能及正则化的理解

4 L1

  • L1正则化可以产生稀疏权重值矩阵,即让部分权重值等于0,图4:
    • 图中蓝色等值线是j0,红线棕黄色的正方形是L1正则化的图形。在图中,当J0与L1正则化首次相交的地方就是最优解。此时这个顶点的值是(ω1,ω2)=(0,w)。可以直观想象,因为L函数有很多『突出的角』(二维情况下四个,多维情况下更多),J0与这些角接触的机率会远大于与L其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。

对模型泛化性能及正则化的理解
5 L2

  • 如图5,L2正则化让权重值尽可能小,以达到过拟合的效果。理论上来讲L1也有防止过拟合的作用。
    • 二维平面下L2正则化的图形是圆,因此J0与L2相交时使得ω1ω2等于零的概率小了许多,所以这就是L2正则化不具有稀疏性的原因。

那么,为什么权重值变稀疏了、变小了就能防止过拟合呢?
很简单,原因就是加入正则化可以让某些特征的权重变小或者丢弃掉不要了(经过训练后,这些特征就是前面说的局部特征或噪声),以达到防止过拟合的作用。另一种解释是鼓励分类器最终将所有维度上的特征都用起来,而不是强烈依赖其中少数几个维度。

Dropout

其实,说到这里也就能明白 Dropout 为什么能防止过拟合了:以一定的概率丢弃掉一些神经元,达到防止过拟合的目的。

注意⚠️:验证和测试的时候别忘了关掉 Dropout !!!

其他方法

  • 数据增强:以图像数据为例,可以把图像进行翻转、平移、剪裁、扭曲等等。
  • Early Stop:当测试集的准确率下降但验证集的准确度上升时,停止训练。

Reference

[1] PRML by Bishop
[2] 改善深层神经网络:超参数调试、正则化以及优化 by Andrew Ng
[3] 机器学习中正则化项L1和L2的直观理解
[4] 0 范数、1 范数、2 范数有什么区别? - 魏通的回答 - 知乎