SVD

2019-11-27  本文已影响0人  Joker64

摘要

SVD (Singular Value Decomposition,奇异值分解)揭示了线性变换的本质,对一个矩阵进行奇异值的过程,就是将一个复杂的,难以直观理解的线性变换,分解为多步直观的变换的过程。矩阵的奇异值分解,可以与傅里叶变换类比。

1 SVD的涵义

我们已经知道矩阵A的奇异值分解形式如下
A=U \Sigma V^T
其中UV均为酉矩阵(正交矩阵在复数域的拓展,即U^T=U^{-1})。
事实上,对于矩阵A的奇异值分解,将一个通用线性变换分解成为了“旋转\to 拉伸 \to 旋转”三个简单的变换,接下来将通过一个实例展示这个过程。
\begin{aligned} A &= \begin{bmatrix} 1&-2\\ 1&2\\ \end{bmatrix} \\ &=\begin{bmatrix} -0.707&-0.707\\ 0.707& -0.707\ \end{bmatrix} \begin{bmatrix} 2.828&0\\ 0& 1.414\ \end{bmatrix} \begin{bmatrix} 0&-1\\ 1& 0\ \end{bmatrix} \end{aligned}
为了展示线性变换(矩阵A)的效果,我们以单位圆为载体。若\vec x_i表示单位圆上的任意一点,则对单位圆上的每一点进行运算:A \vec x_i,变换效果如下:

单位圆线性变换效果
线性变换分解
奇异值分解流程
由此可见,奇异值的大小在线性变换中的作用极为重要。在上述实例中,若奇异值,则经过拉伸变换之后的单位圆将接近一条直线,这条直线就是当时对应的线性变换结果。

2 SVD的求解

由于“实对称矩阵必定可以正交对角化”,则对于任意矩阵A的奇异值分解过程可按照下述流程进行。
\begin{align} AA^T= U \Sigma^2 U^T \\ A^TA = V\Sigma^2V^T \end{align}

A=U\Sigma V^T

AV = U \Sigma

\begin{align} &U = \begin{bmatrix} \vec u_1&\vec u_2 &\dots &\vec u_i \end{bmatrix} \\ &V = \begin{bmatrix} \vec v^T_1\\ \vec v^T \\ \vdots \\ \vec v^T_j \end{bmatrix} \\ &\Sigma = \begin{bmatrix} \sigma_1 & 0 & \dots\\ 0&\sigma_2 & \dots \\ \dots & \dots &\sigma_k \end{bmatrix} \end{align}
其中\vec u_i \vec v_i均为列向量。
则有
\begin{align} &A\vec v_i=\sigma_i \vec u_i \end{align}

3 SVD的应用

上一篇下一篇

猜你喜欢

热点阅读