超详细解释奇异值分解(SVD)【附例题和分析】

目录

一. 矩阵对角化

二. 奇异值分解

三. 对比奇异值分解与特征值分解

四. SVD分解与四大基础子空间

五. SVD分解的正交矩阵

六. 方阵与SVD分解

七. 单位特征向量与SVD分解

八. 例题分析:秩为1

九. 例题分析:秩为2

十. 计算机网络与矩阵的秩


一. 矩阵对角化

线性代数中,常出现把矩阵进行对角化的过程,然后将其应用于简化计算,解方程等等。但是,只有对称矩阵才可以对角化。另外,方阵才有特征值和特征向量的说法。

给定m行n列的矩阵A,如下方程:

Ax=b

该方程可能有一个解,可能有无数个解,也可能会出现无解的情况。

但我们知道A^TAAA^T都是方阵,且都是半正定矩阵,所以可以对角化而且特征值都大于等于0。于是,以上方程有解:

A^TAx=A^Tb

二. 奇异值分解

奇异值分解,singular value decomposition,通常简写为SVD分解。

备注:建议看这部分知识的小伙伴可以先看矩阵的LU分解,QR分解。

已知正定矩阵(positive definite matrix),如果我们想分析它的特征值和特征向量,可将其分解为如下:

Q\Lambda Q^T

其中\Lambda为对角矩阵,即为原始矩阵的特征值。Q为特征向量形成矩阵,如果原始矩阵为对称矩阵,矩阵Q可为标准正交矩阵,满足如下:

QQ^T=I

但,当矩阵非方阵(rectangular matrix),以上分解是行不通的,因为该矩阵没有特征值这一概念的。

由此,便出现了对矩阵进行SVD分解,通式如下:

A=U\Sigma V^T

其中\Sigma为对角阵(非方阵),将其对角线处非零的元素记为\sigma_1,\cdots,\sigma_r,此对角矩阵有两种理解方式:

  1. A^TA的特征值;
  2. A的奇异值(singular value)

主对角线处的元素个数与原始矩阵A的秩有关。

备注:此处的矩阵A可以是任意矩阵,但A^TAAA^T都一定为方阵。所以经常会利用这两个方阵来理解奇异值和特征值的区别。

对任意m行n列的矩阵A,奇异值分解的综合理解如下:

正交矩阵U:m行m列,该矩阵的每一个列向量都是AA^T的特征向量;

正交矩阵V:n行n列,该矩阵的每一个列向量都是A^TA的特征向量;

对角阵\Sigma:m行n列,将A^TAAA^T的特征值开根号,得到的就是该矩阵主对角线上的元素,也可以看成矩阵A的奇异值。

三. 对比奇异值分解与特征值分解

对于正定矩阵来讲,以上讨论的\Sigma\Lambda是一样的,U\Sigma V^TQ\Lambda Q^T是一样的。

对于非正定矩阵(要求是对称矩阵),此时\Lambda会出现负数,但\Sigma依旧为正数。

推广到复数矩阵,对于SVD分解A=U\Sigma V^H,此时的U和V即为酉矩阵(unitary),满足如下:

U^HU=I,\quad V^HV=I

其中,U^HV^H代表共轭转置。

\Sigma中的元素依旧为实数。

四. SVD分解与四大基础子空间

对于任意矩阵有四个非常重要的子空间:列空间(column space),行空间(row space),左零空间(left nullspace),零空间(nullspace)。

假定某m行n列矩阵A的秩为r,将矩阵U和V的列向量可以作为不同空间的标准正交基,如下:

  • 矩阵U的前r个列向量可以作为A列空间的标准正交基;
  • 矩阵U的后m-r个列向量可以作为A左零空间的标准正交基;
  • 矩阵V的前r个列向量可以作为A行空间的标准正交基;
  • 矩阵U的后n-r个列向量可以作为A零空间的标准正交基;

如下:

五. SVD分解的正交矩阵

已知A=U\Sigma V^T,两边同时乘以正交矩阵V,可得:

AV=U\Sigma

这个结果有一个很有意思的理解角度:从矩阵V中随机抽取一个列向量v_j,对应位置抽取对角阵的元素\sigma_j,以及矩阵U的列向量U_j,可得:

Av_j=u_j\sigma_j

六. 方阵与SVD分解

对方阵AA^T做SVD分解,如下:

AA^T=U\Sigma V^T(U\Sigma V^T)^T=U\Sigma\Sigma^TU^T

此时U即为AA^T的特征向量形成的矩阵,\Sigma\Sigma^TAA^T的特征值。

同理,对A^TA运算如下:

A^TA=(U\Sigma V^T)^TU\Sigma V^T=V\Sigma^T\Sigma V^T

此时V即为A^TA的特征向量形成的矩阵,\Sigma^T\SigmaA^TA的特征值。令r代表矩阵A的秩:

\Sigma\Sigma^T为m行m列的矩阵,主对角线的元素为\sigma_1^2,\cdots,\sigma_r^2

\Sigma^T\Sigma为n行n列的矩阵,主对角线的元素为\sigma_1^2,\cdots,\sigma_r^2

可以观察到\Sigma^T\Sigma\Sigma\Sigma^T都为方阵,维度是不一样的,但是它们两个主对角线元素是一模一样的。

七. 单位特征向量与SVD分解

根据“六”中的讨论,A^TA的特征值为\sigma_1^2,\cdots,\sigma_r^2,特征向量为v_j,由此可得:

A^TA v_j=\sigma_j^2 v_j

两边同时乘以矩阵A可得:

AA^TA v_j=\sigma_j^2 Av_j

AA^T看成一个矩阵,A v_j看成特征向量,\sigma_j^2看成特征值。也就是说,A v_j是矩阵AA^T的特征向量。易得:

||Av_j||^2=\sigma_j^2

所以可得向量A v_j的长度为\sigma_j,那么可得单位向量为:

\frac{A v_j}{\sigma_j}

综合可得:

\frac{A v_j}{\sigma_j}=u_j

以上过程的本质就是AV=U\Sigma

八. 例题分析:秩为1

对以下矩阵A进行SVD分解,并分析相关性质:

A=\begin{bmatrix} -1\\ 2\\ 2 \end{bmatrix}

解:

该矩阵仅有一列,所以秩r=1,这也就意味着该矩阵进行SVD分解,中间的对角阵\Sigma仅有一个非零元素,如下:

对角阵\Sigma主对角线仅有一个元素\sigma_1=3

易得A^TA为1行1列的矩阵,AA^T为3行3列的矩阵,这两个矩阵都拥有特征值9,开根号后刚好为3,与以上讨论一致。

九. 例题分析:秩为2

对以下矩阵A进行SVD分解,并分析相关性质:

A=\begin{bmatrix} -1 & 1 &0 \\ 0&-1 & 1 \end{bmatrix}

解:

显然,矩阵A的秩为2,易运算AA^T如下:

AA^T=\begin{bmatrix} 2 & -1\\ -1 & 2 \end{bmatrix}

可以分析出该方阵的特征值为3和1.

对原始矩阵A进行SVD分解如下:

可以发现该矩阵的奇异值为\sqrt 3\sqrt 1

矩阵U的每一列可以看成A的左奇异向量,也可以看成AA^T的单位特征向量;

矩阵V的每一列可以看成A的右奇异向量,也可以看成A^TA的单位特征向量;

十. 计算机网络与矩阵的秩

我们都知道矩阵的秩代表的是线性独立的行向量或列向量的个数。但在实际的计算中这个量不是很好分析。

在物理层安全,或无线通信中,会存在噪声,这些噪声通常很小,进而延伸出矩阵有效的秩概念。

假定\epsilon是一个很小很小的数,可以将其看成所谓的误差(roundoff error)

(1)

\begin{bmatrix} \epsilon &2\epsilon \\ 1 & 2 \end{bmatrix}

很明显这个矩阵的秩为1

(2)

\begin{bmatrix} \epsilon &1 \\ 0& 0 \end{bmatrix}

这个矩阵的秩也很好分析,为1

接下来我们来看第三个有趣的例子:

\begin{bmatrix} \epsilon &1 \\ \epsilon &1+\epsilon \end{bmatrix}

乍一看这个矩阵的秩为2,但实际情况真的如此吗?

我们知道A^TAAA^T均为对称的方阵,并且这两个矩阵的秩与A相同

对这两个矩阵而言,特征值开根号即为奇异值,根据这个角度不难分析刚才的矩阵A有效的秩为1(不要忘记\epsilon为一个很小的数)。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RabbitMQ集群的简单说明

1.普通集群(副本集群) 当集群中某一时刻master主节点宕机,可以对master中Queue中的消息进行备份。而就算master宕机了,从节点不会对外提供服务,等到master节点恢复后,系统才会恢复正常。 主从架构的缺点是队列中的消息只是位于主节…

探索Java的魅力

从本篇文章开始,小编准备写一个关于java基础学习的系列文章,文章涉及到java语言中的基础组件、实现原理、使用场景、代码案例。看完下面一系列文章,希望能加深你对java的理解。 本篇文章作为本系列的第一篇文章,主要介绍一些java…

C语言实验3:函数的定义

目录 一、实验要求 二、实验原理 1.函数头 2.函数体 3.函数的定义及使用 三、实验内容 1. sum函数 代码 截图 分析 2. sum函数 代码 截图 分析 3. rank_grade函数 代码 截图 分析 4. rank_grade函数 代码 截图 分析 5. 函数的嵌套使用 代码 截图 分析…

同城家政服务预约上门系统功能特点;

在繁忙的现代生活中,家政服务越来越受到人们的青睐。为了满足大家的需求,家政服务小程序应运而生。这款小程序致力于提供便捷的家政服务,让用户尽享高效、贴心的体验。本文将深入剖析家政服务小程序的功能特点及其优势。 一、家政服务小程序的…

华为高级Java面试真题

今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了《知识星球》,并邀请我阿里、快手、腾讯等的朋友加入,分享八股文、项目经验、管理经验…

C# OpenCvSharp读取rtsp流录制mp4可分段保存

软件界面: 测试环境: VS2019 .NET Framework 4.7.2 OpencvSharp4.8.0 输入RTSP流地址即可拉取RTSP流,支持抓拍和录制RTSP流视频,且支持支持按固定时间保存,比如我想5分钟保存一个视频,设置保存间隔为30…

Linux实战:部署基于Postfix 与 Dovecot 的邮件系统

一、电子邮件系统简介 在电子邮件系统中,为用户收发邮件的服务器名为邮件用户代理(Mail User Agent,MUA),MTA (邮件传输代理)的工作职责是转发处理不同电子邮件服务供应商之间的邮件&#xff0…

【node-express-sse】Server Sent Event 单向推送消息,实现站内信功能

sse 实现效果代码前端后端 实现效果 服务端返回的 Content-Type 是 text/event-stream,这是一个流,可以多次返回内容。 Sever Sent Event 就是通过这种消息来随时推送数据。 AIGC,如 ChatGPT 打字机消息回复实现原理 等也是使用sse实现。 还有…

安卓在SOA中的运用

安卓在运用SOA研发的过程中,会针对实际情况对研发的架构和流程进行优化,通过优化过的架构和实施方案,不仅可以大大提升了整车开发的效率和灵活行以及功能落地的稳定性,同时也增加了系统的向上兼容性。 目前基于车载SOA系统的研发…

软件游戏缺失XINPUT1_3.dll怎么安装,马上教会你

当我们打开某个软件或游戏时,系统提示“XINPUT1_3.dll丢失”怎么办,XINPUT1_3.dll是一个动态链接库文件,它包含了许多用于处理输入设备的函数。当计算机丢失这个文件时,一些依赖于它的应用程序可能无法正常运行,导致输…

实践:基于双向LSTM模型完成文本分类任务

目录 1 数据处理 1.1 数据加载 1.2 构造Dataset类 1.3 封装DataLoader 2 模型构建 3 模型训练 4 模型评价 5 模型预测 5 拓展实验 5.1 使用Pytorch内置的单向LSTM进行文本分类实验 ​编辑 5.2 使用Paddle内置的单向LSTM进行文本分类实验 总结 电影评论可以蕴含…

打印菱形和金字塔类型(总结)

首先,在之前的学习中,我们了解了菱形的打印,今天我们来对金字塔和菱形这类打印图形的问题,我们来做一个总结。 这个总结的来源是这今天做了一道题 这道题的答案如下 这个题做起来并不难,拓展到这类问题中,…