博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习】L1、L2正则化项的理解及其在机器学习中的应用
阅读量:2051 次
发布时间:2019-04-28

本文共 2741 字,大约阅读时间需要 9 分钟。

文章目录

经验风险和结构风险

在机器学习任务中,常用损失函数(loss function)来衡量模型输出值 f ( x ) f(x) f(x)和真实值Y之间的差异,如下面定义的损失函数: L ( Y , f ( x ) ) = ( Y − f ( x ) ) 2 L(Y, f(x)) = (Y - f(x))^{2} L(Y,f(x))=(Yf(x))2若数据 ( X , Y ) (X,Y) (X,Y)是服从联合分布 D D D,则其损失函数的期望值为 E [ L ( Y , f ( x ) ) ] E[L(Y, f(x))] E[L(Y,f(x))],也称为模型的真实风险,记作 R r e a l = E [ L ( Y , f ( x ) ) ] R_{real}=E[L(Y, f(x))] Rreal=E[L(Y,f(x))]。我们的目标即是找到最优的模型或者概念来最小化真实风险,即: f ∗ = a r g m i n f ∈ F R r e a l ( f ) f^{*} = arg\mathop{min}\limits_{f \in F}R_{real}(f) f=argfFminRreal(f)由于数据的分布 D D D是未知的,所以我们我们只能通过历史数据训练得到的模型在训练集上的平均损失来代替这个真实风险,此时 f ( x ) f(x) f(x)在训练集上的平均损失称为经验风险(empirical risk),记作 R e m p R_{emp} Remp,其中 R e m p = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{emp} = \frac{1}{N}\sum_{i=1}^{N}L(y_{i}, f(x_{i})) Remp=N1i=1NL(yi,f(xi))即我们的目标是通过训练集上的数据最小化经验风险以获取最优模型或者最优概念: f ^ = a r g m i n f ∈ F R e m p ( f ) \hat{f} = arg\mathop{min}\limits_{f \in F}R_{emp}(f) f^=argfFminRemp(f)

三种拟合效果(图片来自Andrew Ng Machine Learning公开课视频)
通常情况下,损失函数的值越小,就说明模型拟合的效果就越好。 但在实际应用中,我们的目标不仅仅是让loss function越小越好就可以了,在最极端的境况下,我们训练的模型 f ( x ) f(x) f(x)拟合出了训练集上所有样本的值,如上图中的第三个模型(图片来自Andrew Ng Machine Learning公开课视频),这种现象就是过拟合(over-fitting),即模型的泛化能力变弱,无法在未见过的数据样本上产生较好的效果。 过拟合同时也意味着此时模型的结构复杂性特别高,这也即是结构风险(structural risk) 所带来的弊端。因此,除了降低模型的经验风险外,还需要降低它的结构风险。而下面介绍的正则化项的作用就是降低模型的复杂性,也即是降低它的结构风险

正则化项

正则化项(regularization)也称作惩罚项,常将其添加到损失函数中,用于组成我们的目标函数(object function)。正则化项的目的是为了对模型训练的参数进行一些限制,常用的正则化项包括L1正则化,L2正则化,其分别常表示为 λ ∣ ∣ w ∣ ∣ 1 \lambda||w||_{1} λw1 λ ∣ ∣ w ∣ ∣ 2 \lambda||w||_{2} λw2。其中, w w w表示模型训练的参数或者系数, ∣ ∣ . ∣ ∣ ||.|| .则是求范数的计算操作。通常模型越复杂,惩罚项越大,模型越简单,惩罚项越小

L1和L2的计算分别对应如下,其中 λ \lambda λ表示调整的步长大小,其值越大,越会使得模型参数为0时取得最优解

  • L1正则化表示权重向量 w w w中各个元素的绝对值之和,即 λ ∣ ∣ w ∣ ∣ 1 = λ ∑ i = 1 n ∣ w i ∣ \lambda||w||_{1} = \lambda\sum_{i=1}^{n}|w_{i}| λw1=λi=1nwi
  • L2正则化表示权重向量 w w w中各个元素的平方之和的平方根,即 λ ∣ ∣ w ∣ ∣ 2 = λ ( ∑ i = 1 n w i 2 ) 1 / 2 \lambda||w||_{2} = \lambda(\sum_{i=1}^{n}w_{i}^{2})^{1/2} λw2=λ(i=1nwi2)1/2

另外,除了L1和L2正则化项之外,还有L0正则化项,表示为 λ ∣ ∣ w ∣ ∣ 0 \lambda||w||_{0} λw0,计算方式是 λ ∣ ∣ w ∣ ∣ 0 = λ ∑ i = 1 n w i \lambda||w||_{0} = \lambda\sum_{i=1}^{n}w_{i} λw0=λi=1nwi其中 w ! = 0 w!=0 w!=0,它的意义即是求非零参数的个数。则Lp正则化就表示为 λ ∣ ∣ w ∣ ∣ p = λ ( ∑ i = 1 n ∣ w i ∣ p ) 1 / p \lambda||w||_{p} =\lambda (\sum_{i=1}^{n}|w_{i}|^{p})^{1/p} λwp=λ(i=1nwip)1/p

L1和L2正则化的作用

首先,关于L1和L2正则化的作用如下:

  • L1正则化可以产生稀疏解,即会使得很多参数的最优值变为0,以此得到的参数就是一个稀疏矩阵或者向量了。可以用于特征选择。
  • L2正则化可以产生值很小的参数,即会使得很多参数的最优值很小。可以防止模型过拟合。

L1正则化可以得到稀疏解,所以可以用于模型特征选择。以线性回归的模型为例,很多特征的参数为0就意味着它们对于预测结果的贡献为零,所以就可以保留不为零的特征,以此进行特征选择。关于L1正则化可以得到稀疏解,具体可以参考知乎:

L2正则化可以防止模型过拟合,原因是在加入了L2正则化的目标函数中,参数优化的时会倾向于使得参数尽可能小,最后得到一个参数都比较小的模型。相比于参数很大的模型,样本特征发生很小的变化就会导致模型的输出发生很大的变化,如前面图中的第三个模型,其中含有 x 4 x^{4} x4项,可想其对应的参数很大,其结果必然会有很大的变化。而如果参数很小,参数变化对于模型的输出的影响就会很小,以此增强模型的泛化能力。

关于为什么L2正则化可以获得很小的参数,可以参考

REF

转载地址:http://jzklf.baihongyu.com/

你可能感兴趣的文章
浏览器主页被篡改修复
查看>>
FFmpeg - 新老接口对比问题
查看>>
Windows下MinGW编译ffmpeg库
查看>>
SDL在windows下使用 - 显示YUV
查看>>
三种方式YUV420转RGB24/BGR24,实测可用
查看>>
Windows下使用VS2015编译openssl库
查看>>
Win10+VS2015编译libcurl
查看>>
Windows下使用jsoncpp
查看>>
Ubuntu下测试使用Nginx+uWsgi+Django
查看>>
Windows下编译x264
查看>>
visual studio调试内存泄漏工具
查看>>
开源Faac实现PCM编码AAC
查看>>
Windows下wave API 音频采集
查看>>
借船过河:一个据说能看穿你的人性和欲望的心理测试
查看>>
AndroidStudio 导入三方库使用
查看>>
Ubuntu解决gcc编译报错/usr/bin/ld: cannot find -lstdc++
查看>>
解决Ubuntu14.04 - 16.10版本 cheese摄像头灯亮却黑屏问题
查看>>
解决Ubuntu 64bit下使用交叉编译链提示error while loading shared libraries: libz.so.1
查看>>
MFC程序添加console窗口+printf打印输出信息
查看>>
VS生成DLL文件供第三方调用
查看>>