zoukankan      html  css  js  c++  java
  • L0/L1/L2范数的联系与区别

    范数(norm)


    数学中的一种基本概念。在泛函分析中,它定义在赋范线性空间中,并满足一定的条件,即①非负性;②齐次性;③三角不等式。它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。

    这里简单地介绍以下几种向量范数的定义和含义 

    1、 L-P范数 


    与闵可夫斯基距离的定义一样,L-P范数不是一个范数,而是一组范数,其定义如下: 

     

    根据P 的变化,范数也有着不同的变化,一个经典的有关P范数的变化图如下: 


    上图表示了p从无穷到0变化时,三维空间中到原点的距离(范数)为1的点构成的图形的变化情况。以常见的L-2范数(p=2)为例,此时的范数也即欧氏距离,空间中到原点的欧氏距离为1的点构成了一个球面。
    实际上,在0时,Lp并不满足三角不等式的性质,也就不是严格意义下的范数。以p=0.5,二维坐标(1,4)、(4,1)、(1,9)为例,。因此这里的L-P范数只是一个概念上的宽泛说法。

    2、L0范数 


    当P=0时,也就是L0范数,由上面可知,L0范数并不是一个真正的范数,它主要被用来度量向量中非零元素的个数。用上面的L-P定义可以得到的L-0的定义为: 

     

    这里就有点问题了,我们知道非零元素的零次方为1,但零的零次方,非零数开零次方都是什么鬼,很不好说明L0的意义,所以在通常情况下,大家都用的是: 

    表示向量x中非零元素的个数。
    对于L0范数,其优化问题为: 

    在实际应用中,由于L0范数本身不容易有一个好的数学表示形式,给出上面问题的形式化表示是一个很难的问题,故被人认为是一个NP难问题。所以在实际情况中,L0的最优问题会被放宽到L1或L2下的最优化。

    3、L1范数 


    L1范数是我们经常见到的一种范数,它的定义如下: 

     

    表示向量中非零元素的绝对值之和
    L1范数有很多的名字,例如我们熟悉的曼哈顿距离、最小绝对误差等。使用L1范数可以度量两个向量间的差异,如绝对误差和(Sum of Absolute Difference): 

    对于L1范数,它的优化问题如下: 

     

    由于L1范数的天然性质,对L1优化的解是一个稀疏解,因此L1范数也被叫做稀疏规则算子。通过L1可以实现特征的稀疏,去掉一些没有信息的特征,例如在对用户的电影爱好做分类的时候,用户有100个特征,可能只有十几个特征是对分类有用的,大部分特征如身高体重等可能都是无用的,利用L1范数就可以过滤掉。

    4、L2范数


    L2范数是我们最常见最常用的范数了,我们用的最多的度量距离欧氏距离就是一种L2范数,它的定义如下: 

     

    表示向量元素的平方和再开平方。 
    像L1范数一样,L2也可以度量两个向量间的差异,如平方差和(Sum of Squared Difference): 

    对于L2范数,它的优化问题如下: 

     

    L2范数通常会被用来做优化目标函数的正则化项,防止模型为了迎合训练集而过于复杂造成过拟合的情况,从而提高模型的泛化能力。

    5、范数


    当时,也就是范数,它主要被用来度量向量元素的最大值,与L0一样,通常情况下表示为

     来表示

  • 相关阅读:
    变量的使用
    Matrix Operations
    Modify tensor shape
    张量的创建
    feed_dict 的使用
    安装并配置 HBase2.2.2
    HDFS 编程实践(Hadoop3.1.3)
    TensorFlow的安装
    GUI tkinter (Menu) -弹出菜单
    GUI tkinter (Menu) -下拉菜单
  • 原文地址:https://www.cnblogs.com/tectal/p/10131126.html
Copyright © 2011-2022 走看看