理解L1,L2 范数

L1,L2 范数即 L1-norm 和 L2-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-regularization 和 L2-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

l2范数求导_理解L1,L2 范数在机器学习中应用相关推荐

  1. l2范数求导_机器学习中的范数规则化之(一)L0、L1与L2范数 非常好,必看

    机器学习中的范数规则化之(一)L0.L1与L2范数 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题 ...

  2. l2范数求导_机器学习中的范数规则化之(一)L0、L1与L2范数

    source: https://blog.csdn.net/zouxy09/article/details/24971995 zouxy09@qq.com http://blog.csdn.net/z ...

  3. l2范数求导_稀疏编码学习笔记(二)L2范数

    L2范数 除了L1范数,还有一种更受宠幸的规则化范数是L2范数: ||W||2.它也不逊于L1范数,它有两个美称,在回归里面,有人把有它的回归叫"岭回归"(Ridge Regres ...

  4. l2范数求导_最小二乘法(LS算法):L2范数(计算残差平方和)的一个实际应用,为,具体...

    [程序3-1] import numpy as np from matplotlib import pyplot as plt A = np.array([[5],[4]]) C = np.array ...

  5. 手推公式带你轻松理解L1/L2正则化

    文章目录 前言 L1/L2正则化原理 从数学的角度理解L1/L2正则化 从几何的角度理解L1/L2正则化 L1/L2正则化使用情形 前言 L1/L2正则化的目的是为了解决过拟合,因此我们先要明白什么是 ...

  6. Lyapunov-Krasovskii泛函二重积分项求导_原理

    Lyapunov-Krasovskii泛函二重积分项求导_原理 回答 [引理1] [定理1] 2022年下半年,看了很多关于时滞系统和引入时滞的网络化控制系统的论文,对稳定性证明中Lyapunov-K ...

  7. sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)

    目录 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 最近有遇到些同学找我讨论sigmoid训练多标签或者用在目标检测中的问题,我想写一些他们的东西,想到以前的博客里躺着这篇文章(2015年读研时机 ...

  8. 二元函数对xy同时求导_关于反三角函数及其导数

    反三角函数是基本初等函数的重要组成部分,但似乎又是许多人常问的主体之一.为了方便理解和查询,本文总结了以下内容: 常见的六种三角函数对应的反三角函数的定义.定义域.值域,并给出对应三角形图示汇总.对应 ...

  9. 关于矩阵求导的理解与计算方法

    前言 我今年大四即将毕业,毕设是深度学习相关,在进行理论学习时,一度对矩阵微分感到困惑,本科学习期间没接触过这个(软件工程专业...),网上资料也很零散,在<神经网络与深度学习>的数学基础 ...

最新文章

  1. onTouchEvent
  2. debian gnu linux8,Debian GNU/Linux 9.3 Stretch 和8.10 Jessie正式发布
  3. 截止角频率和截止频率的关系_开关电源的控制环截止频率和开关频率有什么关系?...
  4. [jQuery] 说说看jQuery的选择器有哪些?
  5. maven-shade-plugin插件将项目打成可执行的jar包
  6. linux是不是显示不了中文版,Linux为什么OpenOffice下不能显示中文
  7. 语法》第一章 基本语法
  8. bzoj2631:tree
  9. 【数据结构】--章节2.3----线性表的链式表示和实现
  10. 联想r720游戏模式不见了
  11. Android DeviceOwner 应用的能力
  12. c语言除去字符串多余的空格,从一个字符串中去除多余的空格
  13. 局部连接层(Locally-Connected Layer)
  14. 情人节,让我们一睹数学的浪漫
  15. c++ linux utf-8 编码 中文汉字分割(超简单代码)
  16. 手游自动化测试框架实现原理
  17. 【VRP问题】基于遗传算法求解容量和距离约束的车辆路径规划问题CDVRP附matlab代码
  18. 目标检测 - 特征检测器比较
  19. 资策会发布RFID感测式衣架、虚拟试衣机,打造智慧试衣间
  20. 智能养殖场和传统养殖场区别

热门文章

  1. vue移动端touch事件
  2. Pytube keeps return 404 not found/Pytube 持续报错(404).
  3. 根据两点画半椭圆的方法
  4. [运算放大器]佛朗哥笔记 - 有源滤波器II - 低通/高通/带通滤波器设计
  5. python炫酷烟花表白源代码
  6. 【第九篇】SpringSecurity核心过滤器-SecurityContextPersistenceFilter
  7. 我倒要看看你葫芦里装的是什么事药
  8. English Learning - L3 作业打卡 Lesson1 Day4 2023.5.8 周一
  9. Oracle安装在虚拟机的步骤
  10. exynos4412开发板LED驱动程序