SVD 分解是线性代数的一大亮点。
1. SVD 分解
A 是任意的 m×n 矩阵,它的秩为 r,我们要对其进行对角化,但不是通过 S−1AS。S 中的特征向量有三个大问题:它们通常不是正交的;并不总是有足够的特征向量;Ax=λx 需要 A 是一个方阵。A 的奇异向量很好地解决了上述所有问题。
代价是我们需要两组奇异向量,一组是 u, 一组是 v。u 是 AAT 的特征向量,v 是 ATA 的特征向量,因为这两个矩阵都是对称矩阵,我们可以选出一组标准正交的特征向量。即:
AAT=UΣ2UTATA=VΣ2VT
证明:
让我们从 ATAvi=σi2vi 开始,两边同乘以 viT,有:
viTATAvi=σi2viTvi=σi2→∣∣Avi∣∣=σi
这说明向量 Avi 的长度为 σi。然后两边同乘以 A,有:
AAT(Avi)=σi2(Avi)→ui=Avi/σi
这说明 Avi 是 AAT 的特征向量,除以其长度 σi 我们便可以得到单位向量 ui。这些 u 还是正交的,因为:
(Avi)TAvj=viT(ATAvj)=viT(σj2vj)=σj2viTvj=0
奇异向量 v 位于 A 的行空间,而结果 u 位于 A 的列空间,奇异值都是正数。然后 Avi=σiui 一列一列告诉我们 AV=UΣ,
A⎣⎡v1v2⋯vr⎦⎤=⎣⎡u1u2⋯ur⎦⎤⎣⎡σ1σ2⋯σr⎦⎤
(m×n)(n×r)=(m×r)(r×r)
这是 SVD 的核心,但不仅仅到此为止,这些 v 和 u 只负责矩阵 A 的行空间和列空间,我们需要 n−r 个额外的 v 和 m−r 个额外的 u,分别来自零空间 N(A) 和左零空间 N(AT)。它们可以是这两个空间的标准正交基,当然它们也自动正交于前 r 个 v 和 u。将这些新的向量包含进 V 和 U,我们依然有 $AV=U\Sigma $:
新的 Σ 是 m×n 的,由之前的 r×r 矩阵 Σr 和 m−r 行零和 n−r 列零组成。此时,V 和 U 分别是大小为 n,m 的方阵,有 V−1=VT,则 AV=UΣ 就变成了
A=UΣVT
这也就是 SVD 分解。当我们将奇异值降序排列时,上述的方程按照重要性给出了矩阵 A 的 r个秩为 1 的小片。
2. 图像压缩
这是一个数据的时代,并且数据经常存储在一个矩阵中。数字图像就是一个存储像素值的矩阵,比如一个大小为 256×512 的图像总共有 28∗29=217 个元素。单独存储这一个图像对计算机来说是没问题的,但在 CT 和 MR 扫描过程中会产生大量的数据,又或者它们是电影中的帧图片,那么需要存储的数据量将会非常大。高清晰度的数字电视特别需要压缩,否则设备无法实时跟踪。
什么是压缩呢?我们想要用更少的数字代替这 217 个元素,但同时不损失图像质量。一个简单的办法就是用一组中四个元素的均值来替换它们,这就是 4:1 压缩。但是如果我们想进一步压缩,比如 16:1,那么我们的图像就会有一些块效应,我们想要用一个人的视觉系统注意不到的方式进行压缩。
很多方法被提出来解决这个问题,比如用在 jpeg 中的傅里叶变换以及用在 JPEG2000 中的小波变换。这里我们尝试一个 SVD 的方法:用一个秩为 1 的矩阵,一列乘以一行,来替换原始的 256×512 矩阵。这样奏效的话,压缩比将会是 (256*512)/(256+512) 超过 170:1。实际上,我们会用 5 个秩为 1 的矩阵,这时候压缩比仍然有 34:1,而更重要的问题是图像质量。
为什么会牵涉到 SVD 呢?矩阵 A 最好的秩 1 近似为 σ1u1v1T,使用了最大的奇异值 σ1。最好的秩 5 近似为 σ1u1v1T+σ2u2v2T+⋯+σ5u5v5T,SVD 按照降序放置矩阵 A 的小片。
3. 基和 SVD
让我们以一个 2×2 的矩阵开始,
它的秩为 2,是可逆的。我们想要 v1,v2 是正交的单位向量,同时使得 Av1,Av2 正交。没有一个正交矩阵 Q 可以让 Q−1AQ 对角化,我们需要 U−1AV。
有一个简单的办法可以移除 U 而只留下 V,
ATA=(UΣVT)T(UΣVT)=VΣTΣVT
这就和 A=QΛQT 一样,只不过这里的对称矩阵不是 A 本身,而是 ATA ,V 的列是 ATA 的特征向量。然后我们可以利用 u=Av/σ 来得到 U,也可以直接得到,
AAT=(UΣVT)(UΣVT)T=UΣΣTUT
矩阵 U 和 V 包含了四个子空间的标准正交基:
以下的例子很好地展示了矩阵的四个字空间和 SVD 的关系。
4. 特殊矩阵的特征值和特征向量
获取更多精彩,请关注「seniusen」!