作者:Andy Yang
链接:https://www.zhihu.com/question/26485586/answer/616029832
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

理解L1,L2 范数

L1,L2 范数即 L1-normL2-norm,自然,有L1、L2便也有L0、L3等等。因为在机器学习领域,L1 和 L2 范数应用比较多,比如作为正则项在回归中的使用 Lasso Regression(L1) 和 Ridge Regression(L2)。

因此,此两者的辨析也总被提及,或是考到。不过在说明两者定义和区别前,先来谈谈什么是范数(Norm)吧。

什么是范数?

在线性代数以及一些数学领域中,norm 的定义是

a function that assigns a strictly positive length or size to each vector in a vector space, except for the zero vector. ——Wikipedia

简单点说,一个向量的 norm 就是将该向量投影到 [0, ) 范围内的值,其中 0 值只有零向量的 norm 取到。看到这样的一个范围,相信大家就能想到其与现实中距离的类比,于是在机器学习中 norm 也就总被拿来表示距离关系:根据怎样怎样的范数,这两个向量有多远。

上面这个怎样怎样也就是范数种类,通常我们称为p-norm,严格定义是:

其中当 p 取 1 时被称为 1-norm,也就是提到的 L1-norm,同理 L2-norm 可得。

L1 和 L2 范数的定义

根据上述公式 L1-norm 和 L2-norm 的定义也就自然而然得到了。

先将 p=1 代入公式,就有了 L1-norm 的定义:

然后代入 p=2,L2-norm 也有了:

L2 展开就是熟悉的欧几里得范数:

题外话,其中 L1-norm 又叫做 taxicab-norm 或者 Manhattan-norm,可能最早提出的大神直接用在曼哈顿区坐出租车来做比喻吧。下图中绿线是两个黑点的 L2 距离,而其他几根就是 taxicab 也就是 L1 距离,确实很像我们平时用地图时走的路线了。

L1 和 L2 范数在机器学习上最主要的应用大概分下面两类

  • 作为损失函数使用
  • 作为正则项使用也即所谓 L1-regularizationL2-regularization

我们可以担当损失函数

先来看个回归问题

我们需要做的是,获得一条线,让数据点到线上的总距离(也就是error)最小。

还记得之前在范数介绍中提到的用来表示距离吗,于是也可以用能表示距离的 L1-norm 和 L2-norm 来作为损失函数了。

首先是 L1-norm 损失函数,又被称为 least absolute deviation (LAD,最小绝对偏差)

如果我们最小化上面的损失函数,其实就是在最小化预测值 和目标值 的绝对值。

之后是大家最熟悉的 L2-norm 损失函数,又有大名最小二乘误差 (least squares error, LSE):

这个便不多解释了。

那么问题来了,这里不谈挖掘机,为什么大家一般都用 L2 损失函数,却不用 L1 呢?

这个就说来话长了,如果你问一个学习过微积分的同学,如何求一个方程的最小值,他/她大概会想当然的说:“求导,置零,解方程。” 号称微积分届的农夫三拳。

但如果给出一个绝对值的方程,突然就会发现农夫三拳不管用了,求最小值就有点麻烦了。主要是因为绝对值的倒数是不连续的。

同样的对于 L1 和 L2 损失函数的选择,也会碰到同样的问题,所以最后大家一般用 L2 损失函数而不用 L1 损失函数的原因就是:

因为计算方便!

可以直接求导获得取最小值时各个参数的取值。

此外还有一点,用 L2 一定只有一条最好的预测线,L1 则因为其性质可能存在多个最优解。(更多关于L1 L2 损失函数参考索引5)

当然 L1 损失函数难道就没有什么好处了吗,也是有的,那就是鲁棒性 (Robust) 更强,对异常值更不敏感

我们还能担当正则项

因为机器学习中众所周知的过拟合问题,所以用正则化防止过拟合,成了机器学习中一个非常重要的技巧。

但数学上来讲,其实就是在损失函数中加个正则项(Regularization Term),来防止参数拟合得过好。

L1-regularization 和 L2-regularization 便都是我们常用的正则项,两者公式的例子分别如下


这两个正则项最主要的不同,包括两点:

  • 如上面提到的,L2 计算起来更方便,而 L1 在特别是非稀疏向量上的计算效率就很低;
  • 还有就是 L1 最重要的一个特点,输出稀疏,会把不重要的特征直接置零,而 L2 则不会;
  • 最后,如之前多次提过,L2 有唯一解,而 L1 不是。

这里关于第二条输出稀疏我想再进行一些详细讲解,因为 L1 天然的输出稀疏性,把不重要的特征都置为 0,所以它也是一个天然的特征选择器

可是为什么 L1 会有这样的性质呢,而 L2 没有呢?这里用个直观的例子来讲解。

来一步一步看吧,首先获知用梯度下降法来优化时,需要求导获得梯度,然后用以更新参数。

于是分别先对 L1 正则项和 L2 正则项来进行求导,可得。


之后将 L1 和 L2 和它们的导数画在图上


于是会发现,在梯度更新时,不管 L1 的大小是多少(只要不是0)梯度都是1或者-1,所以每次更新时,它都是稳步向0前进。

而看 L2 的话,就会发现它的梯度会越靠近0,就变得越小。

也就是说加了 L1 正则的话基本上经过一定步数后很可能变为0,而 L2 几乎不可能,因为在值小的时候其梯度也会变小。于是也就造成了 L1 输出稀疏的特性。

Reference

  1. Differences between L1 and L2 as Loss Function and Regularization
  2. Why L1 norm for sparse models
  3. L1 Norms versus L2 Norms
  4. Norm (mathematics)-Wiki
  5. Why we use “least squares” regression instead of “least absolute deviations” regression

转载于:https://www.cnblogs.com/Arborday/p/10998858.html

[转] L1 L2范数相关推荐

  1. 浅谈L0,L1,L2范数及其应用

    原文传送门:浅谈L0,L1,L2范数及其应用 浅谈L0,L1,L2范数及其应用 在线性代数,函数分析等数学分支中,范数(Norm)是一个函数,其赋予某个向量空间(或矩阵)中的每个向量以长度或大小.对于 ...

  2. 机器学习基础-23:矩阵理论(L0/L1/L2范数等)

    机器学习基础-23:矩阵理论(L0/L1/L2范数等) 机器学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 线性代数是数学的一个分支,广泛应用于科学和工程领域.线性代数和矩阵理论是机器学 ...

  3. 什么是范数(norm)?以及L1,L2范数的简单介绍

    什么是范数? 范数,是具有"距离"概念的函数.我们知道距离的定义是一个宽泛的概念,只要满足非负.自反.三角不等式就可以称之为距离.范数是一种强化了的距离概念,它在定义上比距离多了一 ...

  4. 正则化与L0,L1,L2范数简介

    参考:机器学习中的范数规则化之(一)L0.L1与L2范数 1. 常见的范数 1.1 L0 范数 向量中非零元素的个数,即稀疏度,适合稀疏编码,特征选择. 1.2 L1 范数 又叫曼哈顿距离或最小绝对误 ...

  5. L0,L1,L2范数

    http://blog.csdn.net/zouxy09/article/details/24971995

  6. 范数规则化(一):L0、L1与L2范数

    目录 0 范数 1  L0 范数 2  L1 范数 2.1 L1 2.2 L1正则化和特征选择 2.3 拉普拉斯先验与L1正则化 2.3.1 拉普拉斯分布 2.3.2 拉普拉斯先验 3 L2 范数 3 ...

  7. 超简单理解L0、L1、L2范数原理及作用

    L0,L1,L2范数在机器学习中的应用个人理解 博文针对L0.L1.L2范数原理及在机器学习中作用进行了非常通俗易懂的解释,为博主了解相关概念后自我理解,相信对于看完本篇分析的读者来说对理解这几个范数 ...

  8. 一文搞懂深度学习正则化的L2范数

    想要彻底弄明白L2范数,必须要有一定的矩阵论知识,L2范数涉及了很多的矩阵变换.在我们进行数学公式的推到之前,我们先对L2范数有一个感性的认识. L2范数是什么? L2范数的定义其实是一个数学概念,其 ...

  9. 机器学习中的规则化范数(L0, L1, L2, 核范数)

    今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个 ...

最新文章

  1. log4net 配置参数意思
  2. percona-Toolkit
  3. 2010年8月和9月成果
  4. 实验报告书 c语言,c语言实验报告书.doc
  5. python 读取json转为docx_在Python中进行JSON转化
  6. vs2012打包和部署程序成可安装安装包文件(InstallShield
  7. iOS中AutoLayer自动布局流程及相关方法
  8. 华为在推荐系统中的前沿技术研究与落地(附PPT下载链接)
  9. 布局智能家居 三大电信运营商进展如何?
  10. 我的前端笔记之 meta 篇
  11. linux修改jdk文件保存,Linux下更换jdk和配置环境变量详解
  12. 如何在html中加入字体库,网页中添加特殊字体解决方案
  13. php如何代理yy直播源,财经直播,调用YY直播源
  14. C#调用报表生成器成功案例示例研究
  15. TX2 安装显卡驱动
  16. 2019顶级WordPress音频和视频插件
  17. linux用户视角可分为,经济学原理下全球视角尔雅答案
  18. [软件人生]关于我,我的未来,我的思考
  19. 2021年目标,我打算这样去实现
  20. TransFuse论文

热门文章

  1. JavaScript 开发者数量暴涨、C# 超越 PHP,揭晓全球开发最新趋势!
  2. CPU 深夜狂飙,一帮大佬都傻眼了......
  3. HEOI2018游记
  4. 解释器模式(interpreter)解析例子
  5. Spring中继承配置的注入方法
  6. CSS 学习笔记——CSS Selector
  7. C# 获取当前屏幕DPI
  8. ORACLE的impdp和expdp命令
  9. php追加编译imagick
  10. 极光API推送 (v3 版本)