[Python嗯~机器学习]—L1正则化和L2正则化

正则化解决过拟合问题正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。最基本的正则化方法是在原目标(代价)函数中添加惩罚项,对复杂度高的模型进行“惩罚”。数学表达式:式中  、 为训练样本和相应标签,  为权重系数向量;  为目标函数,  即为惩罚项,可理解为模型“规模”的某种度量;参数 控制控制正则化强弱。不同的  函数对权重…

大家好,又见面了,我是你们的朋友全栈君。

正则化解决过拟合问题

正则化(Regularization)是机器学习中一种常用的技术,其主要目的是控制模型复杂度,减小过拟合。
最基本的正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”。
数学表达式:
\tilde{J}\left( w;X,y \right) =J \left( w;X,y \right)+\alpha\Omega\left( w \right)
式中 X 、 y为训练样本和相应标签, w 为权重系数向量; J\left( \right) 为目标函数, \Omega\left( w \right) 即为惩罚项,可
理解为模型“规模”的某种度量;参数\alpha 控制控制正则化强弱。不同的 \Omega 函数对权重 w 的最优解有不同的
偏好,因而会产生不同的正则化效果。最常用的 \Omega 函数有两种,即 l_{1}范数和 l_{2} 范数,相应称之为 l_{1} 正则
化和 l_{2} 正则化。

l_{1}:\Omega\left( w \right)=\left| \left| w \right|\right|_{1}=\sum_{i}{\left| w_{i} \right|}
l_{2}:\Omega\left( w \right)=\left| \left| w \right|\right|_{2}^{2}=\sum_{i}{w_{i}^{2}}

一、 l_{1} 、 l_{2} 正则化来源推导

可从带约束条件的优化求解和最大后验概率两种思路来推导 l_{1} 、 l_{2} 正则化,下面将予以详细分析。

1、正则化理解之基于约束条件的最优化

对于模型权重系数 w 求解是通过最小化目标函数实现的,即求解:

\min_{w }{J\left( w; X, y \right)}

我们知道,模型的复杂度可用 VC维 来衡量。通常情况下,模型 VC维 与系数 w 的个数成线性关系:
即 w 数量越多,VC维越大,模型越复杂。因此,为了限制模型的复杂度,很自然的思路是减少系数 w 
的个数,即让 w 向量中一些元素为 0 或者说限制 w 中非零元素的个数。为此,我们可在原优化问题中加
入一个约束条件:

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{0}\leq C \end{gather}

\left|\left| \cdot \right|\right|_{0} 范数表示向量中非零元素的个数。但由于该问题是一个NP问题,不易求解,为此我们需要稍微“放松”
一下约束条件。为了达到近似效果,我们不严格要求某些权重 w 为0,而是要求权重 w 应接近于0,即尽量小。
从而可用 l_{1} 、 l_{2} 范数来近似 l_{0} 范数,即:

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{1}\leq C \end{gather} 或 \begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{2}\leq C \end{gather}

使用 l_{2} 范数时,为方便后续处理,可对 \left| \left| w \right|\right|_{2} 进行平方,此时只需调整 C 的取值即可。利用拉格朗日算子法,
我们可将上述带约束条件的最优化问题转换为不带约束项的优化问题,构造拉格朗日函数:

L\left( w,\alpha \right)=J \left( w;X,y \right)+\alpha\left(\left| \left| w \right|\right|_{1}-C\right) 或

L\left( w,\alpha \right)=J \left( w;X,y \right)+\alpha\left( \left| \left| w \right|\right|_{2}^{2} - C \right)

其中 \alpha 的最优解为 \alpha^{\ast} ,则对拉格朗日函数求最小化等价于:

\min_{w }J \left( w;X,y \right)+\alpha^{\ast} \left| \left| w \right|\right|_{1} 或

\min_{w }J \left( w;X,y \right)+\alpha^{\ast} \left| \left| w \right|\right|_{2}^{2}

可以看出,上式与 \min_{w }\tilde{J}\left( w;X,y \right) 等价。

故此,我们得到对 l_{1} 、 l_{2} 正则化的第一种理解:

  • l_{1} 正则化等价于在原优化目标函数中增加约束条件 \left| \left| w \right|\right|_{1}\leq C
  • l_{2} 正则化等价于在原优化目标函数中增加约束条件 \left| \left| w \right|\right|_{2}^{2}\leq C

2、正则化理解之最大后验概率估计

在最大似然估计中,是假设权重 w 是未知的参数,从而求得对数似然函数:

l\left( w \right) =\text{log}\left[ P\left( y|X;w \right) \right]=\text{log}\left[ \prod_{i}P\left( y^{i}|x^{i};w \right) \right]

通过假设 y^{i} 的不同概率分布,即可得到不同的模型。例如若假设 y^{i}\sim N\left( w^{T}x^{i}, \sigma^{2} \right) 的高斯分布,则有:

l\left( w \right) =\text{log}\left[ \prod_{i}\frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{\left( y^{i}-w^{T}x^{i} \right)^{2}}{2\sigma^{2}}} \right]=-\frac{1}{2\sigma^{2}}\sum_{i}{\left( y^{i}-w^{T}x^{i} \right)^{2}}+C

式中 C 为常数项,由于常数项和系数项不影响 \text{max}\space l\left( w \right) 的解,因而可令 J \left( w;X,y \right)=- l\left( w \right) 即可得到
线性回归的代价函数。

在最大后验概率估计中,则将权重 w 看作随机变量,也具有某种分布,从而有:

P\left( w|X,y \right) =\frac{P\left( w,X,y \right)}{P\left( X,y \right)} =\frac{P\left( X,y|w \right)P\left( w \right)}{P\left( X,y \right)} \propto {P\left( y|X,w \right)P\left( w \right)}

同样取对数有:

\text{MAP}=\text{log}{P\left( y|X,w \right)P\left( w \right)}=\text{log}{P\left( y|X,w \right)}+\text{log}P\left( w \right)

可以看出后验概率函数为在似然函数的基础上增加了一项 \text{log}P\left( w \right) 。 P\left( w \right) 的意义是对权重系数 w 的概率
分布的先验假设,在收集到训练样本 \left\{ X,y \right\} 后,则可根据 w 在 \left\{ X,y \right\} 下的后验概率对 w 进行修正,从而
做出对 w 更好地估计。

若假设 w_{j} 的先验分布为0均值的高斯分布,即 w_{j}\sim N\left( 0, \sigma^{2} \right) ,则有:

\text{log}P\left( w \right)=\text{log}\prod_{j}P\left( w_{j} \right)=\text{log}\prod_{j}\left[ \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{\left( w_{j} \right)^{2}}{2\sigma^{2}}} \right]=-\frac{1}{2\sigma^{2}}\sum_{j}{w_{j}^{2}}+C'

可以看到,在高斯分布下 \text{log}P\left( w \right) 的效果等价于在代价函数中增加 l_{2} 正则项。

若假设 w_{j} 服从均值为0、参数为 a 的拉普拉斯分布,即:

P\left( w_{j} \right)=\frac{1}{\sqrt{2a}}e^{\frac{-\left| w_{j}\right|}{a}}

则有:

\text{log}P\left( w \right)=\text{log} \prod_{j}\frac{1}{\sqrt{2a}}e^{\frac{-\left| w_{j}\right|}{a}}=-\frac{1}{a}\sum_{j}{\left| w_{j}\right|}+C'

可以看到,在拉普拉斯分布下 \text{log}P\left( w \right) 的效果等价于在代价函数中增加 l_{1} 正则项。

故此,我们得到对于 l_{1} 、 l_{2} 正则化的第二种理解:

  • l_{1} 正则化可通过假设权重 w 的先验分布为拉普拉斯分布,由最大后验概率估计导出;
  • l_{2} 正则化可通过假设权重 w 的先验分布为高斯分布,由最大后验概率估计导出。

二、 l_{1} 、 l_{2} 正则化效果分析

本文将从直观分析和理论推导两个角度来说明 l_{1} 、 l_{2} 正则化的效果。

1、直观理解

考虑带约束条件的优化解释,对 l_{2} 正则化为:

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{2}\leq C \end{gather}

该问题的求解示意图如下所示:

[Python嗯~机器学习]---L1正则化和L2正则化

图中椭圆为原目标函数 J\left( w \right) 的一条等高线,圆为半径 \sqrt{C} 的l_{2} 范数球。由于约束条件的限制, w 必须
位于 l_{2} 范数球内。考虑边界上的一点 w ,图中蓝色箭头为 J\left( w \right) 在该处的梯度方向 \nabla J\left( w \right) ,红色箭头
为 l_{2} 范数球在该处的法线方向。由于 w 不能离开边界(否则违反约束条件),因而在使用梯度下降法更新 
w 时,只能朝 \nabla J\left( w \right) 在 范数球上 w 处的切线方向更新,即图中绿色箭头的方向。如此 w 将沿着边界移
动,当 \nabla J\left( w \right) 与范数球上 w 处的法线平行时,此时 \nabla J\left( w \right) 在切线方向的分量为0, w 将无法继续移动,
从而达到最优解 w^{*}(图中红色点所示)。

对于 l_{1} 正则化:

\begin{gather} \min_{w }{J\left( w; X, y \right)}\\ s.t. \left| \left| w \right|\right|_{1}\leq C \end{gather}

同理,其求解示意图如下所示:

[Python嗯~机器学习]---L1正则化和L2正则化

其主要差别在于 l_{1} 、 l_{2} 范数球的形状差异。由于此时每条边界上 w 的切线和法线方向保持不变,在图中 
w 将一直朝着 \nabla J\left( w \right) 在切线方向的分量沿着边界向左上移动。当 w 跨过顶点到达 w' 时, \nabla J\left( w \right) 在
切线方向的分量变为右上方,因而 w 将朝右上方移动。最终, w 将稳定在顶点处,达到最优解 w^{*} 。此时,
可以看到 w_{1}=0 ,这也就是采用 l_{1} 范数会使w产生稀疏性的原因。

以上分析虽是基于二维的情况,但不难将其推广到多维情况,其主要目的是为了直观地说明 l_{1} 、 l_{2} 正则化最
优解的差异,以及 l_{1} 范数为什么为产生稀疏性。

2、理论分析

假设原目标函数 J\left( w \right) 的最优解为 w^{*} ,并假设其为二阶可导,将 J\left( w \right) 在 w^{*} 处进行二阶泰勒展开有:

\hat{J} \left( w \right)=J\left( w^{*} \right)+\frac{1}{2}\left( w-w^{*} \right)^{T}H\left( w-w^{*} \right)

式中 H 为 J\left( w \right) 在 w^{*} 处的Hessian矩阵,注意 w^{*} 为 J\left( w \right) 的最优解,其一阶导数为0,因而式中无一阶
导数项。 \hat{J} \left( w \right) 取得最小值时有:

\nabla _{w} \hat{J}\left( w \right)=H\left( w-w^{*} \right)=0

由于 l_{2} 正则化的目标函数为在 J\left( w \right) 中添加 \Omega\left( w \right)=\frac{1}{2}\alpha \left| \left| w \right|\right|_{2}^{2}=\frac{1}{2}\alpha w^{T}w ,因而有:

\nabla _{w} \tilde{J}\left( w \right)=\nabla _{w} \hat{J}\left( w \right)+ \nabla _{w}\Omega\left( w \right)=H\left( w-w^{*} \right)+\alpha w

设其最优解为 \tilde{w} ,则有:

H\left( \tilde w-w^{*} \right)+\alpha \tilde w=0

\tilde w=\left( H+\alpha I \right)^{-1}H w^{*}

由于 H 是对称矩阵,可对其作特征值分解,即 H=Q\Lambda Q^{T} ,其中 Q 为正交矩阵,且每一列为 H 的特征
向量,代入上式有:

\tilde w=Q\left( \Lambda+\alpha I \right)^{-1} \Lambda Q^{T} w^{*}

\Lambda 为对角矩阵,且对角线元素为 H 的特征值 \lambda_{j} 。

w^{*} 可在 Q 为正交基上作线性展开,由上式可知 \tilde w 为 w^{*} 在 H 的每个特征向量上的分量以 \frac{\lambda_{j}}{\lambda_{j}+\alpha} 比例放缩
得到。若 \lambda_{j}\gg\alpha ,则 w^{*}_{j} 受正则化的影响较小;若 \lambda_{j}\ll\alpha ,则 w^{*}_{j}受正则化的影响较大,将收缩到接近于
0的值。同时,若 w^{*}_{j}\ne0 ,则 \tilde w_{j}\ne0 ,因而 l_{2} 正则化不会产生稀疏性的效果。

对于 l_{1} 正则化,只需将 \Omega\left( w \right) 替换为 w 的 l_{1} 范数,同理可以得到:

\nabla _{w} \tilde{J}\left( w \right)=\nabla _{w} \hat{J}\left( w \right)+\nabla _{w} \Omega\left( w \right)=H\left( w-w^{*} \right)+\alpha \text{sign}\left( w \right)

其最优解满足:

H\left( \tilde w-w^{*} \right)+\alpha \text{sign}\left( \tilde w \right)=0

为了简化讨论,我们假设 H 为对角阵,即 H=\text{diag} \left[ H_{11}, H_{22},...,H_{nn}\right] , w 的不同分量
之间没有相关性,该假设可通过对输入特征进行预处理(例如使用PCA)得到,此时 \tilde w 的解为:

\tilde w_{j}=\text{sign} \space \left( w^{*}_{j} \right)\max \left\{ \left| w^{*}_{j} \right|-\frac{\alpha}{H_{jj}} , 0 \right\}

当 \left| w^{*}_{j} \right|\leq\frac{\alpha}{H_{jj}} 时,可知 \tilde w_{j}=0 ,因而 l_{1} 正则化会使最优解的某些元素为0,从而产生稀疏性; \tilde w_{j} 会在原有最优解上偏移一个常数值。

综上, l_{2} 正则化的效果是对原最优解的每个元素进行不同比例的放缩; l_{1} 正则化则会使原最优解的元素产生不同量的
偏移,并使某些元素为0,从而产生稀疏性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128223.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 正则化方法:L1和L2 regularization、数据集扩增、dropout[通俗易懂]

    正则化方法:L1和L2 regularization、数据集扩增、dropout

  • Web安全原理剖析(四)——报错注入攻击[通俗易懂]

    Web安全原理剖析(四)——报错注入攻击[通俗易懂]报错注入攻击

  • ajax常见的面试问题[通俗易懂]

    ajax常见的面试问题[通俗易懂]1:什么是ajax?ajax作用是什么?异步的javascript和xmlAJAX是一种用于创建快速动态网页的技术。ajax用来与后台交互2:原生jsajax请求有几个步骤?分别是什么//创建XMLHttpRequest对象varajax=newXMLHttpRequest();//规定请求的类型、URL以及是否异步处理请求。ajax…

  • Java中CAS 基本实现原理「建议收藏」

    Java中CAS 基本实现原理「建议收藏」一、前言了解CAS,首先要清楚JUC,那么什么是JUC呢?JUC就是java.util.concurrent包的简称。它有核心就是CAS与AQS。CAS是java.util.concurrent.atomic包的基础,如AtomicInteger、AtomicBoolean、AtomicLong等等类都是基于CAS。什么是CAS呢?全称CompareAndSwap,比较并交换。CAS有三个操作数,内存值V,旧的预期值E,要修改的新值N。当且仅当预期值E和内存值V相同时,将内存值V修改为N,否则什

  • 原地算法矩阵置0_矩阵归一化处理

    原地算法矩阵置0_矩阵归一化处理给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:matrix

  • Java并发篇:volatile关键字吐血整理「建议收藏」

    Java并发篇:volatile关键字吐血整理「建议收藏」1.1主内存与工作内存在上一篇文章中我们已经知道线程是通过主内存去进行线程间的隐式通信的,而线程对共享变量的写操作在工作内存中完成,由JMM控制共享变量由工作内存写回到主内存的时机。JMM提供了一个保证内存可见性的原则:happens-before原则。这个原则可以保证线程对共享变量的写操作对其它线程可见。如果在多线程环境下需要满足happens-before原则,就…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号