L1和L2正则化(regularization)

L1和L2正则化

  理论上来说,只要参数足够多,而且参数之间的关系足够复杂,模型就可以拟合任意的函数。如果连噪声也都拟合了,这就是过拟合。事实上,我们在学习的时候,需要学习的是数据的普遍特征,但是除了普遍特征之外还存在一些少量数据独有的特征,这个特征,我们倾向称之为噪声。
  过拟合的具体表现就不细谈了,可以看到根本的原因就是建立的模型过于复杂了,我们想要让这个模型简单点,拟合的函数简单点,这个时候就需要给拟合的函数加一些约束了。机器学习模型里也是有好多种约束,来使得模型的参数不能那么复杂。
  直观的想,既然模型的参数构建出的函数过于复杂,那就把参数减掉一些,让一部分参数不起作用。这个思想就能产生很多防止过拟合的方法。但是回到数学的角度上,模型的学习过程,是最小化损失函数的过程。我们可以给模型加一个约束,这个约束通过损失来呈现,一旦学出来的模型过于复杂,就让模型产生较大的损失。我们可以通过参数的范数来解决这个问题。
  回想大名鼎鼎的0范数,就是矩阵中(向量)中的非零元素的个数。如果非零元素较少,范数就大,可以直接把0范数加权组合进损失函数,就可以很自然的使得参数零的个数增多。因为为了减少损失,模型或多或少的想要去减少0范数,要减少,参数中就得更多的元素变成0。这样得到的模型就非常稀疏了。
  但是零范数的函数是个极限,难以近似。优化损失函数一般都是梯度下降法,0范数,不可导啊,既然不可导,没有导数,怎么下降。
  这个时候就需要使用一范数来近似了,就得到了L1正则化, ∣ ∣ w ∣ ∣ 1 = ∑ i ∣ w i ∣ ||w||_1=\sum_i|w_i| w1=iwi,对所有的参数的绝对值求和。直观来想,如果参数的绝对值之和比较大,也说明参数很复杂,如果让参数的1范数变得足够小,那么过拟合就没有那么严重了。
  这样模型的总损失就变成了 J ( w , b ) = J 0 ( W , b ) + λ ∣ ∣ w ∣ ∣ 1 J(w,b)=J_0(W,b)+\lambda||w||_1 J(w,b)=J0(W,b)+λw1,这样在让一范数变小的时候,自然就会有许多的参数被下降到0了。也就起到了正则化的作用。同时有足够多的参数值变成0,这就是一个稀疏的模型。所以L1正则化具有模型稀疏的特点。
  但是一范数使用绝对值,绝对值函数我们都知道在 w i = 0 w_i=0 wi=0点是一个不可导点,如果众多参数中有一个为0,这个时候就没法求梯度了,所以会给梯度下降带来阻力,需要使用其他技巧来优化,这样L1正则化的一个弊端就出来了,那就是优化的慢。
  范数之间有等价性,1范数可以正则化,2范数可以正则化算是一个比较自然的事情。(L2正则化并不是矩阵的2范数,而是矩阵的F范数),L2范数使用平方项的话,函数就是处处可导的,这样对于2范数做梯度下降就比较容易一些。所以相对于L1正则化,L2正则化收敛的更加快一点
  L2对参数约束,也能够使得部分参数变得小一点,起的影响就小,使得模型不是非常复杂,但是二范数的约束,可以让参数变得更小,可能参数小到一定程度,产生的影响已经被忽略了,这个参数就不是2范数的主要影响因素了,这个时候该参数就不会继续减小。所以L2 正则化能够得到比较小的参数,小到可以被忽略,但是无法小到0,也就不具有稀疏性
  使用L2正则化的时候,求导之后做梯度下降,参数的变化可以看成每次在原来的基础上乘一个小于1的因子,这样可以理解为L2正则化让参数衰减,所以L2正则化又叫权重衰减(Weight Decay)。
  网上有人解释说,L1正则化相当于一个菱形(参数的范数)和椭圆(损失函数的等高线)求最先交上的点,然后比较大概率的落到菱形的角上,使用L2正则化相当于圆(参数的参数)和椭圆求最先交上的点,事实上,这个观点是错误的。但是作为帮助理解记忆还是可以的。为什么L1范数比L2范数更容易得到稀疏性,这是由梯度下降算法和范数的特点决定的,具体原因这里不展开。
  了解了L1和L2正则化,这里做一个拓展。在机器学习中,线性回归模型,如果使用L1正则化,则得到的模型叫Lasso模型,如果使用L2正则化,则得到的模型叫岭(Ridge)回归。
  可能还有一个问题没解决,为什么说L1正则的先验分布是Laplace分布,L2正则先验是Gaussian分布,这个问题就得回到贝叶斯统计上。我们计算一个模型,用一个模型去对数据做判别,相当于求数据和参数的条件下,数据的标签y的最大后验分布。 p ( y ∣ x , w ) ∝ p ( w ∣ y , x ) / p ( w ) p(y|x,w)\propto p(w|y,x)/p(w) p(yx,w)p(wy,x)/p(w),对这个公式取对数得到 l o g p ( y ∣ x , w ) ∝ l o g p ( w ∣ y , x ) − l o g p ( w ) logp(y|x,w)\propto logp(w|y,x)-logp(w) logp(yx,w)logp(wy,x)logp(w),把正则化参数当成先验概率, L 1 = − l o g p ( w ) = ∣ w ∣ → p ( w ) = e − ∣ w ∣ L_1=-logp(w)=|w|\rightarrow p(w)=e^{-|w|} L1=logp(w)=wp(w)=ew,得到拉普拉斯分布的核。同理 L 2 = − l o g p ( w ) = w 2 → p ( w ) = e − w 2 L_2=-logp(w)=w^2\rightarrow p(w)=e^{-w^2} L2=logp(w)=w2p(w)=ew2,得到高斯分布的核。
  以上是我的个人理解,如果有不当的地方,请指出。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页