SVD 分解是线性代数的一大亮点。

1. SVD 分解

\(A\) 是任意的 \(m×n\) 矩阵,它的秩为 \(r\),我们要对其进行对角化,但不是通过 \(S^{-1}A S\)。\(S\) 中的特征向量有三个大问题:它们通常不是正交的;并不总是有足够的特征向量;\(Ax=\lambda x\) 需要 \(A\) 是一个方阵。\(A\) 的奇异向量很好地解决了上述所有问题。

代价是我们需要两组奇异向量,一组是 \(\boldsymbol{u}\), 一组是 \(\boldsymbol{v}\)。\(\boldsymbol{u}\) 是 \(AA^T\) 的特征向量,\(\boldsymbol{v}\) 是 \(A^TA\) 的特征向量,因为这两个矩阵都是对称矩阵,我们可以选出一组标准正交的特征向量。即:

\[AA^T=U\Sigma^2U^T \quad A^TA =V\Sigma^2V^T\]

证明:

让我们从 \(A^TAv_i=\sigma_i^2v_i\) 开始,两边同乘以 \(v_i^T\),有:

\[v_i^TA^TAv_i=\sigma_i^2v_i^Tv_i=\sigma_i^2 \to ||Av_i||=\sigma_i\]

这说明向量 \(Av_i\) 的长度为 \(\sigma_i\)。然后两边同乘以 \(A\),有:

\[AA^T(Av_i)=\sigma_i^2(Av_i) \to u_i = Av_i / \sigma_i\]

这说明 \(Av_i\) 是 \(AA^T\) 的特征向量,除以其长度 \(\sigma_i\) 我们便可以得到单位向量 \(u_i\)。这些 \(\boldsymbol{u}\) 还是正交的,因为:

\[(Av_i)^TAv_j = v_i^T(A^TAv_j) = v_i^T(\sigma_j^2v_j) =\sigma_j^2v_i^Tv_j=0\]

奇异向量 \(\boldsymbol{v}\) 位于 \(A\) 的行空间,而结果 \(\boldsymbol{u}\) 位于 \(A\) 的列空间,奇异值都是正数。然后 \(Av_i=\sigma_iu_i\) 一列一列告诉我们 \(AV=U\Sigma\),

\[A \begin{bmatrix} &&&\\ v_1&v_2&\cdots&v_r\\&&& \end{bmatrix} = \begin{bmatrix} &&&\\ u_1&u_2&\cdots&u_r\\&&& \end{bmatrix} \begin{bmatrix} \sigma_1&&&\\ &\sigma_2&&\\&&\cdots&\sigma_r \end{bmatrix}\]

\[(m×n)(n×r)=(m×r)(r×r)\]

这是 SVD 的核心,但不仅仅到此为止,这些 \(\boldsymbol{v}\) 和 \(\boldsymbol{u}\) 只负责矩阵 \(A\) 的行空间和列空间,我们需要 \(n-r\) 个额外的 \(\boldsymbol{v}\) 和 \(m-r\) 个额外的 \(\boldsymbol{u}\),分别来自零空间 \(N(A)\) 和左零空间 \(N(A^T)\)。它们可以是这两个空间的标准正交基,当然它们也自动正交于前 \(r\) 个 \(\boldsymbol{v}\) 和 \(\boldsymbol{u}\)。将这些新的向量包含进 \(V\) 和 \(U\),我们依然有 $AV=U\Sigma $:

新的 \(\Sigma\) 是 \(m×n\) 的,由之前的 \(r×r\) 矩阵 \(\Sigma_r\) 和 \(m-r\) 行零和 \(n-r\) 列零组成。此时,\(V\) 和 \(U\) 分别是大小为 \(n,m\) 的方阵,有 \(V^{-1}=V^T\),则 \(AV=U\Sigma\) 就变成了

\[A=U\Sigma V^T\]

这也就是 SVD 分解。当我们将奇异值降序排列时,上述的方程按照重要性给出了矩阵 \(A\) 的 \(r\)个秩为 1 的小片。

2. 图像压缩

这是一个数据的时代,并且数据经常存储在一个矩阵中。数字图像就是一个存储像素值的矩阵,比如一个大小为 256×512 的图像总共有 \(2^8*2^9=2^{17}\) 个元素。单独存储这一个图像对计算机来说是没问题的,但在 CT 和 MR 扫描过程中会产生大量的数据,又或者它们是电影中的帧图片,那么需要存储的数据量将会非常大。高清晰度的数字电视特别需要压缩,否则设备无法实时跟踪。

什么是压缩呢?我们想要用更少的数字代替这 \(2^{17}\) 个元素,但同时不损失图像质量。一个简单的办法就是用一组中四个元素的均值来替换它们,这就是 4:1 压缩。但是如果我们想进一步压缩,比如 16:1,那么我们的图像就会有一些块效应,我们想要用一个人的视觉系统注意不到的方式进行压缩。

很多方法被提出来解决这个问题,比如用在 jpeg 中的傅里叶变换以及用在 JPEG2000 中的小波变换。这里我们尝试一个 SVD 的方法:用一个秩为 1 的矩阵,一列乘以一行,来替换原始的 256×512 矩阵。这样奏效的话,压缩比将会是 (256*512)/(256+512) 超过 170:1。实际上,我们会用 5 个秩为 1 的矩阵,这时候压缩比仍然有 34:1,而更重要的问题是图像质量。

为什么会牵涉到 SVD 呢?矩阵 \(A\) 最好的秩 1 近似为 \(\sigma_1u_1v_1^T\),使用了最大的奇异值 \(\sigma_1\)。最好的秩 5 近似为 \(\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_5u_5v_5^T\),SVD 按照降序放置矩阵 A 的小片

3. 基和 SVD

让我们以一个 2×2 的矩阵开始,

它的秩为 2,是可逆的。我们想要 \(v_1,v_2\) 是正交的单位向量,同时使得 \(Av_1,Av_2\) 正交。没有一个正交矩阵 \(Q\) 可以让 \(Q^{-1}AQ\) 对角化,我们需要 \(U^{-1}AV\)。

有一个简单的办法可以移除 \(U\) 而只留下 \(V\),

\[A^TA=(U\Sigma V^T)^T(U\Sigma V^T)=V\Sigma ^T\Sigma V^T\]

这就和 \(A=Q\Lambda Q^T\) 一样,只不过这里的对称矩阵不是 \(A\) 本身,而是 \(A^TA\) ,\(V\) 的列是 \(A^TA\) 的特征向量。然后我们可以利用 \(u=Av/\sigma\) 来得到 \(U\),也可以直接得到,

\[AA^T=(U\Sigma V^T)(U\Sigma V^T)^T=U\Sigma \Sigma ^TU^T\]

矩阵 \(U\) 和 \(V\) 包含了四个子空间的标准正交基:

以下的例子很好地展示了矩阵的四个字空间和 SVD 的关系。

4. 特殊矩阵的特征值和特征向量

获取更多精彩,请关注「seniusen」!

线性代数之——SVD 分解的更多相关文章

  1. 【线性代数】6-7:SVD分解(Singular Value Decomposition-SVD)

    title: [线性代数]6-7:SVD分解(Singular Value Decomposition-SVD) categories: Mathematic Linear Algebra keywo ...

  2. SVD分解技术数学解释

    SVD分解 SVD分解是LSA的数学基础,本文是我的LSA学习笔记的一部分,之所以单独拿出来,是因为SVD可以说是LSA的基础,要理解LSA必须了解SVD,因此将LSA笔记的SVD一节单独作为一篇文章 ...

  3. SVD分解技术详解

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  4. SVD分解的理解[转载]

    http://www.bfcat.com/index.php/2012/03/svd-tutorial/ SVD分解(奇异值分解),本应是本科生就掌握的方法,然而却经常被忽视.实际上,SVD分解不但很 ...

  5. 机器学习中的矩阵方法04:SVD 分解

    前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间.这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出 ...

  6. SVD分解 解齐次线性方程组

    SVD分解 只有非方阵才能进行奇异值分解 SVD分解:把矩阵分解为 特征向量矩阵+缩放矩阵+旋转矩阵 定义 设\(A∈R^{m×n}\),且$ rank(A) = r (r > 0) $,则矩阵 ...

  7. 机器学习之SVD分解

    一.SVD奇异值分解的定义 假设是一个的矩阵,如果存在一个分解: 其中为的酉矩阵,为的半正定对角矩阵,为的共轭转置矩阵,且为的酉矩阵.这样的分解称为的奇异值分解,对角线上的元素称为奇异值,称为左奇异矩 ...

  8. 矩阵的SVD分解

    转自 http://blog.csdn.net/zhongkejingwang/article/details/43053513(实在受不了CSDN的广告) 在网上看到有很多文章介绍SVD的,讲的也都 ...

  9. SVD分解求解旋转矩阵

    1.设是两组Rd空间的点集,可根据这两个点集计算它们之间的旋转平移信息. 2.设R为不变量,对T求导得: 令 则 将(4)带入(1)得: 令 则 (相当于对原来点集做减中心点预处理,再求旋转量) 3. ...

随机推荐

  1. Web服务器——WSGI

    1.什么是WSGI? WSGI全称 Web Server Gateway Interface,也可称作Python Web Server Gateway Interface,开始于2003年,为Pyt ...

  2. Ubantu创建热点并共享——2019年5月10日更新

    只需要两步,参考以下两篇文章: ubuntu16.04上安装配置DHCP服务的详细过程 Ubuntu18.04 创建与编辑热点的方法

  3. js日期格式验证

    js日期格式验证 <input type="text" maxLength='10' onkeyup='checkDate(this.value,jQuery(this)); ...

  4. Auth主件的(RBAC) 六表

    1.RBAC 和Auth的区别 基于RBAC一般Djagno 会用 和Auth 相对来说高级一点 2.RBAC( role Based Accsess Control)的六表之间的数据传输 2.1 D ...

  5. 分页控件SSTab

    一.分页控件SSTab概述1.作用:采用分页形式查询或编辑数据表中数据.2.添加到控件箱菜单命令:工程 | 部件,选择:Microsoft Tabbed Dialog Control 6.0 (SP6 ...

  6. luogu P3601 签到题

    链接P3601 签到题 求\[\sum_{i=l}^{r} i-\phi_i\] \(l,r\leq 10^{12},\ r-l\leq 10^6\) 杜教筛似乎做不了. 然后再看\(l\),\(r\ ...

  7. jmeter测试https请求之导入证书

    jmeter测试https请求   公司最近在搞全站HTTPS改造,进一步提高网站的安全性,防止运营商劫持.那么,改造完成后,所有前后端的URL将全部为https. So ,研究下怎么用Jmeter访 ...

  8. 命令——tree

    tree——以树形结构显示目录文件 [root@centos71 ~]# yum provides tree Loaded plugins: fastestmirror Loading mirror ...

  9. HTML和CSS实现图片翻转效果

    实现图片翻转,首先来分析一下我们希望实现的是怎样的翻转效果?又该如何去实现呢? 一.希望实现的效果 页面上的图片在光标悬停在上面的时候会发生翻转效果,翻转过后显示出背面的说明文字. 鼠标没有悬停在上面 ...

  10. 如何生成各种mif文件,绝对经典!!!

    mif文件生成模板,只需要5步,很简单!!!!! 先说明如何操作,1-2-3-4-5步,后面附上模板!!! 下面以汉字去模演示过程: 1.取模软件设置:注意这里是设置的输出数据的格式!!!!!!!!! ...