如果觉得不想看前两大点,可以直接看第三点公式推导或图像观察,个人觉得特别好理解。
一. 正则化的解释为防止模型过拟合,提高模型的泛化能力,通常会在损失函数的后面添加一个正则化项。
L1正则化
和L2正则化
可以看做是损失函数的惩罚项。所谓惩罚
是指对损失函数中的某些参数做一些约束, 使得参数的自由度变小。
正则化在深度学习中含义是指什么?正则化其实是一种策略
以增大训练误差为代价来减少测试误差的所有策略我们都可以称作为正则化。换句话说就是正则化是为了防止模型过拟合。L2范数就是最常用的正则化方法之一。1
为什么引出拉格朗日乘数法呢?因为就是这么巧,原理真的是特别像!
拉格朗日乘数法1
拉格朗日乘数法2
因为有很多人已经写过一遍了,找了两篇比较易懂的链接
这两个链接任看一个即可,大概想起来他的含义就可直接看第三点。
求出向量中非零元素的个数.
如果用L0规则化一个参数矩阵W,就是希望W中大部分元素是零,实现稀疏。
L0范数的应用:
1)特征选择
实现特征的自动选择,去除无用特征。稀疏化可以去掉这些无用特征,将特征对应的权重置为零。
2)可解释性(interpretability)
例如判断某种病的患病率时,最初有1000个特征,建模后参数经过稀疏化,最终只有5个特征的参数是非零的,那么就可以说影响患病率的主要就是这5个特征。
是指向量中各个元素的绝对值之和,也叫"系数规则算子(Lasso regularization)"。
L1范数也可以实现稀疏,通过将无用特征对应的参数W置为零实现。
L0和L1都可以实现稀疏化,不过一般选用L1而不用L0,原因包括:
L2范数的定义其实是一个数学概念,其定义如下:
这个公式看着相当熟悉吧,用的最多的欧式距离就是一种L2范数,表示向量元素的平方和再开方。
有两种方式:
一种公式推导, 一种是图像观察 2.1 公式推导那就让我们直接推导公式证明一下吧!
个人觉得能推导,就别描述,说不清楚,哈哈哈哈!
设模型函数为 :
W1、W2分别表示两个自变量的权重, 引入L2正则项之前,我们的损失函数为:
引入L2正则项之后:
为什么它会使得我们的权重减小呢!
求偏导试试看,但是我们这里只有两个参数W1、W2,求偏导结果过如下:
可以发现,添加正则项之后,w相比原来在减小,即靠近0
2.2 图像推导2 2.2.1 L1正则化设有如下带L1正则项的损失函数:
其中J0
是原始的损失函数,加号后面的一项是L1正则化项
,α
是正则化系数。注意到L1正则化
是权值的绝对值之和,J
是带有绝对值符号的函数,因此J
是不完全可微的。机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。
当我们在原始损失函数J0
后添加L1正则化项
时,相当于对J0
做了一个约束。令L=α∑∣w∣L=α∑∣w∣L=α∑∣w∣ ,则J=J0+LJ = J0+LJ=J0+L此时我们的任务变成在LLL约束下求出J0J0J0取最小值的解。(来啦来啦,有条件求极值——拉格朗日乘数法,是不是原理一模一样)3
考虑二维的情况,即只有两个权值w1w2w^1w^2w1w2,此时L=∣w1∣+∣w2∣L = |w^1|+|w^2|L=∣w1∣+∣w2∣对于梯度下降法,求解J0J0J0 的过程可以画出等值线,同时L1L1L1正则化的函数LLL也可以在w1w2w^1w^2w1w2 的二维平面上画出来。
如下图:
图中等值线是J0J0J0的等值线,黑色方形是LLL函数的图形。在图中,当J0J0J0等值线与LLL图形首次相交的地方就是最优解。上图中J0J0J0 与LLL在LLL的一个顶点处相交,这个顶点就是最优解。
注意到这个顶点的值是(w1,w2)=(0,w)(w^1, w^2) = (0, w)(w1,w2)=(0,w)。可以直观想象,因为LLL函数有很多棱角
(二维情况下四个,多维情况下更多),J0J0J0 与这些角接触的机率会远大于与LLL其它部位接触的机率,而在这些角上,会有很多权值等于0
这就是为什么L1正则化可以产生稀疏模型,进而可以用于特征选择。
而正则化前面的系数ααα,可以控制LLL图形的大小。ααα越小,LLL的图形越大(上图中的黑色方框);ααα越大,LLL的图形就越小,可以小到黑色方框只超出原点范围一点点,这是最优点的值(w1,w2)=(0,w)(w^1, w^2) = (0, w)(w1,w2)=(0,w)中的www可以取到很小的值。
2.2.2 L2正则化设有如下带L2正则化
的损失函数:
同样可以画出在二维平面上的图形,如下:
二维平面下L2L2L2正则化的函数图形是个圆,与方形相比,被磨去了棱角
。因此J0J0J0与LLL相交时使得w1w1w1或w2w2w2等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。
相比添加正则项之前来说,添加了正则项之后,更新w参数将会使得w更小。
李宏毅4老师在他的课程有提到:函数的平滑性
w很小,意味着该function是一个比较平滑的函数
平滑性:对输入有较大变化,但是输出的变化很小,这该函数是一个平滑的function
而我们的model当然是更加平滑,那么稳定性就越好,那么当输入变化过大,预测的结果那么仍然保持保持高效,这和模型的泛化能力是不是就联系上了呢?
当然,以上仅为个人和前人的一点总结,可能个人说的会存在不好的地方。
大家可以在留言中call我,我会积极探讨,相互进步。
一文搞懂深度学习正则化的L2范数 ↩︎
机器学习中正则化项L1和L2的直观理解 ↩︎
拉格朗日乘数法 ↩︎
李宏毅老师课程b站链接提到平滑性 ↩︎