L1、L2正则化的由来

原文链接:https://www.zhihu.com/question/23536142/answer/90135994
                  https://blog.csdn.net/m0_38045485/article/details/82147817

先抛给大家一个结论:从贝叶斯的角度来看,正则化等价于对模型参数引入 先验分布

一. Linear Regression

我们先看下最原始的Linear Regression:

\begin{align*}  & p(\epsilon^{(i)})  = \frac{1}{\sqrt{2\pi}\delta}exp\left(  -\frac{(\epsilon^{(i)})^2}{2\delta^2} \right)\\  \Rightarrow & p(y^{(i)}|x^{(i)};\theta) = \frac{1}{\sqrt{2\pi}\delta}exp\left( -\frac{(y^{(i)} - w^Tx^{(i)})^2}{2\delta^2}  \right) \end{align*}
 

由最大似然估计(MLE):


\begin{align*} L(w) & = p(\vec{y}|X;w)\\ & = \prod_{i=1}^{m} p(y^{(i)}|x^{(i)};\theta)\\ & = \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi}\delta}exp\left( -\frac{(y^{(i)} - w^Tx^{(i)})^2}{2\delta^2}  \right) \end{align*}
 

取对数:


\begin{align*} l(w) & = \log L(w)\\ & =\log \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi}\delta}exp\left( -\frac{(y^{(i)} - w^Tx^{(i)})}{2\delta^2}  \right)\\ & = \sum_{i=1}^{m} \log \frac{1}{\sqrt{2\pi}\delta}exp\left( -\frac{(y^{(i)} - w^Tx^{(i)})^2}{2\delta^2}  \right)\\ & = m \log \frac{1}{\sqrt{2\pi}\delta} - \frac{1}{\delta^2}\cdot \frac{1}{2} \sum_{i=1}^{m} (y^{(i)} - w^Tx^{(i)})^2 \end{align*}

即:

w_{MLE} = \arg \underset{w}{\min} \sum_{i=1}^{m} (y^{(i)} - w^Tx^{(i)})^2

这就导出了我们原始的 least-squares 损失函数,但这是在我们对参数 w 没有加入任何先验分布的情况下。在数据维度很高的情况下,我们的模型参数很多,模型复杂度高,容易发生过拟合。

比如我们常说的 “small n, large p problem”。(我们一般用 n 表示数据点的个数,用 p 表示变量的个数 ,即数据维度。当 p\gg n 的时候,不做任何其他假设或者限制的话,学习问题基本上是没法进行的。因为如果用上所有变量的话, p 越大,通常会导致模型越复杂,但是反过来 n 又很小,于是就会出现很严重的 overfitting 问题。

这个时候,我们可以对参数 w 引入先验分布,降低模型复杂度。

二. Ridge Regression

我们对参数 w 引入协方差为 \alpha 的零均值高斯先验。

\begin{align*} L(w) & = p(\vec{y}|X;w)p(w)\\ & = \prod_{i=1}^{m} p(y^{(i)}|x^{(i)};\theta)p(w)\\ & = \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi}\delta}exp\left( -\frac{(y^{(i)} - w^Tx^{(i)})^2}{2\delta^2}  \right)\prod_{j=1}^{n}\frac{1}{\sqrt{2\pi\alpha}}exp\left( -\frac{(w^{(j)})^2}{2\alpha}  \right)\\ & = \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi}\delta}exp\left( -\frac{(y^{(i)} - w^Tx^{(i)})^2}{2\delta^2}  \right)\frac{1}{\sqrt{2\pi\alpha}}exp\left( -\frac{w^Tw}{2\alpha}  \right) \end{align*}

取对数:

\begin{align*} l(w) & = \log L(w)\\ & = m \log \frac{1}{\sqrt{2\pi}\delta}+ n \log \frac{1}{\sqrt{2\pi\alpha}} - \frac{1}{\delta^2}\cdot \frac{1}{2} \sum_{i=1}^{m} (y^{(i)} - w^Tx^{(i)})^2 - \frac{1}{\alpha}\cdot \frac{1}{2} w^Tw\\  \Rightarrow & w_{MAP_{Guassian}} = \arg \underset{w}{\min} \left( \frac{1}{\delta^2}\cdot \frac{1}{2} \sum_{i=1}^{m} (y^{(i)} - w^Tx^{(i)})^2 + \frac{1}{\alpha}\cdot \frac{1}{2} w^Tw \right)  \end{align*}

等价于:

J_R(w) = \frac{1}{n}\lVert y- w^TX \rVert_2 + \lambda \lVert w \rVert_2

这不就是 Ridge Regression 吗?


看我们得到的参数,在零附近是不是很密集,老实说 ridge regression 并不具有产生稀疏解的能力,也就是说参数并不会真出现很多零。假设我们的预测结果与两个特征相关,L2正则倾向于综合两者的影响,给影响大的特征赋予高的权重;而L1正则倾向于选择影响较大的参数,而舍弃掉影响较小的那个。实际应用中 L2正则表现往往会优于 L1正则,但 L1正则会大大降低我们的计算量
 

Typically ridge or ℓ2 penalties are **much better** for minimizing prediction error rather than ℓ1 penalties. The reason for this is that when two predictors are highly correlated, ℓ1 regularizer will simply pick one of the two predictors. In contrast, the ℓ2 regularizer will keep both of them and jointly shrink the corresponding coefficients a little bit. Thus, while the ℓ1 penalty can certainly reduce overfitting, you may also experience a loss in predictive power.

那现在我们知道了,对参数引入 高斯先验 等价于L2正则化。

三. LASSO
上面我们对 w 引入了高斯分布,那么拉普拉斯分布(Laplace distribution)呢?

注:LASSO - least absolute shrinkage and selection operator.


我们看下拉普拉斯分布长啥样:

f(x\mid\mu,b) = \frac{1}{2b} \exp \left( -\frac{|x-\mu|}{b} \right)
 

关于拉普拉斯和正态分布的渊源,大家可以参见 正态分布的前世今生。
重复之前的推导过程我们很容易得到:

w_{MAP_{Laplace}} = \arg \underset{w}{\min} \left( \frac{1}{\delta^2}\cdot \frac{1}{2} \sum_{i=1}^{m} (y^{(i)} - w^Tx^{(i)})^2 + \frac{1}{b^2}\cdot \frac{1}{2} \lVert w \rVert_1 \right)

该问题通常被称为 LASSO (least absolute shrinkage and selection operator) 。LASSO 仍然是一个 convex optimization 问题,不具有解析解。它的优良性质是能产生稀疏性,导致 w 中许多项变成零。

再次总结下,对参数引入 拉普拉斯先验 等价于 L1正则化。


四. Elastic Net
可能有同学会想,既然 L1和 L2正则各自都有自己的优势,那我们能不能将他们 combine 起来?

可以,事实上,大牛早就这么玩过了。


因为lasso在解决之前提到的“small n, large p problem”存在一定缺陷。


这个我们就直接给结果了,不推导了哈。(好麻烦的样子。。。逃)

\hat{\beta} = \arg \underset{\beta}{\min} \lVert y - X\beta \rVert_2 + \lambda_2 \lVert \beta \rVert_2 + \lambda_1 \lVert \beta \rVert_1

 


五. 总结

正则化参数等价于对参数引入 先验分布,使得 模型复杂度 变小(缩小解空间),对于噪声以及 outliers 的鲁棒性增强(泛化能力)。整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中 正则化项 对应后验估计中的 先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式
六. L1,L2正则化另一种理解

 七、L1正则化的优化方法

1.坐标轴下降法

回顾: 当加入L1正则项后,由于没法求解出正常的导函数出来(导函数不是连续的),也就没法使用梯度下降法和拟牛顿法求解参数,此时一般采用坐标轴下降法来进行参数的求解。

NMF的损失函数


\color{red}{损失函数是凸函数,求解过程中能够得到极小值。}
\color{red}{坐标轴下降法的目标:}
\color{red}{求解函数取得极值点时,对应的坐标(x,y)是多少。}

坐标轴下降法(Coordinate Descent, CD)是一种迭代法,通过启发式的方法一步步的迭代求解函数的最小值,和梯度下降法(GD)不同的时候,坐标轴下降法是沿着坐标轴的方向去下降,而不是采用梯度的负方向下降。

坐标轴下降法示例

令损失函数 f(x.y) = 5x2-6xy+5y2-0.0259;
1、假设初始点为(-0.5,-1),代入公式f(x.y)后会有一个对应的值。
2、现在固定住 x= -0.5,让y不断变化:(-0.5,-1),(-0.5,1),(-0.5,2),(-0.5,3) ...
3、不断根据y值的变化,检索 f(x.y)的最小值。

几何意义

4、固定x,求解得到y值。(EM思想)

绿色点所在的位置,是随着y变化后能够与目标函数f(x,y)相切的点。这个点是当前情况下的最小值。那么如何求图上的这个绿点的位置?

首先,我们固定了x=-0.5,即在损失函数 f(x.y) = 5x2-6xy+5y2-0.0259;中, 5x2、-6x都成了常数C;
-0.0259和5x2都是常数,合并到了一起变成C;
即 f(y) = C+3y+5y2;

然后,分析 f(y)处于极小值点时,y的值是多少?
y=-2a/b时获得。即 y=-2*5/3 = -10/3 ≈ -0.3;

PS: 这些是初中的知识,很多人希望我对这方面知识也进行补充,但个人时间有限这部分知识也不难理解,各位可以自行学习补充。我所讲的内容适合学过高等数学、线性代数、概率论,并具有初步编程知识的同行,在学术方面有疑问的不要立刻开喷,有针对性得提出问题,我相信都是可以帮助大家一一解惑的。

5、固定y,求解得到x值。(EM思想)
固定y = -0.3,求解 f(x)取得最小值时,x的取值。
即 f(x) = C+1.8x+5x2
当 f(x)取极小值时,x=-0.18;

重复4~5步,会逐步以下图中的几何方式寻找到损失函数的极小值点:

重复4~5步时的几何意义

将EM算法的思想运用于坐标轴下降法,最终结果会收敛在绿色点的这个位置,这个点是损失函数的全局极小值点。

主要坐标轴下降法面对的是一个凸函数,必然能找到一个全局的最小值点。


\color{red}{上面是我用自己的理解写成的一个关于坐标轴下降法的几何意义图解。}
\color{red}{下面来看看官方的定义:}

坐标轴下降法利用EM算法的思想,在参数更新过程中,每次均先固定m-1个参数值,求解剩下的一个参数的局部最优解;然后进行迭代式的更新操作。

多维特征,求损失函数最小值

坐标轴下降法的核心思想是多变量函数F(X)可以通过每次沿着一个方向优化来获取最小值;其数学依据是:对于一个可微凸函数f(θ),其中θ为n*1的向量。

如果对于一个解θ=(θ1,θ2,...,θn),使得f(θ)在每一个坐标轴θi(i=1,2,..,n)上都能达到最小值,则θ=(θ1,θ2,...,θn)就是的f(θ)全局的最小值点。


\color{red}{将数学思想落实到算法公式:}

在坐标轴下降法中,优化方向从算法的一开始就固定了,即沿着坐标的方向进行变化。在算法中,循环最小化各个坐标方向的目标函数。 即:如果xk给定,那么xk+1的第i维度为:

因此,从一个初始的x0求得函数F(x)的局部最优解,可以迭代获取x0、x1、x2... 的序列,从而可以得到:


七、坐标轴下降法算法过程

  1. 给θ向量随机选取一个初值,记做θ0;
  2. 对于第k轮的迭代,从θ1k开始计算,θnk到为止,计算公式如下:

检查θk和θk-1向量在各个维度上的变化情况,如果所有维度的变化情况都比较小的话,那么认为结束迭代,否则继续k+1轮的迭代。

PS:在求解每个参数局部最优解的时候可以求导的方式来求解。


坐标轴下降法和梯度下降法的区别

坐标轴下降法在每次迭代中,计算当前点处沿一个坐标方向进行一维搜索 ,固定其它维度的坐标方向,找到一个函数的局部极小值。而梯度下降总是沿着梯度的负方向求函数的局部最小值;

坐标轴下降优化方法是一种非梯度优化算法。在整个过程中依次循环使用不同的坐标方向进行迭代,一个周期的一维搜索迭代过程相当于一个梯度下降的迭代;

梯度下降是利用目标函数的导数来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而坐标轴下降法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值;

两者都是迭代算法,且每一轮迭代都需要O(mn)的计算量(m为样本数,n为维度数)


链接:https://www.jianshu.com/p/6156764203de
 

2.最小角回归法

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值