奇异值分解(Singular Values Decomposition,SVD)

article/2025/10/14 0:41:36

奇异值分解

1.奇异值分解

笔记来源:Singular Value Decomposition (SVD) and Image Compression

1.1 变换(Transformations)

左侧图形先进行水平方向缩放,再进行垂直方向缩放,而后进行旋转,发现经过一系列变换后与右侧图形不符,说明缩放和旋转的操作有时是有顺序的

正确操作:先进行旋转,再进行水平方向缩放,而后进行垂直方向缩放,得到与右侧一致的图形

1.2 线性变换(Linear Transformations)





一步复杂变换 A A A(主要考虑高维)分解为了三个简单变换 V † 、 Σ 、 U V^{\dagger}、\Sigma、U VΣU

1.3 降维(Dimensionality Reduction)

我们将上述矩阵 Σ \Sigma Σ中的 σ 2 = 0.44 \sigma_2=0.44 σ2=0.44 修改为 σ 2 = 0 \sigma_2=0 σ2=0 ,二维图形直接被压缩成了一维


降维的好处:存储数据减少

1.4 奇异值分解(SVD)

1.4.1 如果矩阵 A A A是方阵(Square Matrix)


例子:

1.4.2 如果矩阵 A A A是非方阵(Non-Square Matrix)

1.5 图像压缩(Image Compression)

1.6 如何计算分解的三个矩阵?


U = [ u 1 u 2 ⋯ ] Σ = d i a g [ σ 1 σ 2 ⋯ ] V T = [ v 1 T v 2 T ⋮ ] U=\begin{bmatrix}\boldsymbol{u}_1 & \boldsymbol{u}_2 & \cdots \end{bmatrix}\\ ~\\ \Sigma=diag\begin{bmatrix}\sigma_1 & \sigma_2 & \cdots \end{bmatrix}\\ ~\\ V^{T}=\begin{bmatrix}v_1^T \\ v_2^T\\ \vdots\end{bmatrix} U=[u1u2] Σ=diag[σ1σ2] VT=v1Tv2T

计算矩阵 A A A的特征值
d e t A = λ 1 λ 2 = 15 t r A = λ 1 + λ 2 = 8 λ 1 = 3 、 λ 2 = 5 det\ A=\lambda_1\lambda_2=15\\ ~\\ tr\ A=\lambda_1+\lambda_2=8\\ ~\\ \lambda_1=3、\lambda_2=5 det A=λ1λ2=15 tr A=λ1+λ2=8 λ1=3λ2=5
计算 A A T AA^T AAT
A A T u i = σ i 2 u i A A T = [ 3 0 4 5 ] [ 3 4 0 5 ] = [ 25 20 20 25 ] AA^T\boldsymbol{u}_i=\sigma^2_i\boldsymbol{u}_i\\ ~\\ AA^T= \begin{bmatrix}3 & 0\\ 4 & 5\end{bmatrix} \begin{bmatrix}3 & 4\\ 0 & 5\end{bmatrix}= \begin{bmatrix}25 & 20\\ 20 & 25\end{bmatrix} AATui=σi2ui AAT=[3405][3045]=[25202025]
计算 A A T AA^T AAT的特征值 σ 2 \sigma^2 σ2【这里的 σ \sigma σ 叫做矩阵 A A A的奇异值】
法一: d e t ( A A T − σ I ) = 0 det(AA^T-\sigma I)=0 det(AATσI)=0
法二:
d e t A A T = 225 = σ 1 2 σ 2 2 t r A A T = 50 = σ 1 2 + σ 2 2 σ 1 2 = 45 、 σ 2 2 = 5 σ 1 = 45 、 σ 2 = 5 σ 1 σ 2 = 15 = d e t A det\ AA^T=225=\sigma_1^2\sigma_2^2\\ tr\ AA^T=50=\sigma_1^2+\sigma_2^2\\ \sigma_1^2=45、\sigma_2^2=5\\ \sigma_1=\sqrt{45}、\sigma_2=\sqrt{5}\\ \sigma_1\sigma_2=15=det\ A det AAT=225=σ12σ22tr AAT=50=σ12+σ22σ12=45σ22=5σ1=45 σ2=5 σ1σ2=15=det A

计算 A T A A^TA ATA
A T A v i = σ i 2 v i A T A = [ 3 4 0 5 ] [ 3 0 4 5 ] = [ 9 12 12 41 ] A^TA\boldsymbol{v}_i=\sigma^2_i\boldsymbol{v}_i\\ ~\\ A^TA=\begin{bmatrix}3 & 4\\ 0 & 5\end{bmatrix} \begin{bmatrix}3 & 0\\ 4 & 5\end{bmatrix}= \begin{bmatrix}9 & 12\\ 12 & 41\end{bmatrix} ATAvi=σi2vi ATA=[3045][3405]=[9121241]
计算 A T A A^TA ATA的特征向量 v 1 \boldsymbol{v}_1 v1【这里的 v 1 \boldsymbol{v}_1 v1 是矩阵 A A A 的右奇异向量】
A T A v 1 = σ 1 2 v 1 [ 9 12 12 41 ] [ a 1 a 2 ] = 45 [ a 1 a 2 ] a 1 = a 2 [ 9 12 12 41 ] [ 1 1 ] = 45 [ 1 1 ] A^TA\boldsymbol{v}_1=\sigma_1^2\boldsymbol{v}_1\\ ~\\ \begin{bmatrix}9 & 12\\ 12 & 41\end{bmatrix} \begin{bmatrix}a_1 \\ a_2\end{bmatrix}=45 \begin{bmatrix}a_1 \\ a_2\end{bmatrix}\\ ~\\ a_1=a_2\\ ~\\ \begin{bmatrix}9 & 12\\ 12 & 41\end{bmatrix} \begin{bmatrix}1 \\ 1\end{bmatrix}=45 \begin{bmatrix}1 \\ 1\end{bmatrix} ATAv1=σ12v1 [9121241][a1a2]=45[a1a2] a1=a2 [9121241][11]=45[11]
计算 A T A A^TA ATA的特征向量 v 2 \boldsymbol{v}_2 v2【这里的 v 2 \boldsymbol{v}_2 v2 是矩阵 A A A 的右奇异向量】
A T A v 2 = σ 2 2 v 2 [ 9 12 12 41 ] [ a 3 a 4 ] = 5 [ a 3 a 4 ] a 3 = − a 4 [ 9 12 12 41 ] [ − 1 1 ] = 5 [ − 1 1 ] A^TA\boldsymbol{v}_2=\sigma_2^2\boldsymbol{v}_2\\ ~\\ \begin{bmatrix}9 & 12\\ 12 & 41\end{bmatrix} \begin{bmatrix}a_3 \\ a_4\end{bmatrix}=5 \begin{bmatrix}a_3 \\ a_4\end{bmatrix}\\ ~\\ a_3=-a_4\\ ~\\ \begin{bmatrix}9 & 12\\ 12 & 41\end{bmatrix} \begin{bmatrix}-1 \\ 1\end{bmatrix}=5 \begin{bmatrix}-1 \\ 1\end{bmatrix} ATAv2=σ22v2 [9121241][a3a4]=5[a3a4] a3=a4 [9121241][11]=5[11]
单位化后的矩阵 A A A的右奇异向量 v 1 、 v 2 \boldsymbol{v}_1、\boldsymbol{v}_2 v1v2
v 1 = 1 2 [ 1 1 ] 、 v 2 = 1 2 [ − 1 1 ] \boldsymbol{v}_1=\frac{1}{\sqrt{2}}\begin{bmatrix}1 \\ 1\end{bmatrix}、\boldsymbol{v}_2=\frac{1}{\sqrt{2}}\begin{bmatrix}-1 \\ 1\end{bmatrix} v1=2 1[11]v2=2 1[11]
计算矩阵 A A A的左奇异向量 u 1 、 u 2 \boldsymbol{u}_1、\boldsymbol{u}_2 u1u2
A v 1 = σ 1 u 1 u 1 = A v 1 σ 1 = [ 1 3 ] A v 2 = σ 2 u 2 u 2 = A v 2 σ 2 = [ − 3 1 ] A\boldsymbol{v}_1=\sigma_1\boldsymbol{u}_1\\ ~\\ \boldsymbol{u}_1=\frac{A\boldsymbol{v}_1}{\sigma_1}=\begin{bmatrix}1 \\ 3\end{bmatrix}\\ ~\\ A\boldsymbol{v}_2=\sigma_2\boldsymbol{u}_2\\ ~\\ \boldsymbol{u}_2=\frac{A\boldsymbol{v}_2}{\sigma_2}=\begin{bmatrix}-3 \\ 1\end{bmatrix} Av1=σ1u1 u1=σ1Av1=[13] Av2=σ2u2 u2=σ2Av2=[31]
单位化矩阵 A A A的左奇异向量 u 1 、 u 2 \boldsymbol{u}_1、\boldsymbol{u}_2 u1u2
u 1 = 1 10 [ 1 3 ] 、 u 2 = 1 10 [ − 3 1 ] \boldsymbol{u}_1=\frac{1}{\sqrt{10}}\begin{bmatrix}1 \\ 3\end{bmatrix}、\boldsymbol{u}_2=\frac{1}{\sqrt{10}}\begin{bmatrix}-3 \\ 1\end{bmatrix} u1=10 1[13]u2=10 1[31]

分解成的三个矩阵


1.7 联系与区别

笔记来源:Understanding Eigenvalues and Singular Values

联系:特征值和奇异值都描述了线性变换的量级或者说是变换幅度

They (eigenvalues and singular values) both describe the behavior of a matrix on a certain set of vectors.
And the corresponding eigen- and singular values describe the magnitude of that action.

1.7.1 特征值和特征向量

本人相关博客:特征值、特征向量、迹

笔记来源:Understanding Eigenvalues and Singular Values

The eigenvectors of a matrix describe the directions of its invariant action.(不变作用方向)

That eigenvectors give the directions of invariant action is obvious from the definition. The definition says that when A acts on an eigenvector, it just multiplies it by a constant, the corresponding eigenvalue. In other words, when a linear transformation acts on one of its eigenvectors, it shrinks the vector or stretches it and reverses its direction if λ is negative, but never changes the direction otherwise. The action is invariant.

A v = λ v A\boldsymbol{v}=\lambda\boldsymbol{v} Av=λv

the vector v \boldsymbol{v} v is called eigenvector
A scalar λ \lambda λ is called eigenvalue of A A A

1.7.2 奇异值和奇异向量

笔记来源:Understanding Eigenvalues and Singular Values
A v = σ u A ∗ u = σ v A\boldsymbol{v}=\sigma\boldsymbol{u}\\ A^*\boldsymbol{u}=\sigma\boldsymbol{v} Av=σuAu=σv
where A ∗ A^* A is the conjugate transpose of A A A




A v 1 = σ 1 u 1 A v 2 = σ 2 u 2 A\boldsymbol{v}_1=\sigma_1\boldsymbol{u}_1\\ A\boldsymbol{v}_2=\sigma_2\boldsymbol{u}_2 Av1=σ1u1Av2=σ2u2

A scalar σ \sigma σ is a singular value of A A A
σ 1 \sigma_1 σ1 is the largest singular value of A A A with right singular vector v \boldsymbol{v} v
σ 2 \sigma_2 σ2 is the least singular value of A A A with left singular vector u \boldsymbol{u} u

the vectors u 、 v \boldsymbol{u}、\boldsymbol{v} uv are singular vectors
the vector u \boldsymbol{u} u is called a left singular vectors
the vector v \boldsymbol{v} v is called a right singular vectors

The singular vectors of a matrix describe the directions of its maximum action. (最大作用方向)

矩阵 A A A对原空间中的任一单位向量 x \boldsymbol{x} x进行变换
arg max ⁡ x , ∣ ∣ x ∣ ∣ = 1 ∣ ∣ A x ∣ ∣ = ∣ ∣ A v ∣ ∣ = σ 1 \argmax\limits_{\boldsymbol{x},||\boldsymbol{x}||=1}||A\boldsymbol{x}||=||A\boldsymbol{v}||=\sigma_1 x,x=1argmaxAx=Av=σ1

所有单位向量 x \boldsymbol{x} x中某一个向量长度变换最大,它就是右奇异向量 v \boldsymbol{v} v
其在矩阵 A A A的作用下,长度 ∣ ∣ A v ∣ ∣ = σ 1 ||A\boldsymbol{v}||=\sigma_1 Av=σ1

单位圆经过线性变换 A A A得到椭圆
右奇异向量 v \boldsymbol{v} v在椭圆的半长轴上
左奇异向量 u \boldsymbol{u} u在椭圆的半短轴上

拓展到三维空间


1.8 矩阵估计(Matrix Approximation with SVD)


将当前最大奇异值 3 3 3 改写为 0 0 0


改写后矩阵 A 1 A_1 A1 对应的线性变换如下图


将矩阵 A 1 A_1 A1中的当前最大奇异值 2 2 2 改写为 0 0 0


改写后矩阵 A 2 A_2 A2 对应的线性变换如下图

重点:每一个奇异向量都会产生一个线性子空间中的标准正交基

在所有方向正交于有最大奇异向量(最大奇异值对应的向量)中,一个奇异值和其奇异向量将给出最大作用的方向

重要应用:
1.在一些统计学、机器学习中要求找到某个矩阵的低秩估计(Low-rank approximation)
2.主成分分析(PCA)也是这一类问题,即用一些最大方差的不相关分量近似某个观测矩阵X

具体做法:
计算SVD并将最小的奇异值改为0


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

相关文章

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

1. 写在前面 最近整理推荐系统模型的时候, 第二个模型打算整理一下隐语义模型, 这里面绕不开一种思想就是矩阵分解, 而作为矩阵分解的经典方法SVD感觉这次有必要学学了, SVD不仅是一个数学问题,在工程应用中的很多地方…

机器学习(29)之奇异值分解SVD原理与应用详解

微信公众号 关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 奇异值分解(Singular Value Decomposition,简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于…

【机器学习】这次终于彻底理解了奇异值分解(SVD)原理及应用

奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,有相当多的应用与奇异值都可以扯上关系,它不光可以用于降维算法中的特征分解,比如做feature reduction的PCA,做数据压缩&#x…

联邦学习——用data-free知识蒸馏处理Non-IID

《Data-Free Knowledge Distillation for Heterogeneous Federated Learning》ICML 2021 最近出现了利用知识蒸馏来解决FL中的用户异构性问题的想法,具体是通过使用来自异构用户的聚合知识来优化全局模型,而不是直接聚合用户的模型参数。然而&#xff0c…

【FLIS】Clustered Federated Learning via Inference Similarity for Non-IID Data Distribution

Clustered Federated Learning via Inference Similarity for Non-IID Data Distribution 基于推理相似性的非iid数据分布聚类联邦学习 Abstract1.INTRODUCTION2.FEDERATED LEARNING WITH CLUSTERINGA. Overview of FLIS AlgorithmB. Clustering Clients 3.EXPERIMENTSA. Exper…

Federated Learning with Non-IID Data 论文笔记

本文提出联邦学习中的由于Non-IID数据分布而精度降低是因为权重分散(weight divergence),而权重散度可以用搬土距离(EMD)量化,最后提出了一种策略:通过创建一个在所有边缘设备之间全局共享的数据…

论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题

‍ ‍ 本次分享内容基于ICLR 2021收录的一篇文章:《FED BN: FEDERATED LEARNING ON NON-IID FEATURES VIA LOCAL BATCH NORMALIZATION》,这篇论文主要探讨了使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题。围绕这篇论文的分享将分为4个部分&#…

On the convergence of FedAvg on non-iid data

在这篇blog中我们一起来阅读一下 On the convergence of FedAvg on non-iid data 这篇 ICLR 2020 的paper. 主要目的 本文的主要目的是证明联邦学习算法的收敛性。与之前其他工作中的证明不同,本文的证明更贴近于实际联邦学习的场景。特别的, 所有用户…

Federated Learning with Non-IID Data

Federated Learning with Non-IID Data 论文中分析了FedAvg算法在Non-IID数据时,准确率下降的原因。并提出共享5%的数据可提高准确率。 论文笔记参考:https://blog.csdn.net/GJ_007/article/details/104768415 Federated Learning with Non-IID Data …

什么是TLB文件,怎样从dll文件中提取TYPEID信息?- IID

文章目录 1.TLB是什么?2.怎样从dll中导出TLB文件?3.怎样创建TLB文件?4.如何导入TLB5.作者答疑Com是windows平台提供的二进制互操作解决方案。如果给你一个dll,或者windows自带的dll,是否有可能提取其Com接口信息,答案是可以的。 1.TLB是什么? TLB文件是一个说明文件,通…

怎么实现联邦学习中的Non-IID?

联邦学习的一大特点就是数据分布是Non-IID,Non-IID意为非独立同分布。那么怎么在实验中实现non-iid呢?这是我这篇博客想讨论的问题。 part 1: 在堪称联邦学习“开山之作”FedAvg这篇论文中,是这样描述的: 数据集是MN…

【联邦学习】联邦学习量化——non-iid数据集下的仿真

文章目录 改进项目背景量化函数的改进non-iid数据集的设置Fedlab划分数据集的踩雷 改进项目背景 在前面的项目中,虽然对联邦学习中,各个ue训练出来的模型上传的参数进行了量化,并仿真的相关结果。但是仍有一些俺不是非常符合场景的情况&…

「隐语小课」联邦学习之Non-IID问题

更多干货内容,请移步公众号:隐语的小剧场 一、引言 本文针对联邦学习中遇到的Non-IID问题进行探讨,介绍Non-IID产生的原因,分析Non-IID对联邦学习的影响,以及调研了近年来针对该问题的解决方案,并进行分类…

联邦学习中的non-iid总结

最近研究联邦学习(federated learning,FL)中的non-iid的解决办法时遇到瓶颈,写成博客将最近的工作总结一下,希望有大佬看到这篇博客不吝赐教。 什么是non-iid 先从维基百科引出独立同分布的定义: 在概率论…

IID 与 Non-IID

数据独立同分布(Independent Identically Distribution,IID) 数据与数据之间都是独立的,但满足同一个分布。(独立:一个数据的出现不会影响另一个数据) 数据分布描述的是数据的统计情况&#x…

dy设备deviceid iid注册分析

清楚缓存,重新打开app, 点击同意按钮,会触发设备注册; 很明显是一个post包,device_register 可以看到请求体加密了 那么 请求体是什么呢? 很老版本思路:都是直接明文注册 较老版本思路:在反编译…

Redis 设计与实现: redisObject 数据结构,以及 Redis 的数据类型

redisObject 数据结构,以及 Redis 的数据类型 redisObject 是 Redis 类型系统的核心, 数据库中的每个键、值,以及 Redis 本身处理的参数, 都表示为这种数据类型。 redisObject 的定义位于 redis.h : /** Redis 对象…

(五)、Redis的RDB持久化---Redis设计与实现读书笔记

两个用于生成RDB文件的命令 save:会阻塞Redis服务器进程,直到RDB文件创建完毕,在阻塞期间,服务器不能处理任何命令请求bgsave:会派生出一个子进程,然后由子进程负责创建RDB文件,服务器经常(父进…

《redis设计与实现》 读书笔记

《redis设计与实现》 作者:黄健宏 读书笔记 一、前言 什么是redis: Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。简而言之redis就是放在远程网络上的一个key-va…

《Redis设计与实现》阅读:Redis底层研究之简单动态字符串SDS

除仅用于字符串字面量的情况外,对于可以被修改值的字符串的表示,Redis底层并没有采用C语言传统的字符串表示,即以空字符结尾的字符数组,而是采用专门为其设计的简单动态字符串作为其默认字符串表示,其英文全称为Simple…