矩阵的 SVD 分解方法,几何意义

article/2025/9/26 19:19:01

转自:
https://liam.page/2017/11/22/SVD-for-Human-Beings/
更多信息请读者移步原文阅读。
推荐中国台湾周志成老师的线性代数博客
https://ccjou.wordpress.com/
以及书籍《矩阵分析及应用》-- 张贤达
还可参考:
https://www.cnblogs.com/endlesscoding/p/10058532.html

一、一些矩阵基本知识

1.1.矩阵的转置及共轭转置

矩阵的转置(transpose)是最简单的一种矩阵变换。简单来说,若 m×n 的矩阵 M 的转置记为 M?;则 M? 是一个 n×m 的矩阵,并且 Mi,j=M?j,i

因此,矩阵的转置相当于将矩阵按照主对角线翻转;同时,我们不难得出 M=(M?)?

关于矩阵的一些性质:
(A + B)T = AT + BT;
(AB)T = BTAT;
(AB)-1 = B-1A-1;
(A-1)T = AT)-1 (此时A必须是可逆方阵);

矩阵的共轭转置(conjugate transpose)可能是倒数第二简单的矩阵变换。共轭转置只需要在转置的基础上,再叠加复数的共轭(M*)即可。因此,若以 M? 记矩阵 M 的共轭转置,则有
MH = (M*)T = (MT)*

1.2.正交矩阵及酉矩阵

满足UT U = UUT = E(E为单位矩阵)的实方阵,成为正交矩阵

酉矩阵(unitary matrix)是一种特殊的复方阵,它满足

UU?=U?U=In.

不难看出,酉矩阵实际上是推广的正交矩阵(orthogonal matrix);当酉矩阵中的元素均为实数时,酉矩阵实际就是正交矩阵。另一方面,由于 MM−1=M−1M=In,所以酉矩阵 U 满足 U−1=U?;事实上,这是一个矩阵是酉矩阵的充分必要条件。

1.3.正规矩阵

复方阵M满足MM?=M?M,则称M为正规矩阵
复系数的酉矩阵和实系数的正交矩阵都是正规矩阵。但正规矩阵并不只有酉矩阵或正交矩阵。
例如说,矩阵 M = ( 1 1 0 0 1 1 1 0 1 ) \mathbf{M}=\left(\begin{array}{lll}{1} & {1} & {0} \\ {0} & {1} & {1} \\ {1} & {0} & {1}\end{array}\right) M=101110011即是一个正规矩阵,但它显然不是酉矩阵或正交矩阵;因为
M M H = ( 2 1 1 1 2 1 1 1 2 ) = M H M \mathbf{M} \mathbf{M}^{\mathrm{H}}=\left(\begin{array}{lll}{2} & {1} & {1} \\ {1} & {2} & {1} \\ {1} & {1} & {2}\end{array}\right)=\mathbf{M}^{\mathrm{H}} \mathbf{M} MMH=211121112=MHM

酉矩阵相关性质:
在这里插入图片描述

1.4 Hermitian矩阵

满足A = AH 的复方阵称为Hermitian矩阵。

二、谱定理和谱分解

矩阵的对角化是线性代数中的一个重要命题。谱定理(spectral theorem)给出了方阵对角化的一个结论:若矩阵 M 是一个正规矩阵,则存在酉矩阵 U,以及对角矩阵 Λ,使得 M=UΛU?.

这也就是说,正规矩阵,可经由酉变换,分解为对角矩阵;这种矩阵分解的方式,称为谱分解(spectral decomposition)。

三、奇异值分解(SVD)

谱定理给出了正规矩阵分解的可能性以及分解形式。然而,对于矩阵来说,正规矩阵是要求非常高的。因此,谱定理是一个非常弱的定理,它的适用范围有限。在实际生产中,我们遇到的很多矩阵都不是正规矩阵。对于这些矩阵,谱定理就失效了。作为谱定理的泛化,SVD 分解对于原矩阵的要求就要弱得多

3.1SVD的定义

SVD 的定义:假设 M 是一个 m×n 的矩阵,其中的元素全部属于数域 ?(实数域 ℝ 或复数域 ℂ)。那么,存在 m×m 的酉矩阵 U 和 n×n 的酉矩阵 V 使得M=UΣV?,

其中 Σ 是 m×n 的非负实数对角矩阵;并且 Σ 对角线上的元素 Σi,iM 的奇异值。一般来说,我们偏好将这些奇异值按从大到小的顺序排列,这样一来 Σ 就由 M 唯一确定了。

另一方面,因为 U 和 V 都是酉矩阵,所以 U 和 V 的列向量分别张成 ?m 和 ?n 的一组标准正交基。我们将 U 的列向量记作 u ⃗ i \vec{u}_{i} u i, 1⩽i⩽m;将 V 的列向量记作 v ⃗ j \vec{v}_{j} v j,1⩽j⩽n;同时,将 Σ 对角线上的第 i 个元素记作 σk,1⩽k⩽min(m,n)。那么,SVD 分解实际可以将矩阵 M 写作一个求和形式
M = ∑ i = 1 min ⁡ ( m , n ) σ i u ⃗ i v ⃗ i ⊤ \mathbf{M}=\sum_{i=1}^{\min (m, n)} \sigma_{i} \vec{u}_{i} \vec{v}_{i}^{\top} M=i=1min(m,n)σiu iv i

3.2 SVD 的计算方法

了解了 SVD 的介绍和相关几何解释之后,接下来最直接想要知道的就是如何计算一个矩阵的 SVD 了。我们分成几步来探讨这个问题。

3.2.1SVD 与特征值

我们对求特征值和特征向量比较熟悉,一般分两步:

  1. 求出所有使矩阵A - λI奇异的λ(特征值)即求出det(A - λI) = 0的所有根;
  2. 将λ带入A - λI,求出所有使(A - λI) x ⃗ \vec{x} x = 0 ⃗ \vec{0} 0 成立的 x ⃗ \vec{x} x ,它们是于λ对应的特征向量;

推论1:若A ∊ ℂnxn为Hermitain矩阵,其特征值一定是实数,并且有A= UΣUH,式中U = [u1,u2,…,un]T; Σ = diag(λ12,…,λn)。
证明:因为对于任意 Hermitain矩阵A的特征值λi都有对于的特征向量 u ⃗ i \vec{u}_{i} u i((!= 0 ⃗ \vec{0} 0 )满足下列关系:
A u i = λ i u i , i = 1 , 2 , ⋯   , n \boldsymbol{A} \boldsymbol{u}_{i}=\lambda_{i} \boldsymbol{u}_{i}, \quad i=1,2, \cdots, n Aui=λiui,i=1,2,,n
将这些方程写成矩阵的形式:
A [ u 1 , ⋯   , u n ] = [ u 1 , ⋯   , u n ] [ λ 1 0 ⋱ 0 λ n ] \boldsymbol{A}\left[\boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{n}\right]=\left[\boldsymbol{u}_{1}, \cdots, \boldsymbol{u}_{n}\right]\left[\begin{array}{ccc}{\boldsymbol{\lambda}_{1}} & {} & {0} \\ {} & {\ddots} & {} \\ {0} & {} & {\lambda_{n}}\end{array}\right] A[u1,,un]=[u1,,un]λ100λn
令U = [u1,u2,…,un]T; Σ = diag(λ12,…,λn),所以有
A U = U Σ \boldsymbol{A} \boldsymbol{U}=\boldsymbol{U}\Sigma AU=UΣ
(?证不下去了,显然下一步要在等式两边同右乘UH,然后证明U是酉矩阵,即UUH = E。线性代数中在讲 对称矩阵的性质的时候给出定理:对于n阶实对称矩阵A,存在正交矩阵Q,使得A = QΣQT,现在只是把这个推广到复数域上了,可以参考这两个:https://www.zhihu.com/question/38801697
https://blog.csdn.net/BingeCuiLab/article/details/47209037)
现在,假设矩阵 Mm×n 的 SVD 分解是M=UΣV?,那么我们有
M M H = U Σ V H V Σ H U H = U Σ Σ H U H \boldsymbol{M} \boldsymbol{M}^{H}=\boldsymbol{U}\Sigma \boldsymbol{V}^{H}\boldsymbol{V}\Sigma ^{H}\boldsymbol{U}^{H}=\boldsymbol{U}\Sigma\Sigma ^{H}\boldsymbol{U}^{H} MMH=UΣVHVΣHUH=UΣΣHUH
M H M = V Σ H U H U Σ V H = V Σ Σ H V H \boldsymbol{M}^{H} \boldsymbol{M}=\boldsymbol{V}\Sigma ^{H}\boldsymbol{U}^{H}\boldsymbol{U}\Sigma \boldsymbol{V}^{H}=\boldsymbol{V}\Sigma\Sigma ^{H}\boldsymbol{V}^{H} MHM=VΣHUHUΣVH=VΣΣHVH
显然MMH 和 MHM都是Hermitian矩阵,用推论1有:
U 的列向量(左奇异向量),是 MM? 的特征向量;同时,V 的列向量(右奇异向量),是 M?M 的特征向量;另一方面,M 的奇异值(Σ 的非零对角元素)则是 MM? 或者 M?M 的非零特征值的平方根。通过这样将问题转换,我们就可以用求特征值的方法求奇异值了。

3.2.2 SVD的计算

计算出任意矩阵的 SVD 分解的算法步骤:

  1. 计算 MM? 和 M?M;
  2. 分别计算 MM? 和 M?M 的特征向量及其特征值;
  3. MM? 的特征向量组成 U;而 M?M 的特征向量组成 V;
  4. 对 MM? 和 M?M 的非零特征值求平方根,对应上述特征向量的位置,填入 Σ 的对角元。

Example:对矩阵M = [ 2 4 1 3 0 0 0 0 ] \left[\begin{array}{ll}{2} & {4} \\ {1} & {3} \\ {0} & {0} \\ {0} & {0}\end{array}\right] 21004300进行奇异值分解。

首先,我们需要计算 MM?,
W = M M H = [ 2 4 1 3 0 0 0 0 ] [ 2 1 0 0 4 3 0 0 ] = [ 20 14 0 0 14 10 0 0 0 0 0 0 0 0 0 0 ] \mathbf{W}=\mathbf{M} \mathbf{M}^{H}=\left[\begin{array}{ll}{2} & {4} \\ {1} & {3} \\ {0} & {0} \\ {0} & {0}\end{array}\right]\left[\begin{array}{llll}{2} & {1} & {0} & {0} \\ {4} & {3} & {0} & {0}\end{array}\right]=\left[\begin{array}{cccc}{20} & {14} & {0} & {0} \\ {14} & {10} & {0} & {0} \\ {0} & {0} & {0} & {0} \\ {0} & {0} & {0} & {0}\end{array}\right] W=MMH=21004300[24130000]=20140014100000000000
然后,我们求 W 的特征值与特征向量。
[ 20 − λ 14 0 0 14 10 − λ 0 0 0 0 − λ 0 0 0 0 − λ ] x ⃗ = 0 → \left[\begin{array}{cccc}{20-\lambda} & {14} & {0} & {0} \\ {14} & {10-\lambda} & {0} & {0} \\ {0} & {0} & {-\lambda} & {0} \\ {0} & {0} & {0} & {-\lambda}\end{array}\right] \vec{x}=\overrightarrow{0} 20λ14001410λ0000λ0000λx =0
根据线性方程组的理论,若要该关于 x ⃗ \vec{x} x 的方程有非零解,则要求系数矩阵的行列式为 0;也就是
∣ 20 − λ 14 0 0 14 10 − λ 0 0 0 0 − λ 0 0 0 0 − λ ∣ = ∣ 20 − λ 14 14 10 − λ ∣ ∣ − λ 0 0 − λ ∣ = 0 \left|\begin{array}{cccc}{20-\lambda} & {14} & {0} & {0} \\ {14} & {10-\lambda} & {0} & {0} \\ {0} & {0} & {-\lambda} & {0} \\ {0} & {0} & {0} & {-\lambda}\end{array}\right|=\left|\begin{array}{cc}{20-\lambda} & {14} \\ {14} & {10-\lambda}\end{array}\right|\left|\begin{array}{cc}{-\lambda} & {0} \\ {0} & {-\lambda}\end{array}\right|=0 20λ14001410λ0000λ0000λ=20λ141410λλ00λ=0
这也就是 ((20−λ)(10−λ)−196)λ2=0;解得 λ1=λ2=0, λ3=15+√221≈29.866, λ4=15−√221≈0.134。将特征值代入原方程,可解得对应的特征向量;这些特征向量即作为列向量,形成矩阵
U = [ − 0.82 − 0.58 0 0 − 0.58 0.82 0 0 0 0 1 0 0 0 0 1 ] \mathbf{U}=\left[\begin{array}{cccc}{-0.82} & {-0.58} & {0} & {0} \\ {-0.58} & {0.82} & {0} & {0} \\ {0} & {0} & {1} & {0} \\ {0} & {0} & {0} & {1}\end{array}\right] U=0.820.58000.580.820000100001
同理可解得(注意,MM? 和 M?M 的特征值相同)
V = [ − 0.40 − 0.91 − 0.91 0.40 ] \mathbf{V}=\left[\begin{array}{cc}{-0.40} & {-0.91} \\ {-0.91} & {0.40}\end{array}\right] V=[0.400.910.910.40]
以及 Σ 上的对角线元素由 W 的特征值的算术平方根组成;因此有
Σ = [ 5.46 0 0 0.37 0 0 0 0 ] \boldsymbol{\Sigma}=\left[\begin{array}{cc}{5.46} & {0} \\ {0} & {0.37} \\ {0} & {0} \\ {0} & {0}\end{array}\right] Σ=5.4600000.3700
因此我们得到矩阵 M 的 SVD 分解(数值上做了近似):
[ 2 4 1 3 0 0 0 0 ] ≈ [ − 0.82 − 0.58 0 0 − 0.58 0.82 0 0 0 0 1 0 0 0 0 1 ] [ 5.46 0 0 0.37 0 0 0 0 ] [ − 0.40 − 0.91 − 0.91 0.40 ] \left[\begin{array}{ll}{2} & {4} \\ {1} & {3} \\ {0} & {0} \\ {0} & {0}\end{array}\right] \approx\left[\begin{array}{cccc}{-0.82} & {-0.58} & {0} & {0} \\ {-0.58} & {0.82} & {0} & {0} \\ {0} & {0} & {1} & {0} \\ {0} & {0} & {0} & {1}\end{array}\right]\left[\begin{array}{cc}{5.46} & {0} \\ {0} & {0.37} \\ {0} & {0} \\ {0} & {0}\end{array}\right]\left[\begin{array}{cc}{-0.40} & {-0.91} \\ {-0.91} & {0.40}\end{array}\right] 210043000.820.58000.580.8200001000015.4600000.3700[0.400.910.910.40]


http://chatgpt.dhexx.cn/article/hQgU2cx7.shtml

相关文章

SVD分解(奇异值分解)求旋转矩阵

参考文献:http://igl.ethz.ch/projects/ARAP/svd_rot.pdf 一 问题描述 假设P{p1,p2,...,pn}和Q{q1,q2,...,qn}是两组Rd空间中的对应点集,现在想要根据这个两个点集的数据来计算出它们之间的刚性转置信息,可以知道这其实是一个最小二乘求优问题…

详解SVD(奇异值分解)

1、特征值分解(EVD) 实对称矩阵 在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵是一个的实对称矩阵(即),那么它可以被分解成如下的形式 其中为标准正交阵,即有&#xff…

SVD分解原理及基于SVD分解的图像压缩和去噪

SVD分解是矩阵论中的一个知识点,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干…

矩阵分解SVD

《矩阵分解SVD》   本来是做了一个MobileNetV2中的关于ReLU的一个实验,大体用到的知识是对一个 n ∗ 2 n*2 n∗2 的矩阵通过 2 ∗ m 2*m 2∗m 的随机矩阵映射到 n ∗ m n*m n∗m ,经过ReLU函数后再映射回 n ∗ 2 n*2 n∗2 ,那么就需要…

t-svd张量分解算法详解

t-svd张量分解算法详解 讲解论文所需基础知识背景知识介绍什么是svd分解?定义1:svd分解 什么是张量? t-svd分解详解正式定义t-svd!疑惑问题解惑前需要学习的定义:定义2.1:张量t积 疑惑解答: 讲解…

【机器学习中的矩阵分解】LU分解、QR分解、SVD分解

学习总结 文章目录 学习总结一、三角分解(LU分解)1.1 高斯消元1.2 LU分解原理1.3 LU分解python代码1.4 LU分解算法 二、QR分解2.1 Schmid 正交化2.2 使用 Schmid 施密特正交化过程求 QR 分解2.3 QR分解的栗子 三、SVD分解3.1 SVD定义3.2 SVD基本理论&…

【六】SVD分解

SVD分解在很多经典应用中都有用到,比如数据压缩,降噪等,PCA也和SVD有着紧密联系,这里记录自己关于SVD分解求解最小二乘解的学习笔记,若有错误请指出,谢谢。 在实践中,由于存在测量误差和多次测…

SVD分解原理详解

在介绍SVD之前,先补充一些基础知识 1.酉矩阵: 2.正规(正定)矩阵 3.谱分解: 表示正规矩阵,可经由酉变换,分解为对角矩阵;这种矩阵分解的方式,称为谱分解(spec…

矩阵分解(四)——SVD分解

目录 矩阵相关术语共轭矩阵(Hermite阵)特征值相似矩阵A^H^A^H^A酉矩阵酉相抵(正交相抵)奇异值奇异值分解式特征分解 奇异值分解python代码实现验证结果 np.linalg.svd 利用Python进行SVD分解对图像压缩 矩阵相关术语 共轭矩阵&am…

聊聊特征分解和SVD分解

矩阵分解 矩阵分解(decomposition,factorization):将矩阵拆分为多个矩阵的乘积的运算。矩阵的分解包括以下几种: 特征分解SVD分解PCAQR分解LU分解极分解 矩阵分解在数据压缩、推荐系统以及NLP等都有着比较广泛的应用。 特征分解 特征分解(eigendeco…

SVD奇异值分解

SVD分解 SVD分解是LSA的数学基础,本文是我的LSA学习笔记的一部分,之所以单独拿出来,是因为SVD可以说是LSA的基础,要理解LSA必须了解SVD,因此将LSA笔记的SVD一节单独作为一篇文章。本节讨论SVD分解相关数学问题&#xf…

矩阵分解 SVD分解

在认识SVD之前,先来学习两个相关的概念:正交矩阵和酉矩阵。 如果,则阶实矩阵称为正交矩阵。而酉矩阵是正交矩阵往复数域上的推广。 判断正交矩阵和酉矩阵的充分必要条件是:。或者说正交矩阵和酉矩阵的共轭转置和它的 …

SVD分解的推导,理解SVD分解及矩阵奇异值的几何意义

文章目录 SVD分解的证明推导从本质上理解SVD分解矩阵奇异值的几何意义 SVD分解的证明推导 理解SVD分解要解决的问题是什么? 从本质上理解SVD分解 从线性映射的矩阵表示角度,即从“抽象”->“具体”的角度去理解SVD分解。 矩阵奇异值的几何意义…

矩阵分解SVD原理

常用的经典矩阵分解算法: 经典算法PCA、SVD主题模型算法LDA概率矩阵分解PMF,由深度学习大牛Ruslan Salakhutdinov所写,主要应用于推荐系统中,在大规模的稀疏不平衡性Netflix数据集上取得较好的效果;非负矩阵分解&#…

精简易懂,30 分钟学会 SVD 矩阵分解,很强!

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达SVD(Singular Value Decomposition)奇异值分解分解是机器学习中最重要的矩阵分解方法。 它能够将一个任意形状的矩阵分解成一个正交矩阵和一个对角矩阵以及另一个正交矩阵…

矩阵(一):SVD分解

文章目录 0 参考链接(尊重原著)1 SVD分解原理2 SVD分解意义3 SVD分解的应用4 SVD数学举例5 为什么Ax0的解为最小奇异值对应的向量? 0 参考链接(尊重原著) 下面这个讲的很好很全面 视觉SLAM常见的QR分解SVD分解等矩阵分…

详解SVD分解过程

转 如何让奇异值分解(SVD)变得不“奇异”? 红色石头 发布于 2018-08-29 分类:机器学习 阅读(144) 评论(0) 如何让奇异值分解(SVD)变得不“奇异”?-红色石头的个人博客 http://redstonewill.com/1529/ 在之前的一篇文章:通俗解…

奇异值分解(SVD)原理详解及推导

转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/43053513 在网上看到有很多文章介绍SVD的,讲的也都不错,但是感觉还是有需要补充的,特别是关于矩阵和映射之间的对应关系。前段时间看了国外的一篇文章,叫A S…

奇异值分解(SVD)原理

奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总…

SVD(奇异值分解)

一、SVD(奇异值分解 Singular Value Decomposition) 1.1、基本概念: (1)定义:提取信息的方法:奇异值分解Singular Value Decomposition(SVD) (2&#xff0…