常见范数(向量范数、矩阵范数)及其在机器学习算法的应用

注意,范数有很多种,它是根据性质来定义的。满足下面三条性质的都可以称为范数:

那么,范数用来干嘛的?上面三个性质,非常像中学向量的模长的定义。二维、三维向量模长也符合上面3个条件,所以也可以叫做范数。所以,其实引入“范数”就是为了得到一种线性空间中的向量“大小”的度量、或两个向量之间的“接近”程度的比较

常用的范数有:L1范数、L2范数和无穷范数(最大范数)。

范数的英文:norm,了解一下。因为matlab等中可以直接调norm函数。要知道它是用来算范数的。

对n维的向量x而言,其算法是:

对矩阵而言,也有差不多求法的范数:

F是表示Frobenius范数。Frobenius范数衡量矩阵的大小。类似于向量的L2范数。

结合机器学习领域,我们来简要聊聊这几种范数。

L2范数也叫欧几里得范数,它的使用十分频繁。因为它的算式表达了从原点到向量x确定的点的欧几里得距离。L2范数常常简化掉右下角那个2,默认地写为||x||。但是,平方L2范数(对L2范数求平方,就是脱掉平方根的帽子了)在使用和计算上都更加方便,所以也常用平方L2范数来衡量向量的大小。因为平方L2范数每个元素的导数只取决于本身,而L2范数的导数还和整个向量有关(这个大家试着对两个式子求导就知道了——带平方根的式子求导,结果的分母保留原来平方根里的东西,说明结果和向量整体有关。)但是,L2在原点附近增长缓慢(想象一下对称点在原点的开口向上的抛物线,或求导来严格证明。),这个在区分恰好是0和非0但值很小的元素的算法中不太好用。在这些情况下,我们使用L1范数,因为L1范数在各个位置的斜率相同。还有,当机器学习问题中零和非零元素的差异非常重要时,也用L1范数。因为当x中某个元素从0增加delta,L1范数的结果也增加delta。

有时候我们需要统计向量中非零元素的个数来衡量向量的大小。有些人称之为L0范数,但实际上这个L0范数不符合范数的三个条件。因此常用L1范数来替统计向量中非零元素的个数。

L∞,无穷范数,也叫最大范数(max norm),表示向量中最大的元素的绝对值

中学学的两个向量的点积也可以用范数来表示:

x^{T}y = ||x||_{2}||y||_{2}cos\Theta

试着利用今天学的范数知识推导一下上面这个式子吧!

 

 

 

猜你喜欢

转载自blog.csdn.net/lyxleft/article/details/84864282