IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 奇异值分解(SVD)(Singular Value Decomposition) -> 正文阅读

[人工智能]奇异值分解(SVD)(Singular Value Decomposition)

奇异值分解在机器学习中经常碰到,今天详细讲讲。本文章中说的"矩阵" / "向量" 都指的是实数矩阵/实数向量,我们只说实数域内的情况。

整数有质因子分解,比如12=2*2*3。分解成2*2*3后,比单单研究12这个数,我们会容易得到一些信息,比如,12这个数不能整除5;一个数 n? 乘12后,会整除 2 和 3;等等。

那么矩阵呢,我们是否可以像整数的质因子分解一样进行分解?这样比单单研究这个矩阵也许就会获得很多有用的信息。答案是任何一个矩阵都可以进行奇异值分解,并且奇异值分解很有用。

本篇文章的目录如下:

特征分解(Eigendecomposition)

特征向量与特征值

有n个线性独立特征向量的方阵性质,包括几何解释

什么样的矩阵有n个线性独立特征向量

奇异值分解(Singular Value Decomposition)

左奇异向量、右奇异向量、奇异值

奇异值分解的几何解释

紧奇异值分解和截断奇异值分解

奇异值分解的应用


我们在说奇异值分解之前,需要先说说特征值分解。

特征分解(Eigendecomposition)

特征向量与特征值

首先,特征分解只适用于方阵

我们可以定义特征向量。如果一个非0向量? \boldsymbol{v}?满足?\boldsymbol{A}\boldsymbol{v}=\lambda \boldsymbol{v},那么这个非0向量?\boldsymbol{v}?就是?\boldsymbol{A}?的特征向量。

一个矩阵?\boldsymbol{A}_{n\times n}?可能没有特征向量,也可能有特征向量。如果有特征向量,也可能有?\boldsymbol{n}?个线性独立的特征向量,或者?<\boldsymbol{n}?个线性独立的特征向量。

有n个线性独立特征向量的方阵性质,包括几何解释

如果一个矩阵?\boldsymbol{A}_{n\times n}有特征向量,并且有?\boldsymbol{n}?个线性独立的特征向量,我们可以分析出来一些有用的信息,那可以分析出来什么信息呢?我们可以简单地推导一下:

一、代数性质

我们记这\boldsymbol{n}个线性独立的特征向量为\{\boldsymbol{v^{(1)},...,v^{(n)}}\},并且对应的特征值为\{\lambda _{1},...,\lambda _{n}\}。我们将每一个特征向量作为一列拼起来,形成特征向量矩阵\boldsymbol{V}=[\boldsymbol{v^{(1)}},...,\boldsymbol{v^{(n)}}]?,同理我们把相应的特征值拼成一个向量\boldsymbol{\lambda }=[\lambda _{1},...,\lambda _{n}]^{T},那么我们可以得到:

\boldsymbol{A}\boldsymbol{V}=\boldsymbol{V}diag(\boldsymbol{\lambda })

由于?\boldsymbol{V}?是 n 阶方阵,并且所有列都相互线性独立,所有\boldsymbol{V}的逆\boldsymbol{V}^{-1}存在,所有可得:

\boldsymbol{A}=\boldsymbol{V}diag(\boldsymbol{\lambda })\boldsymbol{V}^{-1}??

如果我们将\boldsymbol{V}?中的每一列都化为单位向量并且和其他向量都正交,当然此时的\boldsymbol{\lambda }也发生了改变,那么可以得到一个正交矩阵?\boldsymbol{Q}?,由于正交矩阵?\boldsymbol{Q}^{-1}=\boldsymbol{Q}^{T},可以得到:

\boldsymbol{A}=\boldsymbol{Q}diag(\boldsymbol{\Lambda })\boldsymbol{Q}^{T}

这个式子是我们经常见到的式子,用这个式子推导其他式子都很方便。

二、几何性质

上述都是基于公式推导理解,有没有特征值分解的几何理解呢?我们不妨先基于二维平面做一下分析。

假设\boldsymbol{A}_{2\times 2}?有2个线性独立的特征向量?\boldsymbol{v}^{(1)}?和?\boldsymbol{v}^{(2)}?(假设我们已经将这两个特征化简成了正交单位向量),以及对应的特征值?\lambda _{1}?和?\lambda _{2}。我们可以分析二维平面单位圆上的点,设这个单位圆上每一个点的坐标是?(x,y)?,每一个点的点向量是?\boldsymbol{u}?,我们都知道?\boldsymbol{u} = x\boldsymbol{v}^{(1)}+y\boldsymbol{v}^{(2)}?且?x^{2}+y^{2}=1?。

如果我们给?\boldsymbol{u}?左乘\boldsymbol{A}_{2\times 2}?得到?\boldsymbol{Au}?向量,该点坐标为({x}',{y}')? ,那么?\boldsymbol{Au}=\boldsymbol{A}(x\boldsymbol{v}^{(1)}+y\boldsymbol{v}^{(2)})=x\boldsymbol{A}\boldsymbol{v}^{(1)}+y\boldsymbol{A}\boldsymbol{v}^{(2)}=x\lambda _{1}\boldsymbol{v}^{(1)}+y\lambda _{1}\boldsymbol{v}^{(2)}

根据推导出来的式子我们得知\boldsymbol{Au}?的点坐标为?(x\lambda _{1},y\lambda _{2})?,?\boldsymbol{Au}?向量的两个点坐标相等,故而\left\{\begin{matrix} {x}'=x\lambda _{1}\\ {y}'=y\lambda _{2}\end{matrix}\right.? 。由于??x^{2}+y^{2}=1,所以得\frac{?{x}'^{2}}{\lambda _{1}^{2}}+\frac{?{y}'^{2}}{\lambda _{2}^{2}}=1,这是个椭圆呀~,可以下结论了,一个圆上所有点左乘一个?\boldsymbol{A}?会使得这个圆变成椭圆,并且哪个特征向量的特征值越大,原向量就越偏向哪个特征向量,与这个特征值大的特征向量之间的夹角就会变小,如下图所示:

?我们将单位圆上的点推广到二维平面的所有圆上的点(也就是二维平面上的所有点),该点对应的向量左乘\boldsymbol{A}都会使该向量发生转变(方向和模都变),\boldsymbol{A}的哪个特征向量的特征值大,转变后的向量就越偏向那个特征向量,与其夹角会变小,并且转变后的向量的模大程度受\boldsymbol{A}的最大特征值的影响。

什么样的矩阵有n个线性独立特征向量

实对称矩阵一定有n个线性独立特征向量,但是有n个线性独立特征向量的矩阵不一定是实对称矩阵。具体的证明就不在这里说啦,想找证明的话书上找找叭~

奇异值分解(Singular Value Decomposition)

左奇异向量、右奇异向量、奇异值

只有方阵可以进行特征分解。对于一般的矩阵,可以用奇异值分解进行分解。一个一般的矩阵可以被分解成这样:

\boldsymbol{A}=\boldsymbol{U}\boldsymbol{D}\boldsymbol{V}^{T}? ?(把各个矩阵的维度标出来的话就是?\boldsymbol{A}_{m\times n}=\boldsymbol{U}_{m\times m}\boldsymbol{D}_{m\times n}\boldsymbol{V}_{n\times n}^{T}

其中 :

1、\boldsymbol{U}?是?\boldsymbol{A}\boldsymbol{A}^{T}?的特征向量矩阵(是正交矩阵);??\boldsymbol{U}的列向量称为左奇异向量(left singular vector)。?

2、\boldsymbol{V}?是?\boldsymbol{A}^{T}\boldsymbol{A}?的特征向量矩阵(是正交矩阵);? \boldsymbol{V}的列向量称为右奇异向量(right singular vector)。??

3、\boldsymbol{D}?是对角矩阵,\boldsymbol{D}中对角线上的非0值是?\boldsymbol{A}^{T}\boldsymbol{A}?的非0特征值的平方根 ,同时也是\boldsymbol{A}\boldsymbol{A}^{T}的非0特征值的平方根。(\boldsymbol{D}中对角线上的值从大到小降序排列;\boldsymbol{D}对角线上非0值的个数是\boldsymbol{A}的秩,其<=min(m,n)? )。\boldsymbol{D}中非0值称为奇异值(singular value)。

至于奇异值分解基本定理的证明,可以参考李航老师的统计学习方法第二版 第15章 奇异值分解~,写的真的很明白!这里就不证明了。

奇异值分解的几何解释

实对称矩阵的特征值分解的几何解释是:对任意向量?\boldsymbol{u}?左乘一个实对称矩阵\boldsymbol{A},则\boldsymbol{u}?在同一个空间内会发生缩放变换。当时我们做了推导。

一般矩阵的奇异值分解我们就不仔细推导了,我们简单了解一下。先说结论,m\times n的矩阵\boldsymbol{A}表示从 n 维空间\boldsymbol{R}^{n}?到 m 维空间?\boldsymbol{R}^{n}?的一个线性变换。

给一个向量\boldsymbol{u}?左乘一个任意矩阵?\boldsymbol{A}_{m\times n}\boldsymbol{A}\boldsymbol{u}=\boldsymbol{U}\boldsymbol{D}\boldsymbol{V}^{T}\boldsymbol{u}=\boldsymbol{U}(\boldsymbol{D}(\boldsymbol{V}^{T}\boldsymbol{u})),我们从后往前看,先对\boldsymbol{u}?左乘\boldsymbol{V}^{T},做相同维度 n 上的旋转变换;再在其基础上左乘\boldsymbol{D},做之前维度 n 上的缩放变换然后拔高/降低维度至 m ;再在其基础上左乘?\boldsymbol{U}?,做m维度上的旋转变换。

紧奇异值分解和截断奇异值分解

之前说的奇异值分解的式子\boldsymbol{A}=\boldsymbol{U}\boldsymbol{D}\boldsymbol{V}^{T}又称为矩阵\boldsymbol{A}的完全奇异值分解,实际上为了压缩矩阵存储空间,常用的是奇异值分解的紧凑形式和截断形式。紧奇异值分解是与原始矩阵等秩的奇异值分解,截断奇异值分解是比原始矩阵低秩的奇异值分解。

1、紧奇异值分解:

若一般矩阵A_{m\times n},其秩为 rank(\boldsymbol{A}) = r , r <=min(m,n),那么?\boldsymbol{A}?的紧奇异值分解就是:

\boldsymbol{A_{m\times n}} = \boldsymbol{U}_{m\times r}\boldsymbol{D}_{r\times r}\boldsymbol{V}_{n\times r}^{T}

注意这里是等号哦,其实\boldsymbol{D}_{r\times r}就是将 原来的?\boldsymbol{D}?中的 0 项都去掉,只保留?r? 个非 0 奇异值构成的对角方阵,其?\boldsymbol{U}_{m\times r}?是?\boldsymbol{U}?的前 r? 列,其?\boldsymbol{V}_{n\times r}?是?\boldsymbol{V}?的前 r? 列。

2、截断奇异值分解:

若一般矩阵A_{m\times n},其秩为 rank(\boldsymbol{A}) = r , r <=min(m,n),且 0<k<r ,那么?\boldsymbol{A}?的截断奇异值分解就是:

\boldsymbol{A_{m\times n}} \approx \boldsymbol{U}_{m\times k}\boldsymbol{D}_{k\times k}\boldsymbol{V}_{n\times k}^{T}

注意这里是约等号哦,这里的\boldsymbol{D}_{k\times k}?是原来的\boldsymbol{D}取前 k 行前 k 列的对角方阵,其?\boldsymbol{U}_{m\times k}?是?\boldsymbol{U}?的前 k? 列,其?\boldsymbol{V}_{n\times k}?是?\boldsymbol{V}?的前 k?列。

奇异值分解的应用

?有关奇异值分解的应用,打算另起一篇博客来写~

呼,终于完事了,今天的奇异值分解到这里就结束啦,欢迎各位大佬留言吖~

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 14:40:59  更:2021-10-02 14:55:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:46:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码