Yin的笔记本

vuePress-theme-reco Howard Yin    2021 - 2025
Yin的笔记本 Yin的笔记本

Choose mode

  • dark
  • auto
  • light
Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • MyIdeas
  • Linux
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • Node
  • Nvidia
  • Python
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
author-avatar

Howard Yin

299

Article

152

Tag

Home
Category
  • CNCF
  • Docker
  • namespaces
  • Kubernetes
  • Kubernetes对象
  • MyIdeas
  • Linux
  • Revolution
  • WebRTC
  • 云计算
  • 人工智能
  • 分布式
  • 图像处理
  • 图形学
  • 微服务
  • 数学
  • OJ笔记
  • 博弈论
  • 形式语言与自动机
  • 数据库
  • 服务器运维
  • 编程语言
  • C
  • Git
  • Go
  • Java
  • Node
  • Nvidia
  • Python
  • Rust
  • Tex
  • Shell
  • Vue
  • 视频编解码
  • 计算机网络
  • SDN
  • 论文笔记
  • 讨论
  • 边缘计算
  • 量子信息技术
Tag
TimeLine
About
查看源码
  • 矩阵分解、SVD

    • 各种矩阵分解
      • 特征值分解 Eigen Value Decomposition, EVD
      • QR分解(正交分解)
      • 奇异值分解 Singular Value Decomposition, SVD
      • LU分解 LU Decomposition
      • Cholesky分解 Cholesky Decomposition
    • 为什么要用SVD解方程
      • SVD的定义
        • SVD如何解线性方程
          • 深入:SVD几何含义,方阵的情况
            • 深入:SVD几何含义,矩阵的情况
              • 深入:SVD的求解
                • 深入:SVD怎么解最优化问题
                  • 深入:SVD存在性证明
                    • 深入:SVD和主成分分析

                    矩阵分解、SVD

                    vuePress-theme-reco Howard Yin    2021 - 2025

                    矩阵分解、SVD


                    Howard Yin 2024-04-30 03:17:01 数学

                    # 各种矩阵分解

                    # 特征值分解 Eigen Value Decomposition, EVD

                    前提条件:n×nn\times nn×n方阵,且有nnn个线性无关的特征向量

                    M=VDVTM=VDV^T M=VDVT

                    其中VVV是正交矩阵,DDD是由MMM的特征值构成的对角矩阵。

                    # QR分解(正交分解)

                    前提条件:非奇异的实矩阵,不要求是方阵

                    M=QRM=QR M=QR

                    其中QQQ是正交矩阵,RRR是上三角矩阵。

                    可用于解满秩最小二乘问题。

                    # 奇异值分解 Singular Value Decomposition, SVD

                    将QR分解推广到任意的实矩阵

                    M=UΣVTM=U\Sigma V^T M=UΣVT

                    其中UUU和VVV是正交矩阵,Σ\SigmaΣ是由MMM的奇异值构成的对角矩阵。

                    不仅可以解决满秩最小二乘问题,还可用于解亏秩最小二乘问题。

                    # LU分解 LU Decomposition

                    前提:所有顺序主子式都不为0

                    M=LUM=LU M=LU

                    其中LLL是下三角矩阵,UUU是上三角矩阵。

                    LU分解在本质上是高斯消元法的一种表达形式。实质上是将矩阵通过初等行变换变成一个上三角矩阵。

                    # Cholesky分解 Cholesky Decomposition

                    前提条件:对称正定矩阵

                    M=LTLM=L^TL M=LTL

                    其中LLL是上三角矩阵。

                    # 为什么要用SVD解方程

                    这是一个矩阵形式的线性方程:

                    Ax=b\bm A\bm x=\bm b Ax=b

                    高中以来求解线性方程的方法都只能在矩阵的秩R(A)=R([A∣b])R(\bm A)=R([\bm A|\bm b])R(A)=R([A∣b])的情况下有效(即A\bm AA和未知数数量相等且没有任何行向量或列向量之间是线性相关的)。 但在现实线性系统中,很多都是要多次取样求平均值,A不是正定更不是方阵,方程数量不等于求解未知量数量,且测量值还有误差没有精确解,这时的求解不像是在解方程而更像是在进行线性回归。

                    SVD起作用的场合:

                    • “求解”欠定方程 underdetermined:方程数量没有未知量多,线性方程组无穷多解
                    • “求解”超定方程 overdetermined:方程数量比未知量多,线性方程组无解

                    # SVD的定义

                    对于一个秩为rrr的矩阵Am×n\bm{A}_{m \times n}Am×n​,必存在m×mm \times mm×m的正交矩阵Um×m\bm{U}_{m \times m}Um×m​,n×nn \times nn×n的正交矩阵Vn×n\bm{V}_{n \times n}Vn×n​,m×nm\times nm×n的矩阵Σm×n\bm{\Sigma}_{m \times n}Σm×n​,使得

                    Am×n=Um×mΣm×nVn×nT=Um×m(Dr×rOOO)m×nVn×nT(9)\bm{A}_{m \times n} = \bm{U}_{m \times m} \bm{\Sigma}_{m \times n} \bm{V}^T_{n \times n} = \bm{U}_{m \times m} \begin{pmatrix} \bm{D}_{r \times r} & \bm{O} \\ \bm{O} & \bm{O} \end{pmatrix}_{m \times n} \bm{V}^T_{n \times n} \\\\ \tag{9} Am×n​=Um×m​Σm×n​Vn×nT​=Um×m​(Dr×r​O​OO​)m×n​Vn×nT​(9)

                    其中,Dr×r=(λ1λ2⋱λr)r×r\bm{D}_{r \times r} = \begin{pmatrix} \sqrt{\lambda_1} \\ & \sqrt{\lambda_2} \\ & & \ddots \\ & & & \sqrt{\lambda_r} \end{pmatrix}_{r \times r}Dr×r​=⎝⎜⎜⎜⎛​λ1​​​λ2​​​⋱​λr​​​⎠⎟⎟⎟⎞​r×r​,λ1≥λ2≥...≥λr>0\lambda_1 \geq \lambda_2 \geq... \geq \lambda_r >0λ1​≥λ2​≥...≥λr​>0为ATA\bm{A}^T\bm{A}ATA的rrr个 非零特征值 (从大到小排列)。

                    这里λ1,λ2,⋯,λr\sqrt{\lambda_1}, \sqrt{\lambda_2}, \cdots, \sqrt{\lambda_r}λ1​​,λ2​​,⋯,λr​​称为A\bm{A}A的 正奇异值;λ1,λ2,⋯,λr,01,02,⋯,0n−r\sqrt{\lambda_1}, \sqrt{\lambda_2}, \cdots, \sqrt{\lambda_r},0_1,0_2, \cdots,0_{n-r}λ1​​,λ2​​,⋯,λr​​,01​,02​,⋯,0n−r​(从大到小排列)称为A\bm{A}A的 奇异值 。

                    # SVD如何解线性方程

                    假设要解这个矩阵形式的线性方程:

                    Ax=b\bm A\bm x=\bm b Ax=b

                    这个线性方程可能欠定也可能超定

                    先对A\bm AA进行奇异值分解:

                    A=UΣVT\bm A=\bm U\bm\Sigma\bm V^T A=UΣVT

                    而正交矩阵UT=U−1\bm U^T=\bm U^{-1}UT=U−1、VT=V−1\bm V^T=\bm V^{-1}VT=V−1于是线性方程化为:

                    Ax=bUΣVTx=bx=(VT)−1Σ−1U−1bx=VΣ−1UTbx=A+b\begin{aligned} \bm A\bm x&=\bm b\\ \bm U\bm\Sigma\bm V^T\bm x&=\bm b\\ \bm x&=(\bm V^T)^{-1}\bm\Sigma^{-1}\bm U^{-1}\bm b\\ \bm x&=\bm V\bm\Sigma^{-1}\bm U^T\bm b\\ \bm x&=\bm A^+\bm b \end{aligned} AxUΣVTxxxx​=b=b=(VT)−1Σ−1U−1b=VΣ−1UTb=A+b​

                    其中,A+=VΣ−1UT\bm A^+=\bm V\bm\Sigma^{-1}\bm U^TA+=VΣ−1UT称为伪逆矩阵(pseudo inverse)。

                    这样求出来的x=A+b\bm x=\bm A^+\bm bx=A+b可证明存在如下性质:

                    • 若Ax=b\bm A\bm x=\bm bAx=b是欠定方程的表示,那么x=A+b\bm x=\bm A^+\bm bx=A+b是最小正则化解:

                    min∥x∥s.t.Ax=b\begin{aligned} &&min\|x\|\\ s.t.&&\bm A\bm x=\bm b \end{aligned} s.t.​​min∥x∥Ax=b​

                    • 若Ax=b\bm A\bm x=\bm bAx=b是超定方程的表示,那么x=A+b\bm x=\bm A^+\bm bx=A+b是最小二乘解:

                    min∥Ax−b∥min\|\bm A\bm x-\bm b\| min∥Ax−b∥

                    # 深入:SVD几何含义,方阵的情况

                    对于一nnn维到nnn维的线性变换A\bm AA(nnn行nnn列),求一组nnn个相互正交的nnn维单位向量vi,i∈[1,n]\bm v_i,i\in[1,n]vi​,i∈[1,n],使其在线性变换后仍然相互正交。 单位向量vi,i∈[1,n]\bm v_i,i\in[1,n]vi​,i∈[1,n]在变换后不一定是单位向量,所以用一常数σi\sigma_iσi​和单位向量ui,i∈[1,n]\bm u_i,i\in[1,n]ui​,i∈[1,n]表示:

                    上图扩展到nnn行nnn列,用矩阵形式表示:

                    A[v1…vi…vn]=[σ1u1…σiui…σnun]=[u1…ui…un][σ10⋯00σ2⋯0⋮⋮⋱⋮00⋯σn]\bm A[\bm v_1\dots\bm v_i\dots\bm v_n]=[\sigma_1\bm u_1\dots\sigma_i\bm u_i\dots\sigma_n\bm u_n]=[\bm u_1\dots\bm u_i\dots\bm u_n]\left[ \begin{matrix} \sigma_1&0&\cdots&0\\ 0&\sigma_2&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&\sigma_n \end{matrix} \right] A[v1​…vi​…vn​]=[σ1​u1​…σi​ui​…σn​un​]=[u1​…ui​…un​]⎣⎢⎢⎢⎢⎡​σ1​0⋮0​0σ2​⋮0​⋯⋯⋱⋯​00⋮σn​​⎦⎥⎥⎥⎥⎤​

                    令:

                    V=[v1…vi…vn]U=[u1…ui…un]Σ=[σ10⋯00σ2⋯0⋮⋮⋱⋮00⋯σn]\begin{aligned} \bm V&=[\bm v_1\dots\bm v_i\dots\bm v_n]\\ \bm U&=[\bm u_1\dots\bm u_i\dots\bm u_n]\\ \bm\Sigma&=\left[ \begin{matrix} \sigma_1&0&\cdots&0\\ 0&\sigma_2&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&\sigma_n \end{matrix} \right] \end{aligned} VUΣ​=[v1​…vi​…vn​]=[u1​…ui​…un​]=⎣⎢⎢⎢⎢⎡​σ1​0⋮0​0σ2​⋮0​⋯⋯⋱⋯​00⋮σn​​⎦⎥⎥⎥⎥⎤​​

                    于是上述方程化为:

                    AV=UΣ\bm A\bm V=\bm U\bm\Sigma AV=UΣ

                    即:

                    A=UΣVT\bm A=\bm U\bm\Sigma\bm V^T A=UΣVT

                    非常清晰。

                    # 深入:SVD几何含义,矩阵的情况

                    以行数小于列数的矩阵为例,A=UΣVT\bm A=\bm U\bm\Sigma\bm V^TA=UΣVT可以理解为降维变换:

                    V\bm VV的列向量相互正交且是单位向量,所以它就是一个旋转:

                    Σ\bm\SigmaΣ可以分成一个对角方阵和单位对角矩阵,其中单位对角矩阵相当于一个维度删除操作:

                    而对角方阵则是在降维后在各坐标轴上的拉伸:

                    最后U\bm UU的列向量相互正交且是单位向量,所以也是一个旋转:

                    # 深入:SVD的求解

                    首先:

                    • 由于vi\bm v_ivi​和ui\bm u_iui​都是相互正交的单位向量,所以有V−1=VT,VVT=1\bm V^{-1}=\bm V^T,\bm V\bm V^T=1V−1=VT,VVT=1和U−1=UT,UUT=1\bm U^{-1}=\bm U^T,\bm U\bm U^T=1U−1=UT,UUT=1
                    • 由于Σ\bm\SigmaΣ是对角矩阵,所以有ΣΣT=ΣTΣ=Σ2\bm\Sigma\bm\Sigma^T=\bm\Sigma^T\bm\Sigma=\bm\Sigma^2ΣΣT=ΣTΣ=Σ2

                    于是:

                    AAT=UΣVTVΣTUT=UΣΣTUT=UΣ2UTATA=VΣTUTUΣVT=VΣTΣVT=VΣ2VT\begin{aligned} \bm A\bm A^T&=\bm U\bm\Sigma\bm V^T\bm V\bm\Sigma^T\bm U^T&=\bm U\bm\Sigma\bm\Sigma^T\bm U^T&=\bm U\bm\Sigma^2\bm U^T\\ \bm A^T\bm A&=\bm V\bm\Sigma^T\bm U^T\bm U\bm\Sigma\bm V^T&=\bm V\bm\Sigma^T\bm\Sigma\bm V^T&=\bm V\bm\Sigma^2\bm V^T \end{aligned} AATATA​=UΣVTVΣTUT=VΣTUTUΣVT​=UΣΣTUT=VΣTΣVT​=UΣ2UT=VΣ2VT​

                    所以,要求解U\bm UU、V\bm VV、Σ\bm\SigmaΣ,对AAT\bm A\bm A^TAAT和ATA\bm A^T\bm AATA做特征分解(Eigendecomposition,又称谱分解 Spectral decomposition)即可。

                    根据矩阵特征值的性质可知,AAT\bm A\bm A^TAAT和ATA\bm A^T\bm AATA特征值必相同,Σ2\bm\Sigma^2Σ2就是其特征值组成的对角矩阵,而U\bm UU和V\bm VV分别是AAT\bm A\bm A^TAAT和ATA\bm A^T\bm AATA的特征矩阵。

                    # 深入:SVD怎么解最优化问题

                    可用SVD解的方程最直观的表示为“求使Ax\bm A\bm xAx最大(或同理可求最小)的单位向量x\bm xx”:

                    maxx∥Ax∥2s.t.∥x∥=1\begin{aligned} &&\mathop{max}\limits_{\bm x}\|\bm A\bm x\|^2\\ s.t.&&\|\bm x\|=1 \end{aligned} s.t.​​xmax​∥Ax∥2∥x∥=1​

                    换个形式:

                    maxxxTATAxs.t.∥x∥=1\begin{aligned} &&\mathop{max}\limits_{\bm x}\bm x^T\bm A^T\bm A\bm x\\ s.t.&&\|\bm x\|=1 \end{aligned} s.t.​​xmax​xTATAx∥x∥=1​

                    根据特征值的定义,ATA\bm A^T\bm AATA的特征值λ\lambdaλ要满足ATAx=λx\bm A^T\bm A\bm x=\lambda\bm xATAx=λx:

                    ATAx=λxxTATAx=λxTxxTATAx=λ\begin{aligned} \bm A^T\bm A\bm x&=\lambda\bm x\\ \bm x^T\bm A^T\bm A\bm x&=\lambda\bm x^T\bm x\\ \bm x^T\bm A^T\bm A\bm x&=\lambda\\ \end{aligned} ATAxxTATAxxTATAx​=λx=λxTx=λ​

                    所以xTATAx\bm x^T\bm A^T\bm A\bm xxTATAx的值必然是ATA\bm A^T\bm AATA的特征值中的一个。 于是,xTATAx\bm x^T\bm A^T\bm A\bm xxTATAx的最大值取ATA\bm A^T\bm AATA的特征值中的最大值即可,最大特征值对应的特征向量就是x\bm xx的最优解。

                    而SVD中的V\bm VV是ATA\bm A^T\bm AATA的特征矩阵、Σ2\bm\Sigma^2Σ2是ATA\bm A^T\bm AATA的特征值组成的对角矩阵,所以直接去Σ2\bm\Sigma^2Σ2中找到最大值(或最小值)即最优值λ\lambdaλ,其在V\bm VV中对应的列就是最优解x\bm xx。

                    # 深入:SVD存在性证明

                    没必要,看下几何含义啥都懂了,数学证明还是算了吧

                    # 深入:SVD和主成分分析

                    帮助我们改善此页面!
                    创建于: 2023-11-27 06:57:52

                    更新于: 2024-04-30 03:17:12