数字水印 | 奇异值分解 SVD 的定义、原理及性质

news2025/1/26 15:41:45

目录

    • 1 为什么使用 SVD?
    • 2 SVD 的定义是什么?
      • 2.1 特征值分解
      • 2.2 奇异值分解
    • 3 如何求解奇异值 SV?
      • 3.1 求解过程
      • 3.2 证明过程
    • 4 什么是 SVD 的性质?


参考博客:

  • Python 机器学习笔记:奇异值分解(SVD)算法
  • SVD - Python 少年


1 为什么使用 SVD?

实际采集的数据常常充斥着大量的噪声和冗余信息,因此必须筛选出这些不必要的内容,仅保留下那些蕴含主要信息的数据特征。奇异值分解(SVD)技术可以用于简化数据,提取出数据的重要特征,同时剔除数据中的噪声和冗余。SVD 的应用范围广泛,例如在推荐系统中,它能够增强算法的准确性和效率;在图像处理领域,SVD 则被用来实现图像压缩,从而减少存储空间的需求。



2 SVD 的定义是什么?

线性代数警告⚠️

个人感觉,奇异值分解是特征值分解的一般情况,因此几乎所有 SVD 博客都会先讲特征值分解。



2.1 特征值分解

特征值和特征向量的定义如下:

A x = λ x Ax=\lambda x Ax=λx

其中, A A A 是一个 n × n n\times n n×n 阶矩阵, x x x 是一个 n n n 阶向量。如果上式成立,那么我们称 λ \lambda λ 是矩阵 A A A 的一个特征值,而 x x x 是特征值 λ \lambda λ 所对应的特征向量。

说明:本文使用大写字母代表矩阵,小写字母代表向量或者标量。一个矩阵 A A A 可以有若干个特征值 λ \lambda λ,而和特征值 λ \lambda λ 一起使等式成立的向量 x x x 被称为特征向量。

令矩阵 A A A 的所有特征值分别为:

{ λ 1 , λ 2 , . . . , λ n }   ( λ 1 ≤ λ 2 ≤ . . . ≤ λ n ) \{\lambda_1,\lambda_2,...,\lambda_n\}\ (\lambda_1\le \lambda_2\le ...\le \lambda_n) {λ1,λ2,...,λn} (λ1λ2...λn)

n n n 个特征值所对应的特征向量为 { w 1 , w 2 , . . . , w n } \{w_1,w_2,...,w_n\} {w1,w2,...,wn}。如果同时满足这 n n n 个特征向量线性无关,那么矩阵 A A A 可以用下式的特征分解表示:

A = W Σ W − 1 A=W\Sigma W^{-1} A=WΣW1

其中, W W W 是这 n n n 个特征向量拼成的 n × n n\times n n×n 阶矩阵,而 Σ \Sigma Σ 是以这 n n n 个特征值为对角线的 n × n n\times n n×n 阶矩阵。

注意: Σ \Sigma Σ 是一个名为 Sigma 的矩阵,而不是一个求和符号。

通常情况下,我们会把这 n n n 个特征向量标准化,即使其满足 ∥ w i ∥ 2 = 1 \left \| w_i \right \|_2=1 wi2=1,从而有:

w i T w i = 1 w_i^Tw_i=1 wiTwi=1

此时 W W W 满足 W T W = I W^TW = I WTW=I,从而有 W T = W − 1 W^T = W^{-1} WT=W1。这样特征分解表达式可以写成:

A = W Σ W T A=W\Sigma W^{T} A=WΣWT

注意:特征分解仅适用于方阵,即行数与列数相等的矩阵。如果遇到非方阵,即行数与列数不相等的矩阵,那么就需要采用奇异值分解 SVD 来处理了。



2.2 奇异值分解

假设 A A A 是一个 m × n m\times n m×n 阶矩阵,其中的元素全部属于实数域或复数域,则存在一个分解使得:

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

其中, U U U m × m m\times m m×m 阶酋矩阵, Σ \Sigma Σ 是半正定的 m × n m\times n m×n 阶对角矩阵,而 V T V^T VT V V V 的共轭转置,是 n × n n\times n n×n 阶酋矩阵。我们称这样的分解为矩阵 A A A 的奇异值分解,其中矩阵 Σ \Sigma Σ 主对角线上的元素 σ i \sigma_i σi 即为 A A A 的奇异值。

注意: Σ \Sigma Σ 是对角矩阵,但不一定是方阵。此外,假设 V V V 是一个复数矩阵,对 V V V 中的每个元素取共轭,再对 V V V 求转置,那么得到的就是 V V V 的共轭矩阵 V † V^\dagger V。虽然标准的符号是 V † V^\dagger V,但本文一直用的是 V T V^T VT

一般 Σ \Sigma Σ 的形式如下:

Σ = [ σ 1 0 0 0 0 0 σ 2 0 0 0 0 0 . . . 0 0 0 0 0 . . . 0 ] m × n \Sigma= \begin{bmatrix} \sigma_1 & 0 & 0 & 0 & 0\\ 0 & \sigma_2 & 0 & 0 & 0\\ 0 & 0 & ... & 0 & 0\\ 0 & 0 & 0 & ... & 0 \end{bmatrix}_{m\times n} Σ= σ10000σ20000...0000...0000 m×n

矩阵 Σ \Sigma Σ 只有对角元素,其他元素均为 0 0 0。另一个惯例是, Σ \Sigma Σ 的对角元素是按从大到小的顺序排列的。这些对角元素被称为奇异值。

在科学和工程领域,一个广为人知的观点是:当超过某个奇异值数目( r r r 个)之后,其余的奇异值都会变得很小,以至于可以忽略不计。这表明数据中只有 r r r 个特征是重要的,而其他的特征都可以视为噪声或冗余信息。

原文的意思貌似是,由于可以忽略不计,因此可以直接置为零。




补充:酋矩阵的定义

如果 n × n n\times n n×n 阶的复数矩阵 U U U 满足:

U † U = U U † = I U^\dagger U = UU^\dagger = I UU=UU=I

那么 U U U 是酋矩阵。其中, I I I n n n 阶单位矩阵, U † U^\dagger U U U U 的共轭转置。换句话说,矩阵 U U U 为酋矩阵,当且仅当其共轭转置 U † U^\dagger U 为其逆矩阵 U − 1 = U † U^{-1}=U^\dagger U1=U 时成立。



3 如何求解奇异值 SV?

⚠️注意:有现成的库函数,不必非得看原理。

下图形象地展示了 SVD 的定义:

在这里插入图片描述
那么我们如何求解 U , Σ , V U,\Sigma,V U,Σ,V 这三个矩阵呢?



3.1 求解过程

求解 V 矩阵

如果用 A T A^T AT A A A 做矩阵乘法,那么会得到一个 n × n n\times n n×n 阶的方阵 A T A A^TA ATA。既然 A T A A^TA ATA 是方阵,那么就可以做特征分解了。特征值和特征向量满足下式:

( A T A ) v i = λ i v i (A^TA)v_i=\lambda_i v_i (ATA)vi=λivi

从而得到 A T A A^TA ATA n n n 个特征值 λ i \lambda_i λi 及其对应的 n n n 个特征向量 v i v_i vi。将所有特征向量 v i v_i vi 拼成一个 n × n n\times n n×n 阶矩阵 V V V,即为 SVD 公式中的 V V V 矩阵。一般我们将 V V V 中的每个特征向量称为 A A A 的右奇异向量。

求解 U 矩阵

如果用 A A A A T A^T AT 做矩阵乘法,那么会得到一个 m × m m\times m m×m 阶的方阵 A A T AA^T AAT。 既然 A A T AA^T AAT 是方阵,那么就可以做特征分解了。特征值和特征向量满足下式:

( A A T ) u i = λ i u i (AA^T)u_i=\lambda_i u_i (AAT)ui=λiui

从而得到 A A T AA^T AAT n n n 个特征值 λ i \lambda_i λi 及其对应的 n n n 个特征向量 u i u_i ui。将所有特征向量 u i u_i ui 拼成一个 n × n n\times n n×n 阶矩阵 U U U,即为 SVD 公式中的 U U U 矩阵。一般我们将 U U U 中的每个特征向量称为 A A A 的左奇异向量。

求解 Σ 矩阵

由于 Σ \Sigma Σ 除对角线上的奇异值外,其余的位置都是 0 0 0,因此我们只需求出每个奇异值 σ i σ_i σi 即可。

我们注意到:

A = U Σ V T A V = U Σ V T V A V = U Σ A v i = σ i u i σ i = A v i / u i \begin{alignat}{2} A &= U\Sigma V^T \\ AV &= U\Sigma V^TV \\ AV &= U\Sigma \\ Av_i &= \sigma_i u_i \\ \sigma_i &= Av_i/u_i \end{alignat} AAVAVAviσi=UΣVT=UΣVTV=UΣ=σiui=Avi/ui

如此一来,我们就可以求出每个奇异值 σ i σ_i σi,进而求出奇异值矩阵 Σ \Sigma Σ



3.2 证明过程

我们说 A T A A^TA ATA 的特征向量组成了 SVD 中的 V V V 矩阵, A A T AA^T AAT 的特征向量组成了 SVD 中的 U U U 矩阵,这有什么依据吗?这个其实很容易证明,我们以 V V V 矩阵的证明为例:

A = U Σ V T ⇒ A T = V Σ T U T A T A = V Σ T U T U Σ V T = V Σ T Σ V T = V Σ 2 V T \begin{alignat}{2} A = U\Sigma V^T &\Rightarrow A^T = V\Sigma^T U^T \\ A^TA &= V\Sigma^T U^TU\Sigma V^T \\ &= V\Sigma^T \Sigma V^T \\ &= V\Sigma^2 V^T \\ \end{alignat} A=UΣVTATAAT=VΣTUT=VΣTUTUΣVT=VΣTΣVT=VΣ2VT

上式证明使用了: U T U = I U^TU = I UTU=I Σ T Σ = Σ 2 Σ^TΣ = Σ^2 ΣTΣ=Σ2。可以看出 A T A A^TA ATA 的特征向量矩阵的确是 SVD 中的 V V V 矩阵。同理可以证明 A A T AA^T AAT 的特征向量矩阵的确是 SVD 中的 U U U 矩阵。

说明:对比 A T A = V Σ 2 V T A^TA=V\Sigma^2 V^T ATA=VΣ2VT 和特征值分解公式 A = W Σ W T A=W\Sigma W^{T} A=WΣWT 可知, V V V 矩阵是 A T A A^TA ATA 的特征向量矩阵。

进一步我们还可以看出,特征值矩阵是奇异值矩阵的平方 Σ 2 Σ^2 Σ2,因此特征值 λ i \lambda_i λi 和奇异值 σ i \sigma_i σi 满足如下关系:

σ i = λ i \sigma_i = \sqrt{\lambda_i} σi=λi

由此可见,我们可以不使用上面推导出的 σ i = A v i / u i \sigma_i = Av_i/u_i σi=Avi/ui 来计算奇异值,而是通过求 A T A A^TA ATA 的特征值 λ i \lambda_i λi 并对其开平方根来得到奇异值。




补充:通过 A T A A^TA ATA A A T AA^T AAT 的特征值开平方根求解奇异值的注意点

如前所述,我们可以利用如下性质求解奇异值:

A T A = V Σ U T U Σ V T = V Σ T Σ V T A A T = U Σ V T V Σ U T = U Σ Σ T U T \begin{alignat}{2} A^TA &= V\Sigma U^TU\Sigma V^T = V\Sigma^T \Sigma V^T \\ AA^T &= U\Sigma V^TV\Sigma U^T = U\Sigma \Sigma^TU^T \end{alignat} ATAAAT=VΣUTUΣVT=VΣTΣVT=UΣVTVΣUT=UΣΣTUT

需要注意的是,上述 Σ T Σ \Sigma^T \Sigma ΣTΣ Σ Σ T \Sigma \Sigma^T ΣΣT 在矩阵的角度上来讲是不同的,因为它们的维度不同 Σ T Σ ∈ R n × n , Σ Σ T ∈ R m × m \Sigma^T \Sigma \in \mathbb{R}^{n\times n},\Sigma \Sigma^T \in \mathbb{R}^{m\times m} ΣTΣRn×n,ΣΣTRm×m。但是它们主对角线上的奇异值是相等的,即有:

Σ T Σ = [ σ 1 2 0 0 0 0 σ 2 2 0 0 0 0 . . . 0 0 0 0 . . . ] n × n   Σ Σ T = [ σ 1 2 0 0 0 0 σ 2 2 0 0 0 0 . . . 0 0 0 0 . . . ] m × m \Sigma^T \Sigma= \begin{bmatrix} \sigma_1^2 & 0 & 0 & 0\\ 0 & \sigma_2^2 & 0 & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & 0 & ... \end{bmatrix}_{n\times n}\ \Sigma \Sigma^T= \begin{bmatrix} \sigma_1^2 & 0 & 0 & 0\\ 0 & \sigma_2^2 & 0 & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & 0 & ... \end{bmatrix}_{m\times m} ΣTΣ= σ120000σ220000...0000... n×n ΣΣT= σ120000σ220000...0000... m×m

因此,对 Σ T Σ \Sigma^T \Sigma ΣTΣ Σ Σ T \Sigma \Sigma^T ΣΣT 的特征值开方,都可以得到所有奇异值。

个人理解:虽然 Σ T Σ \Sigma^T \Sigma ΣTΣ Σ Σ T \Sigma \Sigma^T ΣΣT 的维度不同,但是它们的对角元素个数相同且数值相等,并且等于奇异值的平方。



4 什么是 SVD 的性质?

上面我们对 SVD 的定义和计算做了详细的介绍,下面对 SVD 的性质进行分析。

奇异值分解中的奇异值,与特征分解中的特征值类似,在奇异值矩阵 Σ m × n \Sigma_{m\times n} Σm×n 中也是按照从大到小的顺序排列的。而且奇异值减小的特别快,在很多情况下,前 10 % 10\% 10% 甚至 1 % 1\% 1% 的奇异值的和就占了全部奇异值之和的 99 % 99\% 99% 以上。

这意味着我们可以用前 r r r 个奇异值以及相应的左右奇异向量来近似描述矩阵。也就是说,由于 r r r 要比 n n n 小很多,因此一个大的矩阵 A A A 可以用几个小的矩阵来近似表示。如下图所示:

在这里插入图片描述

说明:不难看出,上图中的 U r , Σ r , V r T U_r,\Sigma_r,V^T_r Ur,Σr,VrT 分别是由原来的 U , Σ , V T U,\Sigma,V^T U,Σ,VT 裁剪得到的矩阵,因此说大矩阵 A A A 可以由几个小矩阵来近似表示。此外,个人认为蓝色块只是为了标出左奇异向量、奇异值、右奇异向量分别是什么,并不是说只需要矩阵的这一部分😇

取其前 r r r 个非零奇异值,可以还原原来的矩阵 A A A,即前 r r r 个非零奇异值对应的奇异向量代表了矩阵 A A A 的主要特征。可以表示为:

A m × n ≈ U m × r Σ r × r V r × n T A_{m\times n} \approx U_{m\times r} \Sigma_{r\times r} V^T_{r\times n} Am×nUm×rΣr×rVr×nT

综上所述: SVD 的一个显著特性是其奇异值衰减速度非常快,这意味着数据集中的大部分信息都可以由前几个大的奇异值表征,而后续的奇异值则迅速减小至可以忽略不计的程度。这一特性使得 SVD 在数据压缩和去噪领域大放异彩,因为它能够有效地捕捉并保留数据的关键特征,同时剔除噪声和次要信息。



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java入门基础学习笔记23——For循环结构

1、for循环: 控制一段代码反复执行很多次。 2、For循环语句的基本结构: for(初始化表达式;判断表达式;递增(递减)表达式) {循环体语句(重复执行的代码) } 例&#xff1…

积温空间分布数据、气温分布数据、日照数据、降雨量分布、太阳辐射数据、地表径流数据、土地利用数据、npp数据、ndvi数据

引言 积温是某一时段内逐日平均气温之和,它是研究植物生长、发育对热量的要求和评价热量资源的一种指标,是影响植物生长的重要因素之一,对指导农业生产和生态建设具有非常重要的意义。作为重要的气候资源,积温与其它资源的区别在于存在很大的地域差异和时…

【再探】设计模式—桥接模式、组合模式及享元模式

结构型设计模式描述了对象与类之间的关系。适配器模式及装饰器模式主要用于接口适配及功能增强,而桥接模式模式则是为了减少类的数量,组合模式让部分与容器能被客户端统一对待处理,享元模式则是用于节约系统内存,提高系统性能。 …

kk聊天室系统源码搭建-自适应手机电脑-秒级响应-群体消息

kk聊天室系统源码搭建-自适应手机电脑-秒级响应-群体消息-单体消息 可以无限创建聊天室,可以把单个聊天室链接拿出来单独使用,消息秒级响应,支持设置屏蔽词。 具体仔细看视频演示,不提供演示,因为青狐资源网会员用户太…

第25次修改留言板,修改了布局,样式和脚本分离

伤心城市 首页 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"beiwanglu" content"widthdevice-width, initial-scale1.0"><link rel"stylesheet" type&qu…

每周题解:牛的旅行

题目描述 牛的旅行 农民John的农场里有很多牧区。有的路径连接一些特定的牧区。一片所有连通的牧区称为一个牧场。但是就目前而言&#xff0c;你能看到至少有两个牧区不连通。 现在&#xff0c;John想在农场里添加一条路径 ( 注意&#xff0c;恰好一条 )。对这条路径有这样的…

宁静致远(“静”)

宁静致远是一个成语&#xff0c;读音为nng jng zh yuǎn&#xff0c;意思是只有心境平稳沉着、专心致志&#xff0c;才能厚积薄发、 有所作为。出自《淮南子:主术训》。 出处 宁静致远张铭篆刻 此句最早出自西汉初年道家刘安的《淮南子:主术训》&#xff0c;蜀汉丞相诸葛亮的…

​学者观察 | 从区块链应用创新看长安链发展——CCF区块链专委会荣誉主任斯雪明

导语 2024年1月27日&#xff0c;斯雪明教授在长安链发布三周年庆暨生态年会上发表演讲&#xff0c;认为在区块链发展过程中&#xff0c;不仅需要技术创新&#xff0c;同时需要有价值、有特色、有示范意义的应用创新。斯雪明教授介绍了国内区块链技术与应用发展的现状、趋势与挑…

C++ I/O流(一)——输出流

一、IO流概念 IO流可分为输入流和输出流,用于从设备(如键盘、文件、网络等)读取数据或向设备写入数据。C++标准库提供了丰富的IO流类,包括iostream、fstream、stringstream等,分别用于处理控制台输入输出、文件输入输出和字符串流操作。 读操作:输入流中读取数据到程序中…

CTFshow 爆破

第一题0 抓包发现输入账号密码后数据包会多一个base64编码 所有推出用户密码在传输的时候进行了加密 所以爆破时也用base64加密 设置paylod 用题目给的字典 在添加两条规则 第一个是增加前缀 admin: 第二个是使得payload进行base64编码 取消URL编码字符 因为会把号编码了 开…

C# .Net8 switch 的用法

在 .net 8中&#xff0c;switch 不需要再和传统的写法一样了&#xff0c;会更加的方便 创建一个 .net 8 控制台项目 switch 的写法没必要和以前一样 namespace SwitchTest {internal class Program{static void Main(string[] args){int day 3;var week day switch{1 > &…

SAP_ABAP-思考篇

作为一个SAP十年左右的从业者&#xff0c;其实我很清楚&#xff0c;我自身的能力&#xff0c;确实是很多东西都会一点&#xff0c;但是没有一样是精通的。坦白来说&#xff0c;我的个人简介里&#xff0c;虽然也不算夸大&#xff0c;但我估计有些新手小白看着可能会觉得还挺厉害…

21【Aseprite 作图】画白菜

1 对着参考图画轮廓 2 缩小尺寸 变成这样 3 本来是红色的描边&#xff0c;可以通过油漆桶工具&#xff08;取消 “连续”&#xff09;&#xff0c;就把红色的轮廓线&#xff0c;变成黑色的 同时用吸管工具&#xff0c;吸取绿色和白色&#xff0c;用油漆桶填充颜色 4 加上阴影…

论文阅读-《MHFormer: Multi-Hypothesis Transformer for 3D Human Pose Estimation》

目录 1 摘要 2 介绍 3 相关工作 3.1 3D HPE 3.2 ViT 3.3 多假设方法 4 MHFormer 4.1 概述 4.2 准备阶段 4.2.1 多头自注意力机制&#xff08;MSA&#xff09; 4.2.2 多层感知器&#xff08;MLP&#xff09; 4.3 MHG-多假设生成 4.3.1 概述 4.3.2 详细解释&#x…

基于Vue和uni-app的增强型多选框Checkbox组件开发

基于Vue和uni-app的增强型多选框&#xff08;Checkbox&#xff09;组件开发 摘要 随着前端技术的不断发展和用户体验要求的提升&#xff0c;传统的Checkbox组件已不能满足所有需求。本文介绍了一种基于Vue和uni-app的增强型多选框&#xff08;Checkbox&#xff09;组件的开发…

一文了解人工智能AI、大模型、AI大模型、ChatGPT、GPT-4、OpenAI、Claude 3...

AI是什么&#xff1f; 首先&#xff0c;AI是什么&#xff1f; 人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;英文缩写为AI。 是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 简单来说就是模拟人类行为…

Linux文件系统详解

&#x1f30e;Linux文件系统 文章目录&#xff1a; Linux文件系统 简单认识磁盘 文件系统       磁盘线性结构抽象       文件系统存储方法 inode Table         inode Bitmap         Data Block         Block Bitmap         …

Python 全栈体系【四阶】(四十五)

第五章 深度学习 十、生成对抗网络&#xff08;GAN&#xff09; 1. 图像生成技术概述 1.1 什么是图像生成技术 图像生成技术是指利用机器学习或深度学习等人工智能技术&#xff0c;通过训练模型来生成逼真的图像。这些技术可以根据给定的输入&#xff0c;生成与真实图像相似…

MySQL基础--SQL优化

插入数据 insert 优化 批量插入 手动提交事务 主键顺序插入 大批量插入数据 如果一次性需要大批量插入数据&#xff0c;使用 insert 语句插入性能较低&#xff0c;此时可以使用 MySQL 数据库提供的 load 指令插入&#xff0c;操作如下&#xff1a; 主键优化 在 InnoDB 存储引擎…

DiffusionModel-DDIM推导+代码详解

视频deep_thoughts 论文https://arxiv.org/abs/2010.02502 参考https://blog.csdn.net/weixin_47748259/article/details/137018607 DDPM生成过程就是把每一步都看作高斯分布的形式&#xff0c;所以采样过程和前向加噪过程的链条长度是一致的。DDIM就是在思考能不能够加速这个采…