L2正则化的一些思考

Posted by YiKe on May 15, 2021

L约束与泛化

扰动敏感

记输入为$x$,输出为$y$,模型为$f$,模型参数为$\theta$,记为:

$ y = f_{\theta}(x)\tag{1} $

很多时候,我们希望得到一个”稳健”的模型。何为稳健?一般来说有两种含义,一是对于参数扰动的稳定性,比如模型变成了$f_{\theta + \Delta \theta}(x)$后是否还能达到相近的效果?而且还要考虑模型最终是否能恢复到$f_{\theta}(x)$;二是对于输入扰动的稳定性,比如输入从$x$变成了$x+\Delta x$后,$f_{\theta}(x+\Delta x)$是否能给出相近的预测结果。读者或许已经听过深度学习模型存在”对抗攻击样本”,比如图片只改变一个像素就给出完全不一样的分类结果,这就是模型对输入过于敏感的案例

L约束

所以,大多数时候我们都希望模型对输入扰动是不敏感的,这通常能提高模型的泛化性能。也就是说,我们希望$\Vert x_1-x_2\Vert$很小时

\[\begin{equation}\Vert f_{\theta}(x_1) - f_{\theta}(x_2)\Vert\tag{2}\end{equation}\]

也尽可能地小。当然,”尽可能”究竟是怎样,谁也说不准。于是Lipschitz提出了一个更具体的约束,那就是存在某个常数$C$(它只与参数有关,与输入无关),使得下式恒成立

\[\begin{equation}\Vert f_{\theta}(x_1) - f_\theta(x_2)\Vert\leq C(\theta)\cdot \Vert x_1 - x_2 \Vert\tag{3}\end{equation}\]

也就是说,希望整个模型被一个线性函数”控制”住。这便是L约束

换言之,在这里我们认为满足L约束的模型才是一个好模型,并且对于具体的模型,我们希望估算出$C(\theta)$的表达式,并且希望$C(\theta)$越小越好,越小意味着它对输入扰动越不敏感,泛化性越好

神经网络

在这里我们对具体的神经网络进行分析,以观察神经网络在什么时候会满足L约束

简单起见,我们考虑单层的全连接$f(Wx+b)$,这里的$f$是激活函数,而$W,b$则是参数矩阵/向量,这时(3)变为

\[\begin{equation}\Vert f(Wx_1+b) - f(Wx_2+b)\Vert\leq C(W,b)\cdot \Vert x_1 - x_2 \Vert\tag{4}\end{equation}\]

让$x_1,x_2$充分接近,那么就可以将左边用一阶项近似,得到

\[\begin{equation}\left\Vert \frac{\partial f}{\partial x}W(x_1 - x_2)\right\Vert\leq C(W,b)\cdot \Vert x_1 - x_2 \Vert\tag{5}\end{equation}\]

这里就需要再次回顾一下高等数学中求导公式

\[\frac{f(x+\Delta x) - f(x)}{\Delta x} = f'(x)\]

不知道大家有没有想过分母为什么是$\Delta x$,实际上是由于分子两个$f$的参数相减得到的,那么类比我们就可以得到

\[\frac{f(x + x_1)-f(x+x_2)}{x_1-x_2} = f'(x)\]

最终回到式(5)

\[\frac{f(Wx_1+b)-f(Wx_2+b)}{W(x_1-x_2)}=f'(x)\]

显然,我们希望左边不超过右边,$\frac{\partial f}{\partial x}$这一项(每个元素)的绝对值必须不超过某个常数。这就要求我们使用”导数有上下界”的激活函数,不过我们目前常用的激活函数,比如sigmoid、tanh、relu等,都满足这个条件。假定激活函数的梯度已经有界,尤其是我们常用的relu激活函数来说,这个界还是1。因此$\frac{\partial f}{\partial x}$这一项只带来一个常数,我们暂时忽略它,接下来我们只需要考虑$\Vert W(x_1-x_2)\Vert$

多层的神经网络可以逐步递归分析,从而最终还是单层的神经网络问题,而CNN、RNN等结构本质上还是特殊的全连接,所以照样可以用全连接的结果。因此,对于神经网络来说,问题变成了:如果

\[\begin{equation}\Vert W(x_1 - x_2)\Vert\leq C(W, b)\cdot \Vert x_1 - x_2 \Vert\tag{6}\end{equation}\]

恒成立,那么$C$的表达式是什么?找出$C$的表达式后,我们就可以希望$C$尽可能小,从而给参数带来一个正则化项$C^2$

矩阵范数

定义

其实到这里,我们已经将问题转化为了一个矩阵范数问题(矩阵范数的作用相当于向量的模长),它定义为

\[\begin{equation}\Vert W\Vert_2 = \max_{x\neq 0}\frac{\Vert Wx\Vert}{\Vert x\Vert}\label{eq:m-norm}\tag{7}\end{equation}\]

式(7)中的$x$实际上可以看作是$(x_1-x_2)$,那么有

\[C = \frac{\Vert W(x_1-x_2)\Vert}{\Vert x_1-x_2\Vert} = \Vert W\Vert_2\]

如果$W$是一个方阵,那么该范数又称为”谱范数”,在本文中就算它不是方阵我们也叫它”谱范数”好了。注意$\Vert Wx\Vert$和$\Vert x\Vert$指的都是向量的范数,就是普通的向量模长。有了向量范数的概念后,我们就有

\[\begin{equation}\Vert W(x_1 - x_2)\Vert\leq \Vert W\Vert_2\cdot\Vert x_1 - x_2 \Vert\tag{8}\end{equation}\]

其实也没做啥,就换了个记号而已,将$C$换为$\Vert W\Vert_2$,而$\Vert W\Vert_2$等于多少我们还是没有搞出来

Frobenius范数

其实谱范数$\Vert W\Vert_2$的准确概念和计算方法要用到比较多的线性代数的概念,我们暂时不研究它,而是先研究一个更简单的范数:Frobenius范数,简称F范数。它的定义特别简单

\[\begin{equation}\Vert W\Vert_F = \sqrt{\sum_{i,j}w_{ij}^2}\tag{9}\end{equation}\]

说白了就是直接把矩阵当成一个向量,然后求向量的欧式模长。简单通过柯西不等式,我们就能证明

\[\begin{equation}\Vert Wx\Vert\leq \Vert W\Vert_F\cdot\Vert x \Vert\tag{10}\end{equation}\]

很明显$\Vert W\Vert_F$提供了$\Vert W\Vert_2$的一个上界,也就是说,你可以理解为$\Vert W\Vert_2$是式(6)中最准确的$C$(所有满足式(6)的$C$中最小的那个),但如果你不太关心精准度,你可以直接取$C=\Vert W\Vert_F$,也能使得(6)成立,毕竟$\Vert W\Vert_F$容易计算

L2正则项

前面已经说过,为了使神经网络尽可能好的满足L约束,我们应当希望$C=\Vert W\Vert_2$尽可能小,我们可以把$C^2$作为一个正则项加入到损失函数中。当然,我们还没有算出谱范数$\Vert W\Vert_2$,但我们算出了一个更大的上界$\Vert W\Vert_F$,那就先用着它吧,即loss为

\[\tilde{\mathcal{L}} = \mathcal{L}(y, f_{\theta}(x)) + \lambda\Vert W \Vert_F^2\tag{11}\]

其中第一部分是指模型原来的loss。我们再来回顾一下$\Vert W\Vert_F$的表达式,我们发现加入的正则项是

\[\begin{equation}\lambda\left(\sum_{i,j}w_{ij}^2\right)\tag{12}\end{equation}\]

这不就是L2正则化吗?终于,捣鼓了一番,我们揭示了L2正则化(也称为weight decay)与L约束的联系,表明L2正则化能使得模型更好地满足L约束,从而降低模型对输入扰动的敏感性,增强模型的泛化性能

Reference

面试经验

why

约束的角度 1.假设先验分布,限制了分布;拉格朗日限制范围; 模型复杂度

l1正则化可通过假设权重 的先验分布为拉普拉斯分布,由最大后验概率估计导出; l2正则化可通过假设权重 的先验分布为高斯分布,由最大后验概率估计导出。

2.梯度角度

L1:是 绝对值之和。当w大于0时,梯度始终为正常数,更新的参数w变小;当w小于0时,梯度始终为负常数,更新的参数w变大;所以,L1正则化容易使参数变为0,即特征稀疏化。 L2:是 平方和。当w趋向于0时,参数减小的非常缓慢,因此L2正则化使参数减小到很小的范围,但不为0

本质还是想约束,但是why要约束

泛化性=稳健=模型本身的梯度小

L1、L2的适用场景

由于L1、L2的特点,因此它们也有各自不同的适用场景。

L1:使模型中尽可能多的参数值为0,因此适用于:模型剪枝,模型压缩,特征选择。是一种从改变模型结构的角度(减少模型参数的数量)解决过拟合的方式。

L2:使模型中的所有参数值尽可能小,使得模型尽量不依赖于某几个特殊的特征,而是使每个特征都得到尽量均衡的权重,因此适用于解决普通的过拟合问题,即从参数分布(让分布尽可能的均匀)的角度解决过拟合的问题,这也是常用的解决过拟合的方式。