咸鱼如我也要写一写奇异值分解的相关知识

今天晚上好奇心作祟,看了一波奇异值分解,凭着我十分辣鸡的线代知识看得非常头大,还好网上有许多姿势水平很高的资料,靠着这些资料总算大概的了解了奇异值分解的推导过程和相关作用。

前提知识:
奇异值分解涉及到的一个很重要的知识点就是特征值分解,然后特征值分解又涉及到正交矩阵,这些知识点在线性代数的本质特征向量一章中多有描述。遗忘或缺漏的同学可以去看看。

奇异值分解的应用和感性认识:
这里的教学过程有些反常,为什么不先讲推导再讲应用?答案就在小标题中,先培养一个感性认识。就像计网自顶向下的教学比由下而上的教学更容易讲清楚重点,我觉得先在应用层对奇异值分解有一个很恰当的认知也会方便我们的学习。我觉得这篇问答下的高票分解已经很精彩了,描述了基于奇异值分解的图片有损压缩和去噪,还有奇异值分解的几何意义。奇异值分解的物理意义是什么?

奇异值分解的推导:
写得比较好的博客:奇异值分解(SVD)原理详解及推导
这篇博客写得虽然好,但中间有几步推导对于小白有些快了,我这里稍微班门弄斧的补充一下。
首先要注意分清楚点积的一点和直接进行矩阵乘法运算时中间没有符号一定要区分开,很容易把点积看成乘法。
下面是奇异值分解的推导部分:
对于一个m*n的矩阵A。 我们知道 AT*A是一个n*n的对称阵,对于一个对称阵我们可以进行特征值分解,故:
AT*A = UMUT,其中M为对角阵,U为由特征向量组成的正交矩阵。
假设我们可以找到一组在n维空间中的正交单位向量{v1,v2,v3,…,vk}使得通过A矩阵变换后得到的m维向量{A*v1,A*2,…,A*vk}仍然正交。那么根据假设,有:
dot(A*vi,A*vj) = 0 //dot表示点积
( A*vi)T*A*vj = 0
viT*AT*A*vj = 0
viT*UMUT*vj = 0
其中U是特征向量组成的正交矩阵,当我们选取vi为其中的一个正交基时,viT*U 所得行矩阵只会有一个元素不为0,其它元素都为0。同理,若vj选取为U的一个正交基,则UT*vj所得列矩阵也只有一个元素不为0.此时可以直接将对角阵U中所对应的特征值提出来,只有这个特征值真正的进行了乘法运算,同理还可以改变这一特征值的位置。故最终有了
这里写图片描述

接下来用类似的方法可以推出奇异值的计算公式。然后对于m维的输出空间(k<=m),如果小于显然可以补充m-k个正交向量使得k=m。对于n维的输入空间,我们可以补充n-k个零空间中的向量,同时取奇异值为0。这样就得到了:
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值