版权声明:本文原创,转载请留意文尾,如有侵权请留言,谢谢
引言
最近在看线性代数国外的相关教材,这么一比国内的教材只教了我们怎么解题,学数学好痛苦啊,看到奇异值分解,感觉可以融合前面学到的一些东西,所以写篇博客记录一下。
伴随
设\(T \in \mathcal{L}(V,
W)\),\(T\)的伴随(adjoint)是满足如下条件的函数\(T^{*}: W \to V\):对所有\(v \in V\)和所有\(w \in W\)均有\(<Tv, w> = <v, T^{*}w>\)。
我们可以通过求共轭转置来求伴随矩阵。
自伴算子
算子\(T \in \mathcal{L}(V)\)称为自伴(self-adjont)的,如果\(T = T^{*}\),也就是说,\(T \in \mathcal{L}(V)\)是自伴的,当且仅当对所有\(v, w \in V\)均有\(<Tv, w> = <v, Tw>\)。
正规算子
内积空间上的算子称为正规(normal)的,如果它和它的伴随是交换的,也就是说,\(T \in \mathcal{L}(V)\)是正规的,如果\(TT^{*}=T^{*}T\)。如果\(T\)是正规的,且\(v \in V\)是\(T\)的相应于本征值\(\lambda\)的本征向量,则\(v\)也是\(T^{*}\)的相应于本征值\(\overline{\lambda}\)的本征向量,对于\(R\)来说的话,本征值也是相同的。
自伴算子显然也是正规的,但不是自伴的也有可能是正规的,如下下面这个矩阵: \[ \] \[\begin{pmatrix} 2 & -3 \\ 3 & 2 \\ \end{pmatrix}\]
\[ \]
谱定理
谱定理(spectral theorem)是说关于\(V\)的某个规范正交基具有对角矩阵的算子是\(V\)上最好的算子,它们恰好是具有如下性质的算子\(T \in \mathcal{L}(V)\):\(V\)具有一个由\(T\)的本征向量组成的规范正交基。
具有上述性质的算子当\(F=C\)时恰好为正规算子,对于\(F=R\)时恰好为自伴算子。
等距同构
算子\(S \in \mathcal{L}(V)\)称为等距同构(isometry),如果对于所有\(v \in V\)均有\(\Vert Sv \Vert = \Vert v \Vert\),也就是,算子是同构的当且仅当它保持范数。
极分解
设\(T \in \mathcal{L}(V)\),则有一个等构同距\(S \in \mathcal{L}(V)\)使得\(T=S\sqrt{T^*T}\)。
奇异值
设\(T \in
\mathcal{L}(V)\),则\(T\)的奇异值就是\(\sqrt{T^{*}T}\)的本征值,而且每个本征值\(\lambda\)都会重复\(dimE(\lambda,\sqrt{T^{*}T})\)次。
因为\(T\)的奇异值(Singular
Value)都是正算子\(\sqrt{T^{*}T}\)的本征值,所以它们都是非负的。
奇异值分解
设\(T \in \mathcal{L}(V)\)有奇异值\(s_1,...,s_n\),则\(V\)有两个规范正交基\(e_1,...e_n\)和\(f_1,...,f_n\)使得对每个\(v \in V\)均有\(Tv=s_1 \langle v_1,e_1 \rangle f_1 + ... + s_n \langle v_n,e_n \rangle f_n\)。
证明
我们证明一下奇异值分解(Singular Value
Decomposition)的过程,对\(\sqrt{TT^{*}}\)应用谱定理可知,有\(V\)的规范正交基\(e_1,...,e_n\)使得对\(j=1,...,n\)均有\(\sqrt{TT^{*}}e_j=s_je_j\)。
对每个\(v \in V\)均有: \[
v = \langle v_1,e_1 \rangle e_1 + ... + \langle v_n,e_n \rangle e_n
\] 把\(\sqrt{TT^{*}}\)作用到这个等式的两端: \[
\sqrt{TT^{*}}v = s_1\langle v_1,e_1 \rangle e_1 + ... + s_n\langle
v_n,e_n \rangle e_n
\] 由极分解可知存在等距同构\(S \in
\mathcal{L}(V)\)使得\(T=S\sqrt{TT^{*}}\),把\(S\)作用到上式两端: \[
\sqrt{TT^{*}}v = s_1\langle v_1,e_1 \rangle S_1 e_1 + ... + s_n\langle
v_n,e_n \rangle S_n e_n
\] 对每个\(j\)设\(f_j=Se_j\),因为\(S\)是等距同构的,所以\(f_1,...,f_n\)是\(V\)的规范正交基,上面的等式变为: \[
\sqrt{TT^{*}}v = s_1\langle v_1,e_1 \rangle f_1 + ... + s_n\langle
v_n,e_n \rangle f_n
\]
意义
那么这样做的意义是啥呢,我们在研究从一个向量空间到另一个向量空间的线性映射时,讨论了线性映射关于第一个向量空间的基和第二个向量空间的基的矩阵,在研究算子(即从一个向量空间到其自身的线性映射)时,我们几乎总是让同一个基扮演这两种角色。
奇异值分解给了我们一个难得的机会,对算子的矩阵同时用到两种不同的基,为此,设\(T \in \mathcal{L}(V)\),设\(s_1,...,s_n\)为它的奇异值,\(e_1,...e_n\)和\(f_1,...,f_n\)都是它的规范正交基使得奇异值分解成立,因为对每个\(j\)都有\(Te_j=s_jf_j\),所以: \[
M(T,(e_1,...e_n),(f_1,...,f_n)) =
\begin{pmatrix}
s_1 & & 0 \\
& \ddots & \\
0 & & s_n \\
\end{pmatrix}
\]
所以说,只要我们允许在处理算子的时候用两个不同的基,而不是像通常只用单独一个基,那么\(V\)上每个算子关于\(V\)的某些规范正交基都有对角矩阵。
一般情况
我们看看维基百科上是怎么描述奇异值分解的。
假设\(M\)是一个\(m \times
n\)阶矩阵,其中的元素全部属于域\(F\),也就是实数域或复数域。如此则存在一个分解使得\(M=U \Sigma V^{*}\),其中\(U\)是\(m \times
m\)阶酉矩阵,\(\Sigma\)是\(m \times n\)阶非负实数对角矩阵,而\(V^{*}\)是n×n阶酉矩阵(逆矩阵等于共轭转置矩阵,正规矩阵,实数域下为正交矩阵)。这样的分解就称作\(M\)的奇异值分解。\(\Sigma\)对角线上的元素\(\Sigma_i\)即为\(M\)的奇异值。常见的做法是将奇异值由大而小排列,如此\(\Sigma\)便能由\(M\)唯一确定了(虽然\(U\)和\(V\)仍然不能确定。)
我们看看,其实维基里的描述,和我们之前描述的奇异值分解是一样的:
- V的列组成一组\(M\)的正交“输入”或“分析”的基向量,这些向量是\(M^{*}M\)的特征向量,因为\(M^{*}M = (U \Sigma V^{*})^{*}(U \Sigma V^{*}) = V \Sigma^{*} U^{*} U \Sigma V^{*} = V (\Sigma^{*} \Sigma) V^{*}\)。
- U的列组成一组\(M\)的正交“输出”的基向量,这些向量是\(MM^{*}\)的特征向量,因为\(MM^{*} = (U \Sigma V^{*})(U \Sigma V^{*})^{*} = U \Sigma V^{*} V \Sigma^{*} U^{*} = U (\Sigma \Sigma^{*}) U^{*}\)。
- \(\Sigma\)对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的"膨胀控制"。这些是\(M^{*}M\)及\(MM^{*}\)的特征值的非负平方根,并与\(U\)和\(V\)的行向量相对应。
应用
奇异值和奇异值分解有很多应用,包括在计算线性代数中的应用.为了计算算子\(T\)的奇异值的数值近似值,首先计算\(T^{*}T\),然后计算\(T^{*}T\)的近似本征值(计算正算子的近似本征值有很好的技术),\(T^{*}T\)的这些(近似)本征值的非负平方根就是\(T\)的(近似)奇异值,也就是说,无需计算\(T^{*}T\)的平方根就能得出\(T\)的近似奇异值。
用于降维
对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的\(k\)个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说:
\[
M_{m \times n} = U_{m \times m} \Sigma_{m \times n} V_{n \times n}
\approx U_{m \times k} \Sigma_{k \times k} V_{k \times n}
\] 其中\(k\)要比\(n\)小很多,也就是一个大的矩阵\(M\)可以用三个小的矩阵\(U_{m \times k},\Sigma_{k \times k},V_{k \times
n}\)来表示。
由于在降维上重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。
在LDA中的应用
如之前在线性判别分析(Linear Discriminant Analysis)浅谈所谈到的LDA算法,为了数值解的稳定性,在求\(S_w\)是就用到了奇异值分解。
Conclusion
奇异值分解(SVD)作为线代中一种常见的方法,我们了解了它的推导方法,也就理解了它的原理,在很多机器学习算法中都有它的身影,特别是在现在的大数据时代,由于SVD可以实现并行化,因此更需要有好好理解的必要。