向量的范数
1137字,阅读需时4分钟

有时我们需要衡量一个向量的大小。在机器学习中,经常使用一个称为范数的函数来衡量向量大小,该函数将向量映射到一个非负值。

我们知道向量的长度也记为向量的模长,向量的模长等于向量自身点积的二次方根。

假设有下面二维向量a:

01.png

向量a自身的点积为:

02.png

向量a的模长为:

03.png

在这里,向量a的模长||a||就是范数,它表示从原点出发到向量a确定的点的欧几里得距离,它也称为L^2范数。

假设向量V为:

04.png

则向量V的L^2范数为:

05.png

一般地,若向量??=(??1, ??2,……, ??n),则向量??的L^2范数为:

06.png

L^2范数在机器学习中出现得十分频繁,经常简化表示为||x||,省略了下标2,下标2表示是L^2范数。

在一些机器学习应用中,区分向量中恰好是零的元素和非零值很小的元素是很重要的。在这些情况下,可以使用L^1范数。

一般地,若向量??=(??1, ??2,……, ??n),则向量??的L^1范数为:

07.png

L^1范数实际上是求向量中非零元素的绝对值之和。

假设向量a为:

08.png

则向量a的L^1范数为:

09.png

在机器学习中,也经常用到L^0范数,L^0范数求向量中非零元素的个数。

假设向量b为:

10.png

向量b的L^0范数为:

12.png

在机器学习中,L^0和L^1范数用来让模型变得稀疏,L^0正则化就是限制非零元素的个数在一定的范围内,L^1正则化用于调整权重,让小权重的特征项为0,保留大权重的特征项,因此L^1也会让模型变得稀疏。

在机器学习中,还会用到L^∞范数,L^∞范数是求向量中绝对值最大的元素。

向量b的L^∞范数为:

12.png

一般形式上,L^P范数定义如下:

13.png

下面我们使用Numpy求向量的范数。

import numpy as np
#创建向量a
a =  np.array([2,-1,3,5,8])
if __name__ == '__main__':
    #输出a的L2范数
    print("a的L2范数为:%.2f" % (np.linalg.norm(a,2)))
    #输出a的L1范数
    print("a的L1范数为:%.2f" % (np.linalg.norm(a,1)))
 
    #输出a的L0范数
    print("a的L0范数为:%.2f" % (np.linalg.norm(a,0)))
 
    #输出a的L∞范数
    print("a的L∞范数为:%.2f" % (np.linalg.norm(a,np.inf)))
我要评论
全部评论
郎宏林
授课老师
授课老师简介
项目经理,系统分析和架构师,从事多年中文信息处理技术。熟悉项目管理、擅长项目需求分析和设计、精通Java、C#、Python等编程语言。
下载APP

手机、电脑同步学

用微信或手机浏览器扫描二维码,即可下载APP。

  • 备案号:鲁ICP备15001146号
  • @1997-2018 潍坊米粒花网络技术有限公司版权所有