数值线性代数:奇异值分解SVD

本文记录计算矩阵奇异值分解SVD的原理与流程。

注1:限于研究水平,分析难免不当,欢迎批评指正。

零、预修

0.1 矩阵的奇异值

A\in \mathbb{R}^{m\times n}列满秩矩阵,若\boldsymbol{A}^{T}\boldsymbol{A}的特征值为\lambda_{1}\geq \lambda_{2}\geq \cdots \lambda_{r}>0,则称\sigma_{i}=\sqrt{\lambda_{i}}为矩阵\boldsymbol{A}的奇异值。

0.2 SVD(分解)定理

\boldsymbol{A}\in \mathbb{R}^{m\times n},则存在正交矩阵\boldsymbol{U}\in \mathbb{R}^{m\times m}\boldsymbol{V}\in \mathbb{R}^{n\times n},使得

\boldsymbol{U}^{T}\boldsymbol{A}\boldsymbol{V}=\begin{pmatrix} \sum_{r} & 0\\ 0& 0 \end{pmatrix}

其中,\sum_{r}=diag\left ( \sigma_{1},\sigma_{2},\cdots ,\sigma_{r} \right )\sigma_{1}\geq \sigma_{2}\geq \cdots \sigma_{r}>0\sigma_{i}即为矩阵\boldsymbol{A}的奇异值。

考虑下述两种情形:

  • 情形1:\tilde{\boldsymbol{A}}=\boldsymbol{A}^{T}\boldsymbol{A}

\left (\boldsymbol{U}^{T}\boldsymbol{A}\boldsymbol{V} \right )^{T}\left ( \boldsymbol{U}^{T}\boldsymbol{A}\boldsymbol{V} \right )=\boldsymbol{V}^{T}\left (\boldsymbol{A}^{T}\boldsymbol{A} \right )\boldsymbol{V}=\begin{pmatrix} \sum_{r}^{2} &\boldsymbol{0} \\ \boldsymbol{0}& \boldsymbol{0} \end{pmatrix}

其中,\sum_{r}^{2}=diag\left ( \sigma_{1}^{2},\sigma_{2}^{2},\cdots ,\sigma_{r}^{2} \right )=diag\left ( \lambda_{1},\lambda_{2},\cdots ,\lambda_{r} \right )

由此可以看出,\tilde{\boldsymbol{A}}=\boldsymbol{A}^{T}\boldsymbol{A}\in \mathbb{R}^{n\times n},通过计算矩阵\boldsymbol{A}的奇异值\sigma_{i},便可矩阵\tilde{\boldsymbol{A}}的特征值\lambda_{i}=\sigma_{i}^{2},而矩阵\boldsymbol{V}即为矩阵\tilde{\boldsymbol{A}}的特征向量

  • 情形2:\boldsymbol{A}^{T}=\boldsymbol{A}, m=n

\boldsymbol{A}\boldsymbol{x}=\sigma \mathbf{x},则\boldsymbol{A}^{T}\boldsymbol{A}\boldsymbol{x}=\sigma \boldsymbol{A}^{T} \boldsymbol{x}=\sigma \boldsymbol{A}\boldsymbol{x}=\sigma ^{2}\boldsymbol{x},也就是说,\sigma^{2}\boldsymbol{A}^{T}\boldsymbol{A}的特征值,\boldsymbol{x}也是\boldsymbol{A}^{T}\boldsymbol{A}的特征向量。同时考虑到实对称矩阵\boldsymbol{A}的秩为n,所以\boldsymbol{A}^{T}\boldsymbol{A}的特征值/特征向量也是\boldsymbol{A}的特征值/特征向量。

0.3 Householder变换

\boldsymbol{w}\in \mathbb{R}^{n},且\boldsymbol{w}^{T}\boldsymbol{w}=1,定义\boldsymbol{H}=I-2\boldsymbol{w}\boldsymbol{w}^{T}为Householder变换。

对于非零向量\boldsymbol{x}\in \mathbb{R}^{n},可构造\boldsymbol{H}=I-2\boldsymbol{w}\boldsymbol{w}^{T},使得

Hx=\alpha \boldsymbol{e}_{1}

其中,\alpha =\pm \left \| x \right \|_{2}\boldsymbol{w}=\frac{x-\alpha e_{1}}{\left \| x-\alpha e_{1} \right \|_{2}}\boldsymbol{e}_{1}^{T}=\begin{pmatrix} 1 &0 &\cdots &0 \end{pmatrix}\in \mathbb{R}^{1\times n}

\boldsymbol{x}=\begin{pmatrix} \boldsymbol{x}^{\left ( 1 \right )}\\ \boldsymbol{x}^{\left ( 2 \right )} \end{pmatrix}\boldsymbol{x}^{\left ( 1 \right )}=\boldsymbol{x}\left ( 1:k-1 \right )\boldsymbol{x}^{\left ( 2 \right )}=\boldsymbol{x}\left ( k:n \right ),对于\boldsymbol{H}_{k}=\begin{pmatrix} \boldsymbol{I}_{k-1} & \boldsymbol{0}\\ \boldsymbol{0} & \mathbf{H}^{\left (k \right )} \end{pmatrix}

\boldsymbol{H}_{k}\boldsymbol{x}=\begin{pmatrix} \boldsymbol{I}_{k-1} & \boldsymbol{0}\\ \boldsymbol{0} & \mathbf{H}^{\left (k \right )} \end{pmatrix}\begin{pmatrix} x^{\left ( 1 \right )}\\ x^{\left ( 2 \right )} \end{pmatrix}=\begin{pmatrix} x^{\left ( 1 \right )}\\ \boldsymbol{H}^{\left ( k \right )}x^{\left ( 2 \right )}\end{pmatrix}

根据上述结论可知,可以构造\boldsymbol{H}^{\left (k \right )},使得\boldsymbol{H}^{\left ( k \right )}x^{\left ( 2 \right )}=\begin{pmatrix} -M\sigma _{k} & 0& 0& 0 \end{pmatrix}^{T}\in \mathbb{R}^{n-k+1}

具体来说,可按照下述流程进行操作:

M=max\left ( \left | x_{k} \right |,\left | x_{k+1} \right |,\cdots ,\left | x_{n} \right | \right )\\ x_{i}\leftarrow \frac{x_{i}}{M}\ \\ \sigma_{k}=sign\left ( x_{k} \right )\sum_{i=k}^{i=n}x_{i}^{2} \\ \boldsymbol{U}_{k}=\left ( \sigma_{k}+x_{k},x_{k+1},\cdots ,x_{n} \right )\in \mathbb{R}^{n-k+1} \\ \rho_{k}=\frac{1}{2}\boldsymbol{U}_{k}^{T}\boldsymbol{U}=\sigma_{k}\left ( \sigma_{k}+x_{k} \right )\\ \boldsymbol{H}^{\left ( k \right )}=\boldsymbol{I}-\frac{1}{\rho_{k}}\boldsymbol{U}_{k}\boldsymbol{U}_{k}^{T}=\boldsymbol{I}-\frac{\sigma_{k}+x_{k}}{\sigma_{k}}\frac{\boldsymbol{U}_{k}}{\sigma_{k}+x_{k}}\frac{\boldsymbol{U}_{k}^{T}}{\sigma_{k}+x_{k}}\in \mathbb{R}^{\left (n-k+1 \right )\times \left ( n-k+1 \right )}

由此,通过Householder变换,可以将某一列向量的部分连续元素约化为0。

0.4 Givens变换

\boldsymbol{e}_{1},\boldsymbol{e}_{2},\cdots ,\boldsymbol{e}_{n}是n维Euclid空间\mathbb{R}^{n}中的一组标准正交基,\forall x, y \in \mathbb{R}^{n},则在平面\left ( \boldsymbol{e}_{i}, \boldsymbol{e}_{j}\right )中存在旋转变换矩阵\boldsymbol{G}\left ( i,j,\theta \right ),满足

\boldsymbol{y}=\mathbf{G}\mathbf{x}

其中,

x=\begin{pmatrix} x\left ( 1:i-1 \right )\\ x_{i}\\ x\left ( i+1:j-1 \right )\\ x_{j}\\ x\left ( j+1:n \right ) \end{pmatrix}, y=\begin{pmatrix} x\left ( 1:i-1 \right )\\ 0\\ x\left ( i+1:j-1 \right )\\ \sqrt{x_{i}^{2}+x_{j}^{2}}\\ x\left ( j+1:n \right ) \end{pmatrix}

\boldsymbol{G}=\begin{pmatrix} \boldsymbol{I}_{i-1,i-1}& & & & \\ & cos\theta & & -sin\theta & \\ & & \boldsymbol{I}_{j-i-1,j-i-1}& & \\ & sin\theta & & cos\theta & \\ & & & & \boldsymbol{I}_{n-j,n-j} \end{pmatrix}

 cos\theta =\frac{x_{i}}{\sqrt{x_{i}^{2}+x_{j}^{2}}},sin\theta =\frac{-x_{j}}{\sqrt{x_{i}^{2}+x_{j}^{2}}},r=\sqrt{x_{i}^{2}+x_{j}^{2}}

由此可以看出,可以将向量的某个元素约化为0。

一、隐式QR计算矩阵奇异值分解

参考资料

Gene H. Golub. Matrix Computations

徐树方. 数值线性代数(第二版).  北京大学出版社, 2010.

Golub G. and Kahan W.. Calculating the Singular Values and Pseudo-Inverse of a Matrix. Journal of the Society for Industrial and Applied Mathematics: Series B, Numerical Analysis, 1965, 2(2) : 205-224.

Demmel J., Kahan W..Accurate Singular Values of Bidiagonal Matrices. SIAM Journal on Scientific and StatisticalComputing, 1990, 11(5):873-912.

P. A. Businger,G. H. Golub. Singular value decomposition of a complex matrix. communications of the acm, 1969.

猜你喜欢

转载自blog.csdn.net/qq_26221775/article/details/131916756
今日推荐