向量范数和矩阵范数的理解

向量范数和矩阵范数的理解向量范数今天来聊一聊机器学习矩阵论的相关知识——范数(Norm)。在学习机器学习基础算法的推导过程中,可以看到很多地方都应用到了这个范数。范数属于矩阵论的知识范围,可见数学基础的重要性。机器学习的数学基础重点推荐——MIT的机器学习数学基础课如果只需要快速了解,请参考——矩阵范数计算完整的MIT数学基础课程笔记可以参考:MIT18.06线性代数笔记这是个非常棒的手动演算流程,本文也将编码进行验算。向量范数定义:一个向量空间V到实数空间的映射,不仅如此,还要满足喜爱额条件:∣∣x∣∣⩾

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

向量范数

今天来聊一聊机器学习矩阵论的相关知识——范数(Norm)。

在学习机器学习基础算法的推导过程中,可以看到很多地方都应用到了这个范数。范数属于矩阵论的知识范围,可见数学基础的重要性。

机器学习的数学基础重点推荐——MIT的机器学习数学基础课

如果只需要快速了解,请参考——矩阵范数计算

完整的MIT数学基础课程笔记可以参考:MIT 18.06 线性代数笔记

这是个非常棒的手动演算流程,本文也将编码进行验算。

向量范数

定义:一个向量空间V到实数空间的映射,不仅如此,还要满足喜爱额条件:

  • ∣ ∣ x ∣ ∣ ⩾ 0 ||x||\geqslant 0 x0,并且 ∣ ∣ x ∣ ∣ = 0 → x = 0 ||x||=0 \rightarrow x=0 x=0x=0
  • 对于任意实数$\gamma , 有 ,有 ||\gamma x|| = \gamma ||x||$
  • 满足三角不等式, ∣ ∣ x ∣ ∣ + ∣ ∣ y ∣ ∣ ⩾ ∣ ∣ x + y ∣ ∣ ||x||+||y|| \geqslant ||x+y|| x+yx+y

1-norms

对于向量 V = [ v 1 , v 2 , v 3 , … , v n ] V=[v_1,v_2,v_3,\dots,v_n] V=[v1,v2,v3,,vn],他的范数是 ∣ ∣ v ∣ ∣ = ∣ v 1 ∣ + ∣ v 2 ∣ + ∣ v 3 ∣ + ⋯ + ∣ v n ∣ = ∑ i = 1 n ∣ v i ∣ ||v||=|v_1|+|v_2|+|v_3|+\dots+|v_n|=\sum_{i=1}^{n}|v_i| v=v1+v2+v3++vn=i=1nvi

2-norms(欧几里得范数)

∣ ∣ x ∣ ∣ 2 = v 1 2 + v 2 2 + ⋯ + v n 2 = ∑ i = 1 n v i 2 ||x||_2=\sqrt{v_1^2+v_2^2+\dots+v_n^2}=\sqrt{\sum_{i=1}^{n}v_i^2} x2=v12+v22++vn2
=
i=1nvi2

p-norms(特别的 ∞ \infty -范数)

∣ ∣ x ∣ ∣ p = ( ∑ i = 1 n ∣ v i ∣ p ) 1 p , a n d p ⩾ 1 ||x||_p=(\sum_{i=1}^{n} |v_i|^p)^{\frac{1}{p} },and \quad p\geqslant 1 xp=(i=1nvip)p1andp1

∞ \infty -norms

∣ ∣ x ∣ ∣ ∞ = m a x 1 ⩽ j ⩽ n ∣ x j ∣ ||x||_\infty =max_{1 \leqslant j \leqslant n}|x_j| x=max1jnxj

可视化

向量范数和矩阵范数的理解

还有来自于知乎的数值计算的图:

Credit to https://ncatlab.org/nlab/show/p-norm

n=2时,令 ∣ ∣ x ∣ p = 1 ||x|_p =1 xp=1,画出轮廓。p=1时候是菱形,p=2是圆形,p=6是圆角矩形,p=∞是方形。

对于渲染voronoi图或者机器学习的时候,使用不同范数将获得不同的边界。下图展示了离两个固定点距离相同的点组成的边界,范数定义不同,边界也不同。2-范数最简单,一直是垂直平分线,1-范数和∞-范数都存在折线,而且随着两固定点连线和x轴夹角的变化,会出现边界突变的情况。另外,这三个范数绘制的边界都经过2-范数定义的中点。有兴趣可以试下p>2时候的情况。——数值计算:向量和矩阵范数

From https://zhuanlan.zhihu.com/p/84185235

在我们的机器学习和神经网络最优化问题就经常会使用范数,MIT的老师就给我们举了一个例子:

假设我们要求 c 1 x 1 + c 2 x 2 = 0 c_1x_1+c_2x_2=0 c1x1+c2x2=0,限制条件下 x x x的最小范数:

向量范数和矩阵范数的理解

其中的思想可以理解成,你以任何一种范数对应的图形,从原点开始blow up(增大),直到和限制条件出现交点(hit first),那么久最小的blow up,也就是上式所求最小化问题的答案。

矩阵范数

我觉得理解一样事物应该从感性的角度出发,推荐一个博文——范数的物理意义

其中精髓如下:

  1. 函数图象联系了函数和几何,表达两个数之间的变化关系,映射推广了函数的概念
  2. 为了便于研究映射的性质以及数学表达,我们首先需要对映射的对象进行“量化”,取定一组“基”;确定事物在这组基下的坐标,事物同构于我们所熟悉的抽象几何空间中的点,事物的映射可以理解为从一个空间中的点到另一个空间的点的映射,而映射本身也是事物;
  3. 从一个线性空间到另一个线性空间的线性映射,可以用一个矩阵来表达,矩阵被看线性作映射;
  4. 矩阵范数反映了线性映射把一个向量映射为另一个向量,向量的“长度”缩放的比例;
  5. 由矩阵算子范数的定义形式(下面小节的定义公式)可知,矩阵 A A A把向量 x x x映射成向量 A x Ax Ax,取其在向量 x x x范数为1所构成的闭集下的向量 A x Ax Ax范数最大值作为矩阵A的范数,即矩阵对向量缩放的比例的上界,矩阵的算子范数是相容的。
  6. 由几何意义可知,矩阵的算子范数必然大于等于矩阵谱半径(最大特征值的绝对值),矩阵算子范数对应一个取到向量 A x Ax Ax范数最大时的向量 x x x方向,谱半径对应最大特征值下的特征向量的方向
  7. 矩阵的奇异值分解SVD,分解成左右各一个酉阵,和拟对角矩阵,可以理解为对向量先作旋转、再缩放、最后再旋转,奇异值,就是缩放的比例,最大奇异值就是谱半径的推广,所以,矩阵算子范数大于等于矩阵的最大奇异值,酉阵在此算子范数的意义下,范数大于等于1。此外,不同的矩阵范数是等价的。

通过向量定义的矩阵范数

∣ ∣ A ∣ ∣ p =   m a x x ≠ 0 ∣ ∣ A x ∣ ∣ p ∣ ∣ x ∣ ∣ p =   m a x ∣ ∣ x ∣ ∣ p = 1 ∣ ∣ A x ∣ ∣ p =   σ 1 ||A||_p =\ max_{x \neq 0} \frac{||Ax||_p}{||x||_p}= \ max_{||x||_p=1}||Ax||_p= \ \sigma_1 Ap= maxx=0xpAxp= maxxp=1Axp= σ1

这个 σ 1 \sigma_1 σ1是最大的奇异值,那么哪个是x?

如果x是个特征函数,那么他们的比例其实就是特征值 λ \lambda λ,所以他不是特征向量,而是奇异值向量 v 1 v_1 v1

矩阵 2-范数

矩阵2-范数: ∣ ∣ A ∣ ∣ 2 = λ m a x ( A 2 A ) ||A||_2 = \sqrt{\lambda_max(A^2A) } A2=λmax(A2A)
,为 A T A A^TA ATA的最大特征值,取其对应的特征向量 x x x ,有 A T A x = λ m a x ( A T A ) x =   ∣ ∣ A ∣ ∣ 2 2 x A^TAx = \lambda_{max}(A^TA)x= \ ||A||^2_2x ATAx=λmax(ATA)x= A22x

所以, A T A x = ∣ ∣ A ∣ ∣ 2 2 x A^TAx =||A||^2_2x ATAx=A22x

∣ ∣ A ∣ ∣ 2 2 x ||A||_2^2x A22x取1-范数:
∣ ∣   ( ∣ ∣ A ∣ ∣ 2 2 x ) ∣ ∣ 1   =   ∣ ∣ A T A x ∣ ∣ 1 ⩽ ∣ ∣ A T ∣ ∣ 1 ∣ ∣ A ∣ ∣ 1 ∣ ∣ x ∣ ∣ 1 = ∣ ∣ A ∣ ∣ ∞ ∣ ∣ A ∣ ∣ 1 ∣ ∣ x ∣ ∣ 1 ||\ (||A||^2_2x)||_1 \ = \ ||A^TAx||_1 \leqslant ||A^T||_1||A||_1||x||_1=\quad ||A||_\infty||A||_1||x||_1  (A22x)1 = ATAx1AT1A1x1=AA1x1

∣ ∣ ( ∣ ∣ A ∣ ∣ 2 2 x ) ∣ ∣ 1 = ∣ ∣ A ∣ ∣ 2 2 ∣ ∣ x ∣ ∣ 1 ⩽ ∣ ∣ A ∣ ∣ ∞ ∣ ∣ A ∣ ∣ 1 ∣ ∣ x ∣ ∣ 1 ||(||A||^2_2x)||_1 = ||A||_2^2||x||_1 \leqslant ||A||_\infty||A||_1||x||_1 (A22x)1=A22x1AA1x1

∣ ∣ A ∣ ∣ 2 2 ⩽ ∣ ∣ A ∣ ∣ ∞ ∣ ∣ A ∣ ∣ 1 ||A||_2^2 \leqslant||A||_{\infty}||A||_1 A22AA1

Frobenius范数

∣ ∣ A ∣ ∣ F = ( ∑ i ∑ j ∣ a i j ∣ 2 ) 1 2 ||A||_F= (\sum_{i} \sum_{j} |a_{ij}|^2)^{\frac{1}{2}} AF=(ijaij2)21

其中对 A A A进行SVD,得到 A = U Σ V T A=U \Sigma V^T A=UΣVT,可以看出 A A A的Forbenius范数,其实就是进行SVD的 Σ \Sigma Σ的范数。然后就产生了一个新的范数 ∣ ∣ A ∣ ∣ N ||A||_N AN:

∣ ∣ A ∣ ∣ N = σ 1 2 + σ 2 2 + ⋯ + σ n 2 ||A||_N = \sqrt{\sigma_1^2+\sigma_2^2+\dots+\sigma_n^2} AN=σ12+σ22++σn2

Practise:实践是检验真理的为唯一标准!

对于开头提到的博客,其中进行手算的矩阵norms,本文使用python的numpy进行计算,方便对于每一个计算中间过程进行检查和查看:

print("验证博客手算结果:https://blog.csdn.net/codinghappiness/article/details/90896632")
print("待求矩阵A为:")
A = np.matrix('-1,,5,-2;-2,1,0;3,-8,2')
print(A)

print("矩阵A的1范数:")
print (np.linalg.norm(A,ord=1))

print("矩阵A的2范数:")
print (np.linalg.norm(A,ord=2))

print("以下是分步的计算过程进行验证:")
#print(A.T)
print("A转置A的结果是B:")
B = A.T.dot(A)
print(B)
print("求得特征值:")
e, v = np.linalg.eig(B)
print(e)
print("其中最大得为:")
print(e[0])
print("开平方:")
print(math.sqrt(e[0]))

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191982.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 讲解最到位的粒子群算法,附matlab代码求解函数最优值

    讲解最到位的粒子群算法,附matlab代码求解函数最优值从鸟群觅食行为到粒子群算法粒子群算法的核心例:求解函数最小值粒子群算法的驱动因素从鸟群觅食行为到粒子群算法鸟群寻找食物的过程中,鸟与鸟之间存在着信息的交换,每只鸟搜索目前离食物最近的鸟的周围区域是找到食物的最简单有效的办法。粒子群算法(以下简称PSO)就是模拟鸟群觅食行为的一种彷生算法。解=粒子=鸟(鸟的位置象征着离食物的距离,粒子的位置也象征着…

  • 微软2007日语输入法

    微软2007日语输入法MicrosoftIME2007Japanese输入法发布了,久未更新过功能的2002版微软输入法终于可以淘汰啦!

  • C# winform 界面美化技巧(扁平化设计)

    C# winform 界面美化技巧(扁平化设计)C#winform界面美化技巧(扁平化设计)关于C#界面美化的一些小技巧在不使用第三方控件如IrisSkin的前提下,依然可以对winform做出让人眼前一亮的美化首先,我们先来实现主界面的扁平化此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件。将主窗体FormBorderStyle更改为None,这样就得到了一个无边框的窗体(w…

  • tomcat 宕机问题分析及解决「建议收藏」

    tomcat 宕机问题分析及解决「建议收藏」服务器环境:centos6.7+tomcat7.0.69+jdk1.7.0_55+mysql5.6.28场景:服务刚开始用户体验变差,请求时间长,之后出现404,500等与服务器交互失败问题。重启后用户体验回升,半小时内问题没有再现。日志中出现的问题有两个:                 1、Cause:org.springframework.jdbc.Can

  • 模型矩阵、视图矩阵、投影矩阵

    模型矩阵、视图矩阵、投影矩阵模型视图投影矩阵的作用,就是将顶点从局部坐标系转化到规范立方体(CanonicalViewVolnme)中。总而言之,模型视图投影矩阵=投影矩阵×视图矩阵×模型矩阵,模型矩阵将顶点从局部坐标系转化到世界坐标系中,视图矩阵将顶点从世界坐标系转化到视图坐标系下,而投影矩阵将顶点从视图坐标系转化到规范立方体中。如下图所示,假设现在要将三维空间中的三角形渲染到屏幕上。三角形的模型文件中,顶点坐标是…

  • layoutparams方法_LAYOUT

    layoutparams方法_LAYOUT沙翁向昨天要经验;向今天要结果;向明天要动力Android开发:LayoutParams的用法LayoutParams继承于Android.View.ViewGroup.LayoutParams.    LayoutParams相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息。假设在屏幕上一块区域是由一个Layout

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号