Singular Value Decomposition (SVD)
Projection
考虑有 n 个 d 维的向量 a1,a2,…an,这些向量可以用矩阵 A=[a1T;…;anT] 来表示,A∈Rn×d。同时有一个 d 维的投影向量 v。

寻找投影向量的目标为:最大化投影后的长度的平方和,即:
v∗=arg∥v∥=1maxi∑pi2=arg∥v∥=1maxi∑(aiTv)2=arg∥v∥=1max∥Av∥2
-
PCA:我们可以发现这个目标和 PCA 非常相似,PCA 只是多了一个将矩阵 A 去中心化的操作。
-
特征值分解:如果对于矩阵 ATA
⇒⇒ATAv=λvvTATAv=λ∥Av∥2=λ
可以看出相当于求 Σ=ATA 的特征向量。
在寻找投影向量的过程中,我们可以要求各个投影向量正交,从而得到一组投影向量,这一组投影向量可以构成一个子空间。
v1v2vk=arg∥v∥=1max∥Av∥2=arg∥v∥=1v⊥v1max∥Av∥2…=∥v∥=1v⊥v1,v2,…,vk−1argmax∥Av∥2
在二维情况下得到的结果可能如图所示。

同时当 k=rank(A)+1 时,有:
∥v∥=1v⊥v1,v2,…,vk−1argmax∥Av∥2=0
上述贪婪算法找到的其实就是全局最优解:
V=arg∥vi∥=1,∀ivi⊥vj,∀i=jmaxi=1∑k∥Avi∥2
Notation
AV=[a1T;…;anT]=[v1,…,vk]
- Avi: projection of A=[a1T;…;anT] on vi
- di=∥Avi∥: norm of projection ⇒D=d1⋮00…⋱0dk−1000dk
- ui=∥Avi∥Avi=di1Avi: normalized projection ⇒U=[u1,…,uk]
可以证明
A=UDVT=i=1∑kdiuiviT
- U: left singular vectors
- D: singular values
- V: right singular vectors
图中 k=rank(A),蓝色部分为 0。
Proof
下面开始证明:
引理:矩阵 A 和 B 相同,当且仅当对于所有向量 v,有 Av=Bv。
利用 viTvj=0 和 viTvi=1,有
i=1∑kdiuiviTvj=djuj
带入 uj=dj1Avj
i=1∑kdiuiviTvj=Avj
由于任意向量 v 都可以被 v1,…vk 以及 null space 中的 v~ 表示 (这里利用了 k=rank(A)),因此
i=1∑kdiuiviTv=Av
根据引理,得到
A=i=1∑kdiuiviT
Norm based on SVD
矩阵的 norm 是利用 SVD 分解得到的矩阵 D 定义的。矩阵的 lp norm 可以写成:
A=UDVT=i=1∑kdiuiviTNp(A)=(i=1∑kdip)p1
下面是几个比较重要的 p:
- p=0:A 的秩
- p=1:nuclear norm ∥A∥∗=∑i=1kdi
- nuclear norm 通常用于估计矩阵的秩,因为其在优化问题中更容易求解。比如要最小化秩,那么在目标函数中可以最小化 nuclear norm。
- p=2:Frobenius norm ∥A∥F=trace(AAT)=∑i=1kdi2
- p=∞:spectral norm ∥A∥2=maxidi
- spectral normalization 在深度学习中为一种较为常用的 normalization 的方法。
Application of SVD
rank-k appoximation
原矩阵 rank(A)=k,我们希望找到一个新的矩阵 A~,有 rank(A~)=r<k,即:
A~mins.t.∥A~−A∥F2rank(A~)=r
该目标存在闭式解:
- 对 A 做 SVD 分解:A=UDVT
- 将 D 中的第 r+1,…k 个奇异值置零,得到 D~
- A~=UD~VT 即为解。
该技术可以被用在图像压缩中,比如原图 A 的体积为 n×m;变成 A~=UD~VT 后,矩阵 U,D~,V 的形状分别为 n×r,r×r,r×m,又 D~ 为对角阵,因此总体积为 r×(1+n+m)。
以下为一张 n=400,m=765 的图片,如果压缩至 r=50,压缩率为:
400×76550×(1+400+765)≈0.19
压缩后效果如图:

latent semantic analysis
SVD 还可以用于做语义分析。假如 A 为如下 term-document matrix:

对其作 SVD 分解得到:

其中的 1,2,3,4,5 可以理解为不同的 topic。如果想要分析两个 document 之间的相关性,仅仅考虑 term 是不合适的,还需要挖掘其中 topic 的关系。

比如只考虑矩阵 A,那么
Simcos(d2,d3)=1+1×10×1+1×0+1×0=0
但是如果得到了 VT,那么
Simcos(d2,d3)=0.282+0.532×0.202+0.1920.28×0.20+0.53×0.19≈0.94
可以看出得到了完全不同的结果。
Eigen Decomposition
对于矩阵 M∈Rn×n,有 Mv=λv,λ 为特征值,v 为特征向量。
Relation to SVD
如果 M 为对称矩阵,那么可以写成 M=ATA。对 A 做 SVD 分解,得到:
A=UDVT
那么有
M=ATA=(VDTUT)(UDVT)=V(DTD)VT≡VΣVT
⇒MV=VΣVTV=VΣMv=λv
由 DTD=Σ 知 λ=d2,且特征向量 v 即为 V 中的列向量。
或者也可以从向量投影的角度理解,这一点已经在 Projection 一节中提及。
Eigen Decomposition
Mx=λx⇒(M−λI)x=0
想要求解 λ,即求解方程 det(M−λI)=0
相关性质:
trace(M)=i∑λidet(M)=i∏λi
Application
可以用于 PCA 和 CCA。
Canonical Correlation Analysis
CCA 目标为:
α,βmaxs.t.(∑iαTxixiTα)(∑iβTyiyiTβ)∑iαTxiyiTβN1i∑αTxixiTα=1,N1i∑βTyiyiTβ=1.
写出拉格朗日函数:
Lα,β,λ1,λ2=i∑αTxiyiTβ−λ1(i∑αTxixiTα−N)−λ2(i∑βTyiyiTβ−N)
然后分别求导:
∂α∂L=0⇒i∑xiyiTβ=2λ1i∑xixiTα∂β∂L=0⇒i∑yixiTα=2λ2i∑yiyiTβ
可以证明 λ1=λ2,因此方程组可写成:
[0∑iyixiT∑ixiyiT0][αβ]=2λ[∑ixixiT00∑iyiyiT][αβ]
⇒[∑ixixiT00∑iyiyiT]−1[0∑iyixiT∑ixiyiT0][αβ]=2λ[αβ]