L1正则化及其推导
\(L1\)正则化及其推导
在机器学习的Loss函数中,通常会添加一些正则化(正则化与一些贝叶斯先验本质上是一致的,比如\(L2\)正则化与高斯先验是一致的、\(L1\)正则化与拉普拉斯先验是一致的等等,在这里就不展开讨论)来降低模型的结构风险,这样可以使降低模型复杂度、防止参数过大等。大部分的课本和博客都是直接给出了\(L1\)正则化的解释解或者几何说明来得到\(L1\)正则化会使参数稀疏化,本来会给出详细的推导。
\(L1\)正则化
大部分的正则化方法是在经验风险或者经验损失\(L_{emp}\)(emprirical loss)上加上一个结构化风险,我们的结构化风险用参数范数惩罚\(\Omega(\theta)\),用来限制模型的学习能力、通过防止过拟合来提高泛化能力。所以总的损失函数(也叫目标函数)为:
\[
J(\theta; X, y) = L_{emp}(\theta; X, y) + \alpha\Omega(\theta) \tag{1.1}
\]
其中\(X\)是输入数据,\(y\)是标签,\(\theta\)是参数,\(\alpha \in [0,+\infty]\)是用来调整参数范数惩罚与经验损失的相对贡献的超参数,当\(\alpha = 0\)时表示没有正则化,\(\alpha\)越大对应该的正则化惩罚就越大。对于\(L1\)正则化,我们有:
\[
\Omega(\theta) = \|w\|_1 \tag{1.2}
\]
其中\(w\)是模型的参数。
几何解释
图1 上面中的蓝色轮廓线是没有正则化损失函数的等高线,中心的蓝色点为最优解,左图、右图分别为$L2$、$L1$正则化给出的限制。
可以看到在正则化的限制之下,\(L2\)正则化给出的最优解\(w^*\)是使解更加靠近原点,也就是说\(L2\)正则化能降低参数范数的总和。\(L1\)正则化给出的最优解\(w^*\)是使解更加靠近某些轴,而其它的轴则为0,所以\(L1\)正则化能使得到的参数稀疏化。
解析解的推导
有没有偏置的条件下,\(\theta\)就是\(w\),结合式\((1.1)\)与\((1.2)\),我们可以得到\(L1\)正则化的目标函数:
\[
J(w; X, y) = L_{emp}(w; X, y) + \alpha\|w\|_1 \tag{3.1}
\]
我们的目的是求得使目标函数取最小值的\(w^*\),上式对\(w\)求导可得:
\[
\nabla_w J(w; X, y) = \nabla_w L_{emp}(w; X, y) + \alpha \cdot sign(w) \tag{3.2}
\]
其中若\(w>0\),则\(sign(w)=1\);若\(w<0\),则\(sign(w) = -1\);若\(w=0\),则\(sign(w)=0\)。当\(\alpha = 0\),假设我们得到最优的目标解是\(w^*\),用秦勤公式在\(w^*\)处展开可以得到(要注意的\(\nabla J(w^*)=0\)):
\[
J(w; X, y) = J(w^*; X, y) + \frac{1}{2}(w - w^*)H(w-w^*) \tag{3.3}
\]
其中\(H\)是关于\(w\)的Hessian矩阵,为了得到更直观的解,我们简化\(H\),假设\(H\)这对角矩阵,则有:
\[
H = diag([H_{1,1},H_{2,2}...H_{n,n}]) \tag{3.4}
\]
将上式代入到式\((3.1)\)中可以得到,我们简化后的目标函数可以写成这样:
\[
J(w;X,y)=J(w^*;X,y)+\sum_i\left[\frac{1}{2}H_{i,i}(w_i-w_i^*)^2 + \alpha_i|w_i| \right] \tag{3.5}
\]
从上式可以看出,\(w\)各个方向的导数是不相关的,所以可以分别独立求导并使之为0,可得:
\[
H_{i,i}(w_i-w_i^*)+\alpha \cdot sign(w_i)=0 \tag{3.6}
\]
我们先直接给出上式的解,再来看推导过程:
\[
w_i = sign(w^*) \max\left\{ |w_i^*| - \frac{\alpha}{H_{i,i}},0 \right\} \tag{3.7}
\]
从式\((3.5)\)与式\((3.6)\)可以得到两点:
- 1.可以看到式\((3.5)\)中的二次函数是关于\(w^*\)对称的,所以若要使式\((3.5)\)最小,那么必有:\(|w_i|<|w^*|\),因为在二次函数值不变的程序下,这样可以使得\(\alpha|w_i|\)更小。
- 2.\(sign(w_i)=sign(w_i^*)\)或\(w_1=0\),因为在\(\alpha|w_i|\)不变的情况下,\(sign(w_i)=sign(w_i^*)\)或\(w_i=0\)可以使式\((3.5)\)更小。
由式\((3.6)\)与上述的第2点:\(sign(w_i)=sign(w_i^*)\)可以得到:
\[
\begin{split}
0 &= H_{i,i}(w_i-w_i^*)+\alpha \cdot sign(w_i^*) \cr
w_i &= w_i^* - \frac{\alpha}{H_{i,i}}sign(w_i^*) \cr
w_i &= sign(w_i^*)|w_i^*| - \frac{\alpha}{H_{i,i}}sign(w_i^*)\cr
&=sign(w_i^*)(|w_i^*| - \frac{\alpha}{H_{i,i}}) \cr
\end{split} \tag{3.8}
\]
我们再来看一下第2点:\(sign(w_i)=sign(w_i^*)\)或\(w_1=0\),若\(|w_i^*| < \frac{\alpha}{H_{i,i}}\),那么有\(sign(w_i) \neq sign(w_i^*)\),所以这时有\(w_1=0\),由于可以直接得到解式\((3.7)\)。
从这个解可以得到两个可能的结果:
- 1.若\(|w_i^*| \leq \frac{\alpha}{H_{i,i}}\),正则化后目标中的\(w_i\)的最优解是\(w_i=0\)。因为这个方向上\(L_{emp}(w; X, y)\)的影响被正则化的抵消了。
- 2.若\(|w_i^*| > \frac{\alpha}{H_{i,i}}\),正则化不会推最优解推向0,而是在这个方面上向原点移动了\(\frac{\alpha}{H_{i,i}}\)的距离。
L1正则化及其推导的更多相关文章
- Laplace(拉普拉斯)先验与L1正则化
Laplace(拉普拉斯)先验与L1正则化 在之前的一篇博客中L1正则化及其推导推导证明了L1正则化是如何使参数稀疏化人,并且提到过L1正则化如果从贝叶斯的观点看来是Laplace先验,事实上如果从贝 ...
- L2与L1正则化理解
https://www.zhihu.com/question/37096933/answer/70507353 https://blog.csdn.net/red_stone1/article/det ...
- L1正则化与L2正则化的理解
1. 为什么要使用正则化 我们先回顾一下房价预测的例子.以下是使用多项式回归来拟合房价预测的数据: 可以看出,左图拟合较为合适,而右图过拟合.如果想要解决右图中的过拟合问题,需要能够使得 $ ...
- 【深度学习】L1正则化和L2正则化
在机器学习中,我们非常关心模型的预测能力,即模型在新数据上的表现,而不希望过拟合现象的的发生,我们通常使用正则化(regularization)技术来防止过拟合情况.正则化是机器学习中通过显式的控制模 ...
- L1正则化比L2正则化更易获得稀疏解的原因
我们知道L1正则化和L2正则化都可以用于降低过拟合的风险,但是L1正则化还会带来一个额外的好处:它比L2正则化更容易获得稀疏解,也就是说它求得的w权重向量具有更少的非零分量. 为了理解这一点我们看一个 ...
- L1正则化
正则化项本质上是一种先验信息,整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式, ...
- L1正则化和L2正则化
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择 L2正则化可以防止模型过拟合(overfitting):一定程度上,L1也可以防止过拟合 一.L1正则化 1.L1正则化 需注意, ...
- 正则化--L1正则化(稀疏性正则化)
稀疏矢量通常包含许多维度.创建特征组合会导致包含更多维度.由于使用此类高维度特征矢量,因此模型可能会非常庞大,并且需要大量的 RAM. 在高维度稀疏矢量中,最好尽可能使权重正好降至 0.正好为 0 的 ...
- LASSO回归与L1正则化 西瓜书
LASSO回归与L1正则化 西瓜书 2018年04月23日 19:29:57 BIT_666 阅读数 2968更多 分类专栏: 机器学习 机器学习数学原理 西瓜书 版权声明:本文为博主原创文章,遵 ...
随机推荐
- 【Win10】正常上网但ping不通外网
使用360免费wifi连接了热点后,发现无法ping外网,仅能ping网关,浏览器正常访问 后来,换了wifi共享大师,也是不行.同样ping不到外网,浏览器正常访问 但是 wifi 共享大师有个功能 ...
- JS中的运算符 以及变量和输入输出
1.算术运算(单目运算符) + 加 .- 减.* 乘. / 除. % 取余.++ 自增.-- 自减. >>> +:有两种作用,链接字符串/加法运算,当+两边全为数字时,进行加法运算, ...
- 8.20.1 图形化:弹窗JOptionPane
最近在做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法. 很方便的,于是就简单的整理了一下. 1.1 showMessageDialog 显示一个带有OK 按钮的模 ...
- Java中的标识符和关键字
1.标识符 含义:标识符用于给程序中的类.变量.方法命名的符号. 组成:数字(0-9).字母(a-z)(A-Z).下划线(_).美元符号$. 命名规则:1.数字不能够作为命名符号的开头 2.不能够使用 ...
- Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...
- P问题、NP问题、NPC问题
看师兄们的论文经常说一句这是个NP难问题,所以采用另外一种方法来代替(比如凸松弛,把l0范数的问题松弛为l1范数的问题来求解).然后搜索了相关知识,也还是没看太懂,把一些理论知识先贴上来,希望以后再接 ...
- Day4 - Linux分区规划与xshell使用排错
1.1 没有重要数据 /boot 200M 存放系统的引导信息 内核 swap 交换分区 防止内存用光了 临时的一个内存 如果你的内存小于8G swap是内存的1.5倍 如果你的 ...
- JavaScript中事件
JS中的事件 一.事件分类: 鼠标事件:鼠标单击.鼠标双击.鼠标指上等... HTML事件:文档加载.焦点.表单提交等... 键盘事件:键盘按下(keydown).键盘按下并松开瞬间(keypress ...
- Prism for Xamarin.Forms
一.使用环境 OS:Win 10 16273 VS:VS2017- 15.3.4 Xamarin:4.6.3.4,nuget:2.4 Android Emulator:Visual Studio fo ...
- YYHS-挑战nbc
题目描述 Abwad是一名有志向的优秀OI少年.遗憾的是,由于高能宇宙射线的影响,他不幸在NOI中滚粗.不过,Abwad才高一,还有许许多多的机会.在长时间的刻苦学习之后,他实力大增,并企图撼动OI界 ...