前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >L2正则化的一些思考

L2正则化的一些思考

作者头像
mathor
发布2021-05-20 14:55:46
5770
发布2021-05-20 14:55:46
举报
文章被收录于专栏:mathormathor

L约束与泛化

扰动敏感

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

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

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

L约束

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

\begin{equation}\Vert f_w(x_1) - f_w(x_2)\Vert\tag{2}\end{equation}

也尽可能地小。当然,"尽可能"究竟是怎样,谁也说不准。于是Lipschitz提出了一个更具体的约束,那就是存在某个常数

\begin{equation}\Vert f_{\theta}(x_1) - f_\theta(x_2)\Vert\leq C(\theta)\cdot \Vert x_1 - x_2 \Vert\label{eq:l-cond}\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\Vert x_1 - x_2 \Vert\label{sec:l-cond-nn}\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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • L约束与泛化
    • 扰动敏感
      • L约束
        • 神经网络
        • 矩阵范数
          • 定义
            • Frobenius范数
              • L2正则项
                • Reference
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档