今天说一个深度学习和机器学习里面经常出现,但是未必人人都能 get 到直观感受的概念:范数,英文名叫 norm。

1、直观感受

本质上来讲,范数是用来衡量一个向量(vector)的规模的,我个人觉得中文中的「体量」这个词翻译它更形象。

什么叫规模,举个例子,x 和 y 两个向量分别如下:

x:tensor([[1., 1., 1.],[1., 1., 1.],[1., 1., 1.]])y:tensor([0., 0.])

他们的 size 分别是:

x: torch.Size([3, 3])y: torch.Size([2])

x 的规模是 3 维的,而且每个维度有 3 个取值,值的数值都为1;y 的规模是 1 维的, 每个维度只有 2 个取值,数值为0;

无论是维度还是数值大小,x 都毫无疑问比 y 大。如果现在问你,这两个向量的规模哪个大一些,相信你能很直观且不违背直觉地得出结论:x 的规模更大,即「体量」更大。

当然,还有一种比较亲民的理解方法,你可以把一个向量的范式衡量了这个向量指向的终点距离原点的距离  这样一来,维度很高且各维度上取值都很大的向量指向的点,肯定就比维度低且取值小的点,距离原点更远些。所以前者的范数更大。

那么在数学上具体是怎么定义范式的呢?

2. 数学定义

严格来说,范式是一个可以由一个向量映射到一个数值的函数。这个函数遵从下面几条规则:

  1. 范式是非负的,当你把它理解为长度的时候,就不难理解这个限制,因为长度是非负的。

  2. 当且仅当向量为零向量时,这个向量的范数才为零。

  3. 范数遵循三角定律。两个向量相加以后求范式 <= 两个向量求范式以后再相加。

  4. 向量乘以标量以后求范式 = 向量求范式以后再乘以标量。

也就说,只要满足上面四条规律的函数,不限形式,都可以作为范式函数。用这个函数可以求得一个向量的范式值,去描述一个向量的规模。

实际应用中,机器学习和深度学习常常用到下面这种范式函数,LP 范式。

向量 x 的 LP范式定义为:其中,∀p∈N  ,且 P >= 1。特别地,当 为 1 时,称为向量的 L1 范式;取 2 时,为 L2 范式。

特别要说明的是,严格来说,并不存在 L0 范式! 这是一个缪语。只不过,在实际操作中,通常会把一个向量的非零元素的个数称为 L0 范式。但是读者需要明白地是,如果计算一个向量的非零元素的个数能够作为范式的话,那这个映射规则明显是不符合上述第 4 条规则的:把一个具有 n 个 0 值的向量乘以一个标量 k 以后,它的非零元素的个数还是 n,而不是 k*n。

3. L1 范式和 L2 范式的比较

当 p 取 1 时,叫 L1 范式,很简单,就是向量所有元素值的绝对值求和:当 p 取 2 时,叫 L2 范式,即 Euclidean norm欧几里得范式

这么亲切的名字,喻示着,L2 范式相当于求欧式距离。举个例子:如果一个向量 u 为:那么,它的 L2 范式就是这么求的,向量 u 的 L2 范式值就是 5:很简单吧!

numpy 里面用 linalg.norm 函数就可以求 L2 范式:

np.linalg.norm([3, 4])5

因为 L2 范式是最常用的范式,所以有时候,会把简写为;而 L1 范式记为

那么到底哪种范式用得最多呢?

实践过程中,常常会用到 L2 范式的平方(squared L2 norm以下简称为 “平方 L2“。):,实际计算公式为:

平方 L2 摆脱了根号以后变得十分可爱了,因为它就是向量所有元素的平方和而已。在损失函数的优化过程中,关于单个变量的求导变得容易很多。 具体来说,如果向量 μ为:那么,它的 L2 范式关于各项元素的求导为:

如果是 平方 L2 关于各元素求导呢:通过对比可以看到,L2 求导,每个元素的偏导与整个向量所有的元素有关,而平方 L2 求导,每个元素的偏导只与这个元素自己的取值有关。 这样一来,求导过程瞬间简单很多!

上面是平方 L2 的优点,下面再来说一下它的不足。

以二维向量的 norm 为例,由于函数增长特性,平方 L2 在元素值接近于零的时候,其范式增长速度非常缓慢。看下图:

左边 L2 范式,右边平方 L2 范式 | x,y 轴为两个参数,z 轴为 norm

可以看到,右边的平方 L2 在 x,y 接近于 0 的取值时,较之于左边的 L2,增长非常平缓。所以在某些需要明确区分零值与非零值的应用中,用平方 L2 则显得不够明智。而机器学习中,对接近零值区域比较敏感的情况下,L1 范式是用的最多的,如下图:

L1 范式

在 L1 范式中,一个向量的单个元素从零增加 ϵ,则 L1 范式值也增加 ϵ,而不是像平方 L2 一样几近无增长。

4. 其他种类的范式

除了上述的 LP范式,机器学习中还很常见的一个范式是范式(max norm),我们叫它最大范式吧。顾名思义,最大范式为求这个向量所有元素值的最大绝对值,也是很简单的概念。

此外,深度学习中有时需要衡量一个矩阵的体量的时候,会用到 Frobenius 范式(Frobenius norm),公式为:这个计算方法相当于,对矩阵进行平滑操作(flatten)后的一维向量求 L2 范式。

两个向量的点乘可以利用 L2 范式来求:

以 x, y 两个向量为例:

那么,等式左边:等式右边:

关于范式的初步说明今天先到此为止,后续有时间会补充说明为什么需要搞出这个所谓的范数,以及怎样选择范数。

关于为什么要用到范数这个东西,先给一个直观的例子来解释一下:假设说腾讯公司总共有 20 个部门,每个部门平均 1000 个人;隔壁老王的创业公司总共有 2 个部门,每个部门就一个人,他跟他老婆。那么现在问题来了,如果现在限制这两个公司每天的日常开销不能超过一万块,那么很明显,腾讯的每个员工平均能支配的就只有 5 毛钱,而老王的公司就美滋滋了,两个人一天的开销一万块,怎么花都行。也就是说,当你的范式(体量)达到一定程度的时候,一旦对你的某个指标的大小做一个限制,那么形成范式(体量)的每个元素都会被迫缩减自己的量值,以此达到不超标。

如果指标小的不能再小呢?咳咳,我这就不展开说了,大家自行脑补吧。

Reference:https://zh.wikipedia.org/zh-hans/范数

你点的每个好看,我都认真当成了喜欢

欧几里得范数_机器学习中的范数究竟是个什么鬼?相关推荐

  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. 机器学习中的范数规则化之(二)核范数与规则项参数选择

    机器学习中的范数规则化之(二)核范数与规则项参数选择 zouxy09@qq.com http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮 ...

  4. 范数和机器学习中的范数

    什么是范数? 我们知道距离的定义是一个宽泛的概念,只要满足非负.自反.三角不等式就可以称之为距离.范数是一种强化了的距离概念,它在定义上比距离多了一条数乘的运算法则.有时候为了便于理解,我们可以把范数 ...

  5. 机器学习中的范数规则化之(二)核范数与规则项参数选择以及RPCA

    机器学习中的范数规则化之(二)核范数与规则项参数选择 三.核范数 核范数||W||*是指矩阵奇异值的和,英文称呼叫Nuclear Norm.这个相对于上面火热的L1和L2来说,可能大家就会陌生点.那它 ...

  6. 机器学习中的范数规则化之核范数及其应用

    我的博客中参考了大量的文章或者别的作者的博客,有时候疏忽了并未一一标注,本着分享交流知识的目的,如果侵犯您的权利,这并非我的本意,如果您提出来,我会及时改正. 主要内容概述: 1.核范数的引入及其作用 ...

  7. 机器学习中的范数规则化之(一)L0、L1与L2范数

    机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http://blog.csdn.net/zouxy09 参考资料:<机器学习中常常提到的正则化到底是什么意思? ...

  8. 机器学习中的范数规则化之L0、L1、L2范数

    我的博客中参考了大量的文章或者别的作者的博客,有时候疏忽了并未一一标注,本着分享交流知识的目的,如果侵犯您的权利,这并非我的本意,如果您提出来,我会及时改正. 本篇博客主要是为了解决机器学习中的过拟合 ...

  9. 欧几里得范数_浅谈机器学习中的范数

    机器学习中范数的广义定义: 一个范数是一个真实的向量空间V中的关于|| . ||的一个函数映射关系,其满足以下3个条件 (1)||x|| ≥ 0,当且仅当 x=0的时候等号成立 (2)||αx|| = ...

最新文章

  1. yii2 关掉php notice,yii2关闭错误提示
  2. Adobe称Flash技术遭排斥 呼吁政府介入
  3. 2016国产开源软件Top100(Q1)
  4. jenkins 发送邮件模板
  5. CSS布局奇淫巧计之-强大的负边距
  6. 高效率测试之巧用策略模式 (引用)
  7. mysql左外连接条件_mysql – 左外连接的MAX条件
  8. 工控项目开发框架介绍
  9. 异常数据剔除---格拉布斯准则(java实现)
  10. 关于html5毕业论文设计任务书,毕业论文设计任务书(精选多篇)
  11. 电脑快捷启动工具 Lily5.1
  12. 广告联盟中CPC CPA CPM CPS CPV分别是什么意思
  13. uni-app中配置微博分享相关信息
  14. 显示12306服务器处理中正在排队,12306排队等待中怎么回事_12306排队等待时间_12306一直在排队解决方法...
  15. SDN:简述对各类SDN交换机的认识
  16. Excel中如何统计一行中指定类型元素的个数
  17. CTF-密码学-bacon
  18. 疫情期间对通证经济的一些思考
  19. input type=number 禁止输入E
  20. Amazon Personalize 个性化效果评估,从准确性到多样性、新颖性和偶然性

热门文章

  1. Ansible基本使用及常用模块详解
  2. Linux 如何快速找到运行中的进程
  3. springcloud 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
  4. Luogu4099 HEOI2013 SAO 组合、树形DP
  5. Confluence 6 复杂授权或性能问题
  6. 实现在Android开发中的Splash Screen开场屏的效果
  7. Android 性能分析工具dumpsys的使用(自己增加一部分在后面)
  8. wince 6中硬键盘 输入法解决
  9. 小李飞刀:刷题第四弹!
  10. 2018-1-20:左移和右移运算以及和(无符号右移)的区别以及位运算的小题目...