04 |   矩阵分解 
  约  2510   个字   3   行代码   预计阅读时间  10   分钟
 
LDU decomposition 
L: lower triangular matrix 
D: diagonal matrix 
U: upper triangular matrix 
 
A   =   [ 1   2   3 ;   4   5   6 ;   7   8   9] ; 
[ L ,   D ,   U ]   =   ldu ( A ); 
 
变换矩阵 
正交变换 
标准正交变换:最后变换后的向量的协方差矩阵是对角矩阵
高度相关的向量进行解相关操作
\[
\mathbb{E}(\omega \omega^H) = \Sigma\\
\mathbb{E}(\Phi (x-b)(x-b)^H \Phi^H) = \Sigma\\
\Phi \mathbb{E}((x-b)(x-b)^H) \Phi^H = \Sigma\\
\]
令
\[
b = m_x
\]
\[
\Phi \mathbb{E}((x-m_x)(x-m_x)^H) \Phi^H = \Sigma\\
\Phi {\color{red}{C_x}} \Phi^H = \Sigma\\
\Phi {\color{red}{U \Sigma U^H}} \Phi^H = \Sigma\\
\implies \Phi U  = I\\
\implies\Phi = U^H\\
\]
所以标准正交变换
\[
U^H(x-m_x) = \omega
\]
迷向圆变换 
最后变换后的向量的协方差矩阵是单位矩阵
随机向量不仅变成了独立的,能量还是  1 ,想当于是白噪声
所以需要想办法把  \(\Sigma\)    变成单位矩阵
\[
\Sigma^{-\frac{1}{2}} \Sigma \Sigma^{-\frac{1}{2}} = I
\]
\[
\begin{cases}
\tilde{\Phi} = \Sigma^{-\frac{1}{2}} \Phi\\
b = mx
\end{cases}
\]
\[
\omega' = \Sigma^{-\frac{1}{2}} U^H(x-m_x)
\]
KL   变换 
与  PCA   本质是一样的,但是从信号重构的视角出发
\[
\omega = U^Hx \quad \text{标准正交变换}
\]
信号的重构过程为
\[
\tilde{\omega} = U_M^Hx \longrightarrow \hat{x} = U_M \tilde{\omega}
\]
重构的最优性
\[
\begin{aligned}
e &= x- \hat{x} \\
  &= U\omega - U\tilde{\omega} \\
  &= U(\omega - \tilde{\omega}) \\
  &= \sum_{i=1}^D u_i \omega_i - \sum_{i=1}^M u_i \omega_i \\
  &= \sum_{i=M+1}^D u_i \omega_i \\
  &= \begin{bmatrix}U_{M+1} & \cdots & U_D\end{bmatrix} \omega_e \\
  &= U_e
\end{aligned}
\]
\[
\begin{aligned}
\mathbb{E}(e^H e) 
    &= \mathbb{E}(\omega_e^H U_e^H U_e \omega_e) \\
    &= \mathbb{E}(\omega_e^H \omega_e) \\
    &= \sum_{i=M+1}^D |\omega_i|^2 \\
    &= \sum_{i=M+1}^D \lambda_i \\
\end{aligned}
\]
EVD |   特征分解 
处理的一般是 
\[
A = U \Sigma U^H
\]
A:数据协方差矩阵 
U   拿出来之后,可以用来降维; 
可以用来去相关  (   标准正交变换  ) 
 
\[
\{y_n\}_{n=1}^N \xrightarrow{\text{求解协方差}} c = \frac1{N-1} \sum^{N}_{n=1} y_n y_n^H \xrightarrow{\text{EVD}} 下游任务
\]
绕不开的操作是求解协方差矩阵
计算方法 
全网最快速的特征向量暴力求法(纯干货技巧)_   哔哩哔哩  _bilibili 
相似对角化太难算,哈  -   凯定理怒斩  A   的  n   次方! (细节拉满了)_   哔哩哔哩  _bilibili 
求特征值 :
计算矩阵  \(A\)    的特征值  \(\lambda_i\)   ,这些特征值将构成对角矩阵  \(\Lambda\)    的对角线元素。 
 
求特征向量 :
对于每个特征值  \(\lambda_i\)  ,求解特征向量  \(v_i\)  ,这些特征向量将构成矩阵  \(P\)    的列。 
 
构造对角矩阵和特征向量矩阵 :
\[
\Lambda = \begin{bmatrix}
\lambda_1 & 0 & \cdots & 0 \\
0 & \lambda_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \lambda_n
\end{bmatrix}
\]
\[
P = \begin{bmatrix}
| & | & & | \\
v_1 & v_2 & \cdots & v_n \\
| & | & & |
\end{bmatrix}
\]
验证对角化 :
验证  \(A = P \Lambda P^{-1}\)    是否成立。 
 
Hermitian   矩阵特征分解 
设  \(X\)    是一个  \(n \times n\)    的  Hermitian   矩阵  ,   特征值分解  (Eigenvalue Decomposition, EVD)   可以写成  :
\[
X = U \Sigma U^H = [u_1 \quad u_2 \cdots \quad u_n] \begin{bmatrix}
\lambda_1 & 0 & \cdots & 0 \\
0 & \lambda_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \lambda_n
\end{bmatrix} \begin{bmatrix}
u_1^H \\
u_2^H \\
\vdots \\
u_n^H
\end{bmatrix} = \sum_{i=1}^{n} \lambda_i u_i u_i^H
\]
这里  : 
\(u_1, u_2, ..., u_n\)  是矩阵的特征向量; \(\lambda_1, \lambda_2, ..., \lambda_n\)  是矩阵的特征值
PCA |   主成分分析 
线性降维写成矩阵乘法形式:
\[
\Phi x_n=z_n
\]
投影矩阵:\(\Phi\in R^M\times D\)  
原始数据向量:\(\mathbf{x}_n\in R^{D\times1}\)  
降维后的向量:\(\mathbf{z}_n\in R^M\times1\)  
 
主成分分析  (PCA): 
PCA   是一种基于特征分解的统计技术,用于简化数据集的复杂性,同时保留尽可能多的方差  (   信息  ) 。它通过找到数据集中方差最大的方向  (   主成分  ),   将高维数据投影到这些方向上,实现降维。
对于样本  \(\{x_n\}_{n=1}^N\)  ,PCA   的步骤如下:
计算数据均值向量(或中心化) :  
 
\[
\mu = \frac{1}{N} \sum_{n=1}^N x_n
\]
估计协方差矩阵:  
 
\[
\widehat{C} = \frac{1}{N-1} \sum_{n=1}^N (x_n - \mu)(x_n - \mu)^H
\]
对协方差矩阵  \(\widehat{C}\)    进行特征值分解  EVD :  
 
\[
\widehat{C} = U \Sigma U^H
\]
或者写为
\[
\widehat{C} = 
\begin{bmatrix}
u_1 & u_2 & \cdots & u_n
\end{bmatrix}
\begin{bmatrix}
\lambda_1 & 0 & \cdots & 0 \\
0 & \lambda_2 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & \lambda_n
\end{bmatrix}
\begin{bmatrix}
u_1 & u_2 & \cdots & u_n
\end{bmatrix}^H
\]
其中  \(\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n\)  。
降维:  
若从 \(D\)  维降到 \(M\)  维,则选择最大的前 \(M\)  个特征值对应的特征向量,构成投影矩阵: 
 
\[
\Phi_{M \times D} \triangleq
\begin{bmatrix}
u_1^H \\
u_2^H \\
\vdots \\
u_M^H
\end{bmatrix}
\]
 
核心思想:降维后,数据方差最大
上述过程等价于求解二次型的有约束极值问题:
\[
\begin{aligned}
&\text{证明:} \\
&\text{假设 } M=1, \\
&\quad Var(z_n) = E[(z_n - \overline{z_n})(z_n - \overline{z_n})^H] \\
&\quad = E\left[(\Phi_1^H x_n - \Phi_1^H \overline{x}_n)(x_n^H \Phi_1 - \overline{x_n^H} \Phi_1)\right] \\
&\quad = \Phi_1^H E\left[(x_n - \overline{x}_n)(x_n^H - \overline{x_n^H})\right] \Phi_1 \\
&\quad = \Phi_1^H C \Phi_1 \\
&\text{约束优化问题:} \\
&\quad \max_{\Phi_1} \Phi_1^H C \Phi_1 \\
&\quad \text{Subject to} \quad \Phi_1^H \Phi_1 = 1
\end{aligned}
\]
这个问题可以通过拉格朗日乘数法求解。构造拉格朗日函数:
\[
f(\Phi_1) \triangleq \Phi_1^H C \Phi_1 + \lambda (1 - \Phi_1^H \Phi_1)
\]
对  \(f(\Phi_1)\)    关于  \(\Phi_1\)    求导并令其为零:
\[
C \Phi_1 = \lambda \Phi_1
\]
即  \(\Phi_1\)    是  \(C\)    的一个特征向量。此时:
\[
f(\Phi_1) = \Phi_1^H C \Phi_1 = \lambda \Phi_1^H \Phi_1 = \lambda
\]
因此,取最大的特征值  \(\lambda_1\)    时  \(f(\Phi_1)\)    最大,此时  \(\Phi_1\)    为最大特征值对应的特征向量  \(\mathbf{u}_1\)  。
SVD |   奇异值分解 
能否跳过协方差矩阵的计算?直接对数据向量  \(\{y_n\}_{n=1}{N}\)    进行操作?
如何对非方阵进行分解?
\[
A = U \Sigma V^H
\]
\(U^HU = UU^H = I\)    左奇异向量 
\(V^HV = VV^H = I\)    右奇异向量 
\(\Sigma \in \mathbb{C}^{m \times n}\)    对角线上的元素是奇异值,不是方阵 
 
\[
\Sigma_{m\times n} = 
\begin{bmatrix}
\sigma_1 & 0 & \cdots & 0 & 0 & \cdots & 0 \\
0 & \sigma_2 & \cdots & 0 & 0 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots & \vdots & & \vdots \\
0 & 0 & \cdots & \sigma_r & 0 & \cdots & 0 \\
0 & 0 & \cdots & 0 & 0 & \cdots & 0 \\
\vdots & \vdots & & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & 0 & 0 & \cdots & 0 \\
\end{bmatrix}_{m\times n}= \begin{bmatrix}
\Sigma_r & 0_{r, n-r} \\
0_{m-r, r} & 0_{m-r, n-r}
\end{bmatrix}_{m\times n}\\
\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0 \quad \text{且} \quad \text{rank}(A) = r
\]
\(\sigma_i\)    是奇异值,\(r\)    是秩
性质 
\[
\begin{aligned}
&\text{Y是方阵} \qquad && Y = U\Sigma U^H \\
&&& Y^2 = U\Sigma^2 U^H \\[1.5ex]
&\text{Y不是方阵} \quad Y_{m\times n} \qquad && Y = U\Sigma V^H \\
&&& YY^H = U\Sigma V^H V \Sigma^H U^H \\
&&& \phantom{YY^H} = U \Sigma \Sigma^H U^H \\
&&& \phantom{YY^H} = U
    \begin{bmatrix}
        \Sigma_r & 0 \\
        0 & 0
    \end{bmatrix}
    \begin{bmatrix}
        \Sigma_r^H & 0 \\
        0 & 0
    \end{bmatrix}
    U^H \\
&&& \phantom{YY^H} = U \Sigma^2 U^H \\
\end{aligned}
\]
计算方法 
\[
\{y_n\}_{n=1}^N \xrightarrow{\text{SVD}} Y = U\Sigma V^H \rightarrow \begin{cases}
U_{\color{red}{m\times m}} \quad 标准正交变换\\
U_r{\color{red}{m\times r}} \quad PCA/KL\\
\end{cases}
\]
\(Y Y^H = U \Sigma V^H V \Sigma^H U^H = U \Sigma^2 U^H\) 
构造矩阵  \(Y Y^H\)  
对  \(Y Y^H\)    进行特征值分解  EVD ,得到特征值  \(\lambda_i\)    和特征向量  \(u_i\)  
\(\sigma_i = \sqrt{\lambda_i}\)  
 
 
 
\(Y^H Y = V \Sigma^H U^H U \Sigma V^H = V \Sigma^2 V^H\) 
构造矩阵  \(Y^H Y\)  
对  \(Y^H Y\)    进行特征值分解  EVD ,得到特征值  \(\lambda_i\)    和特征向量  \(v_i\)  
\(\sigma_i = \sqrt{\lambda_i}\)  
 
 
 
注意,奇异值的定义中就是大于  0   的
直观理解 
变换  =   旋转和伸缩组合
那么如果想把一个变换表示成为旋转和伸缩的组合,考虑先旋转到坐标轴,再做伸缩,最后再旋转回来,这就是奇异值分解
1.   奇异值为非负数
2.奇异值主对角线由小到大排列
3.奇异值是特征值开方
奇异值分解
作用:求解逆矩阵、伪逆矩阵
截断  SVD(truncated SVD) 
\[
\begin{aligned}
Y_{\color{red}{m\times n}} 
    &= U_{\color{red}{m\times m}} 
        \begin{bmatrix}
            \Sigma_{\color{red}{r\times r}} & O \\
            O & O
        \end{bmatrix}_{\color{red}{m\times n}} 
        V_{\color{red}{n\times n}}^H \\[1.5ex]
    &= 
        \begin{bmatrix}
            {U_r}_{\color{red}{m\times r}} & X
        \end{bmatrix}
        \begin{bmatrix}
            \Sigma_r & O \\
            O & O
        \end{bmatrix}
        \begin{bmatrix}
            {V_r}_{\color{red}{r\times n}} & X
        \end{bmatrix}^H \\[1.5ex]
    &= U_r \Sigma_r V_r^H
\end{aligned}
\]
\[
r \leq \min(m, n)
\]
可以实现数据的压缩
econ: economic mode
应用  1 -   求伪逆矩阵 
\[
\Sigma^\dagger = \begin{bmatrix}
\Sigma_r^{-1} & O \\
O & O
\end{bmatrix}
\]
左逆 
首先对  \(A\)    进行  SVD   分解
\[
A_{\color{red}{m\times n}} = U_{\color{red}{m\times m}} \begin{bmatrix}
\Sigma_n\\
O
\end{bmatrix}_{\color{red}{m\times n}} V_{\color{red}{n\times n}}^H
\]
可以根据  \(LA = I\)    的方法构造  \(L\) 
\[
LA = I = {\color{red}V \begin{bmatrix}
\Sigma_n^{-1} & O
\end{bmatrix}U^H}{\color{blue}U \begin{bmatrix}
\Sigma_n\\
O
\end{bmatrix}V^H}\\
\therefore L = {\color{red}V \begin{bmatrix}
\Sigma_n^{-1} & O
\end{bmatrix}U^H} \qquad A = {\color{blue}U \begin{bmatrix}
\Sigma_n\\
O
\end{bmatrix}V^H}
\]
\[
m \leq n \quad \text{且} \quad \text{rank}(A) = m \quad \text{列满秩}\\
L = V \Sigma^\dagger U^H
\]
右逆 
fat matrix,且行满秩
\[
m \leq n \quad \text{且} \quad \text{rank}(A) = m \quad \text{行满秩}\\
AR = I \qquad R = V\Sigma^\dagger U^H\\
\]
秩亏 
\[
rank(A) < \min(m, n) \quad \text{秩亏}\\
A^\dagger = V \Sigma^\dagger U^H
\]
应用  2 -   求范数 
酉变换的性质
主要使用“酉矩阵不改变向量的范数”这一性质
\(U\) ,\(V\)    是酉矩阵,\(U^H = U^{-1}\) ,\(V^H = V^{-1}\) 
$$
  langle Ux, Uy rangle = langle x, y rangle\
  ||Ux||_2 = ||x||_2\
  $$
 
谱范数 
\[
\begin{aligned}
&\|A\|_2=\|A\|_{\mathrm{spec}}=\max_{x\neq0}\frac{\|Ax\|_2}{\|x\|_2}=\sqrt{\lambda_{\max}}=\sigma_{\max}\\
\Leftrightarrow& \max_{x\neq0}\;\frac{\|Ax\|_2^2}{\|x\|_2^2}\quad \text{改成瑞丽商的形式}\\
\Leftrightarrow&\max_{x}\;\|Ax\|_2^2\quad \mathrm{~s.t.~}\|x\|_2=1\\
\Leftrightarrow&\max_{x}\;x^HA^HAx\quad\mathrm{~s.t.~}x^Hx=1\\
\end{aligned}
\]
\(x_{\mathrm{opt}}\)    为  \(A^HA\)    最大特征值对应的特征向量
\[
\|Ax_{\mathrm{opt}}\|^2=\lambda_{\max}=\sigma_{\max}^2
\]
F   范数
\[
\begin{aligned}
    ||A||_F &= \sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n}|a_{ij}|^2} \\
            &= ||U\Sigma V^H||_F \\
            &= ||\Sigma||_F \\
            &= \sqrt{\sum_{i=1}^{r}\sigma_i^2}
\end{aligned}
\]
应用  3 - SVD   图像降噪 
图像本身就是一个矩阵
\[
Y = X + N
\]
 
\[
\begin{aligned}
    X &= U \Sigma V^H \\
      &= \sum_{i=1}^{r} \sigma_i u_i v_i^H \qquad r \leq \min(m, n)
\end{aligned}
\]
\[
Y = \sum_{i=1}^{k} \tilde{\sigma}_i \tilde{u}_i \tilde{v}_i^H
\]
\[
\hat{X} = \sum_{i=1}^{r} \tilde{\sigma}_i \tilde{u}_i \tilde{v}_i^H
\]
应用  4 -   矩阵低秩逼近 
需求  : \(P \leq r\) , rank-P   矩阵  \(\hat{Y}\) ,   使得  \(Y\)    与  \(\hat{Y}\)    最接近
问题建模
\[
Y_{\color{red}{m\times n}} \xrightarrow{\text{SVD}} Y = U\Sigma V^H \xrightarrow{\text{截断SVD}} \hat{Y} = U_r \Sigma_r V_r^H\\
\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0 \quad \text{且} \quad \text{rank}(A) = r \leq \min(m, n)\\
\]
\[
\min_{\hat{Y}} ||Y - \hat{Y}||_F^2 \quad \text{or} \quad \min_{\hat{Y}} ||Y - \hat{Y}||_2^2\\
s.t. \quad \text{rank}(\hat{Y})= P
\]
最优逼近定理
\[
Y = U_r \Sigma_r V_r^H = \sum_{i=1}^{r} \sigma_i u_i v_i^H\\
\hat{Y} = \sum_{i=1}^{P} \sigma_i u_i v_i^H \quad (P \leq r)\quad \text{是} Y \text{的} P \text{阶最佳逼近}\\ 
\]
把截断  SVD   的前  p   个分量取出来
逼近误差  approximation error
\[
||Y - \hat{Y}|| = ||\sum_{i=1}^r \sigma_i u_i v_i^H - \sum_{i=1}^P \sigma_i u_i v_i^H||\\
= ||\sum_{i=P+1}^r \sigma_i u_i v_i^H||
\]
\[
\begin{aligned}
||Y - \hat{Y}||_F &= \sqrt{\sigma_{P+1}^2 + \sigma_{P+2}^2 + \cdots + \sigma_r^2}\\
||Y - \hat{Y}||_2 &= \sigma_{P+1}
\end{aligned}
\]
有效秩(\(P\) )的确定:是一个超参数调优的问题
P   过大,overfit noise 
P   过小,underfit data 
 
SNR   较大的时候,使用拐点图
\[
\sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0\\
1 \geq \frac{\sigma_1}{\sigma_2} \geq \cdots \geq \frac{\sigma_{r-1}}{\sigma_r} \geq 0\\
\]
\[
\frac{|\hat{Y}|_F}{|Y|_F}= \frac{\sqrt{\sigma_1^2 + \sigma_2^2 + \cdots + \sigma_P^2}}{\sqrt{\sigma_1^2 + \sigma_2^2 + \cdots + \sigma_r^2}} \leq 1\\
= V(P)
\]
\[
V(P) \geq \alpha, \quad \alpha  = 0.9,0.95 \cdots
\]
SNR   较低,贝叶斯低秩分解
张量  CP   分解 
张量分解是矩阵分解的推广,矩阵是  2   阶张量,向量是  1   阶张量,标量是  0   阶张量