机器学习损失函数、L1-L2正则化的前世今生

前言:

我们学习一个算法总是要有个指标或者多个指标来衡量一下算的好不好,不同的机器学习问题就有了不同的努力目标,今天我们就来聊一聊回归意义下的损失函数、正则化的前世今生,从哪里来,到哪里去。

一.L1、L2下的Lasso Regression

和Ridge Regression

对于机器学习,谈到正则化,首先映入脑子的可能是L1正则化、L2正则化,接着又跑出来Lasso Regression、Ridge Regression,那么恭喜你,你已经走在了机器学习、人工智能的康庄大道上了,至少短期来看这条路还是不错滴。下面我们就正式开聊,小板凳走起。

介于大家可能对L1、L2比较熟悉,我们就先从L1、L2这种特殊的正则化聊到他们的原始样貌,知道她从哪里来要到哪里去,走一条从特殊到一般的路,一条更加广阔看的更远的路。

But不同的方向,不同的学科领域对一些相同的知识点有着不同的爱称,为了交流方便,在这里简单啰嗦一下,L1、L2这种在机器学习方面叫做正则化,统计学领域的人喊她惩罚项,数学界会喊她范数。整体来说本质不变,源于数学。

L1使用的是绝对值距离,也叫做街区(City-Block)距离(曼哈顿距离),L2使用的是平方距离,也叫做欧式(Euclidean)距离。当盐啦,还有切比雪夫距离等等。

帮助

敲黑板,不管是绝对值还是平方还是切比雪夫距离都是明氏距离(明考夫斯基距离)的特殊形式额已,大家感兴趣的自己查一下,不继续往下展开了,下一次可以具体写一写更多的别样式的距离。好像跑偏了,赶紧转回来。

耳熟能详的Lasso Regresssion是线性回归的一种,下面看看Lasso的简介:

Lasso是由1996年Robert Tibshirani首次提出,全称Least absolute shrinkage and selection operator。该方法是一种压缩估计。它通过构造一个罚函数得到一个较为精炼的模型,使得它压缩一些系数,同时设定一些系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。

Lasso Regresssion使用的就是L1正则化, 下面就是Lasso Regression 的Loss Function的样子,是不是很美丽:

简单说一下,第一个SUM(∑)里面可以看出来是一个线性回归求损失平方,第二个SUM(∑)是线性回归中系数的服从条件,用来约束解的区域,凸优化中的约束求解一般都长这个样子。

此外,Lasso Regression的整体损失求极小的样子改成拉格朗日形式就是下面这个式子的模样:

是不是找到了数学分析或者高等数学的感觉啦! 从式子里可以看到回归系数使用的是L1正则化,是惩罚参数或者叫做调节参数。L1范数的好处是当惩罚参数充分大时可以把某些待估的回归系数精确地收缩到0。

趁热打铁,我们再来看看Ridge Regression,也是线性回归的一个,看看简介:

RidgeRegression是一种专用于共线性的回归方法,对病态数据的拟合要强于最小二乘法(有想了解共线性问题,最小二乘的同学可以自己查资料了,如果对矩阵运算和矩阵性质熟悉的话会容易理解)。

岭回归使用的是L2正则化,下面的式子就是Ridge Regression的Loss Function 的美丽容颜:

细心的同学眼睛已然盯上了式子的最后面,是不是传说中的L2正则项,系数的平方和。上式的等价问题如下:

不管是Lasso Regression还是Ridge Regression 都有一个共同的参数,那就是惩罚参数L,那么怎么来确定呢?

通常使用交叉验证法(CV)或者广义交叉验证(GCV),当然也可以使用AIC、BIC等指标。

我们学习Lasso Regression 或者Ridge Regression的时候,一定见过下面这张图:

这张图很好的解释了为什么使用L1范数可以导致稀疏解,L2范数导致稠密解。下面从自己理解的角度和大家分享一下。

上面的图中实心的黑点也就是是真实的损失函数(不带有正则项的部分)我们暂叫做原问题的最优解,然后红色的圈圈就是系数β_1、β_2在原问题下可能的解的范围,接着是蓝色的实心圈是正则项约束的可能的解的范围。

我们都知道如果两个函数要是有共同的解,那么在几何意义下或者说从几何图形上来看,这两个函数的图像所在范围是要有共同交点或者要有交集。

所以,由于Lasso Regression或者Ridge Regression的整个Loss Function也就是我们的目标函数是由原问题和正则项两部分构成的,那么如果这个目标函数要有解并且是最小解的话,原问题和正则项就要有一个切点,这个切点就是原问题和正则项都满足各自解所在范围下的共同的解,红圈圈从图中的实心黑点也就是原问题最优解出发不断往外变化与蓝色实心圈相切的时候,L1范数意义下可能得到有的维度上的系数为零(就是切点所在的坐标处,β_1坐标为0),这也就是为什么说L1可以导致稀疏解,同理L2范数意义下,相切的点就不在坐标轴上,β_1和β_2都取0。

也许你已经发现,其实说L1范数下可以导致稀疏并不是说L1范数下一定导致稀疏,这还得看原问题的最优解到底在哪个地方取值。

二.Lq下的目标函数

其实看到这里你可能会问,既然有L1、L2会不会有Lq呢?答案是肯定的,有!直接上图

上图中,可以明显看到一个趋势,即q越小,曲线越贴近坐标轴,q越大,曲线越远离坐标轴,并且棱角越明显。那么 q=0 和 q=oo 时极限情况如何呢?猜猜看。

聪明的你猜对了吧,答案就是十字架和正方形。也许你又开始有问题了,既然L0是十字架,为什么不用L0作为正则项?

从理论来说,L0确实是求稀疏解的最好的正则项,但是机器学习中特征的维度往往很大,你也可以理解为系数很多很多,然后解L0又是个NP-hard问题,因此在实际工程应用中极有限制,不可行。

也许你又有问题了,为啥我们非得得到稀疏解呢?

其实这个问题并不绝对。从统计上来说,稀疏解可以舒缓模型的过拟合问题,毕竟可以使模型复杂度降低了嘛,然后你从一些应用场景上来说,比如医生看病,你一下让他看几百千。。。个指标得出正确答案简单,还是就几个关键指标就可以正确断诊来的好。毕竟解决问题还是要先抓住主要矛盾的,对不。

在统计学中,相比较于L1、L2这种特殊意义下的Lasso Regression 、Ridge Regression,更普遍意义Lq范数下的关于求系数的目标Loss Function为如下形式:

从上式可以看到最后面关于系数的约束就变成了Lq范数。

这个时候你就可以探索一下原问题在q取不同的值得情况对应的Lq 为惩罚项组合而成的目标函数得到的问题的解有什么不同!!!

三、普遍意义下的目标函数

除了上面提到的不管是线性回归问题常用的最小二乘法的平方损失函数,还是加入了L1、L2正则项等问题的目标函数,还有很多很多的以损失函数为目标函数的种类,譬如说,Logistics Regression使用的Log对数损失函数、SVM 使用的Hinge损失函数、Adaboost使用的指数损失函数、0-1损失函数绝对值损失函数等等。

整体来说我们已经完成了要讲的内容,但是作为“吾将上下而求索”的新青年,还是想知道这些目标函数的祖宗到底是谁?想看一看我们的目标损失函数从何而来,当当当当,下面的式子就揭晓了答案:

上式中的L一长串表示的是一般原问题的的损失函数,后面的J表示的是由于想到的某些解的特殊性或者说由于条件限制而加入原问题损失函数的一个规范项,一个约束。

从这个式子来说,不管是线性回归问题,还是我们讲的L1、L2、Lq等问题都只是她的多少代徒子徒孙而已。

本文我们从Lasso Regression、Ridge Regression为切入点引入了L1、L2范数,并且讲了L1、L2在Lasso Regression、Ridge Regression上为什么表现不同,L1为什么可以引起稀疏,哪些情况需要稀疏,接着引入了泛化的Lq范数,并且指出为啥不能用L0范数,最后给出了损失函数和正则化的最一般问题的来源,扒拉了下其他算法使用的目标函数的宗源。

有讲的不妥的地方还望各位客官指正。

作者:赵慧

编辑:赵一帆

原文发布于微信公众号 - 机器学习算法全栈工程师(Jeemy110)

原文发表时间:2017-09-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习自然语言处理

word2vec理论与实践

导读 本文简单的介绍了Google 于 2013 年开源推出的一个用于获取 word vector 的工具包(word2vec),并且简单的介绍了其中的两个训练...

2666
来自专栏SIGAI学习与实践平台

【群话题精华】五月集锦——机器学习和深度学习中一些值得思考的问题

SIGAI微信技术交流群已经运营3周了,在这期间群友们对很多技术问题进行了热烈的讨论,在这里,我们将精华的话题整理出来,做一个总结。以后在每个月我们都会有类似的...

602
来自专栏AI2ML人工智能to机器学习

非均衡数据处理--如何学习?

Sampling技术比较直观,就是怎么把样本变成均衡的。 我们知道不均衡数据, 最重要的还是收集minority数据。 但是一般这是一个长期的过程。 那么, ...

482
来自专栏人工智能

MLlib中的随机森林和提升方法

本帖是与来自于Origami Logic 的Manish Amd共同撰写的。

20710
来自专栏about云

通俗易懂:彻底明白什么是神经网络

问题导读 1.你认为神经网络最重要的用途是什么? 2.什么是神经元? 3.什么是反向传播算法?

973
来自专栏用户2442861的专栏

SVM-支持向量机算法概述

支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多...

321
来自专栏AI科技大本营的专栏

AI从入门到放弃:BP神经网络算法推导及代码实现笔记

作为AI入门小白,参考了一些文章,想记点笔记加深印象,发出来是给有需求的童鞋学习共勉,大神轻拍!

992
来自专栏IT派

集成算法的简单分享

为什么使用集成算法  简单算法一般复杂度低,速度快,易展示结果,但预测效果往往不是特别好。每种算法好像一种专家,集成就是把简单的算法(后文称基算法/基模型)组织...

3545
来自专栏丁科的专栏

基于 boosting 原理训练深层残差神经网络

介绍一种基于提升理论的训练深度模型的新方法。基于 boosting(提升)原理,逐层训练深度残差神经网络的方法,并对性能及泛化能力给出了理论上的证明。

4850
来自专栏大数据文摘

机器学习算法一览(附python和R代码)

20114

扫描关注云+社区