奇异值分解(SVD)小结

目录

阵的简单理解

矩阵作用于向量

用矩阵的表达一个实体

特征值和特征向量

奇异值分解

Hermitian矩阵

共轭转置

酉矩阵

谈谈《数学之美》对SVD的理解


阵的简单理解

矩阵从我的理解来看,可以从两个角度来看。一个是矩阵是作用于向量,一个是矩阵表达一个实体。

矩阵作用于向量

对于线性空间中,对向量的变换就是通过矩阵对向量的作用来实现的,矩阵本身就表示着一种变换。假设目前所讨论的矩阵是非奇异的n阶方阵。对矩阵对向量的变换,可以从两个不同的角度来看:一、从同一个坐标系来看,矩阵对向量的变换就是伸缩或者旋转。二、同一个向量,在不同坐标系下的度量。比如:

                                                                                             Ax = b

1、从第一个角度来看就是,向量x经过矩阵A的作用变成了向量b,矩阵表示一种运行方式。


2、从第二个角度来看就是,那么矩阵A就表示着一个坐标系(因为非奇异,故矩阵A是有n个线性无关的向量组成),x就是在坐标系A下的一个度量结果,只不过这里的矩阵A不一定是单位矩阵,所以坐标轴上度量单位不一定是单位1。而向量b是单位矩阵I所表示的坐标系下的度量结果。即:Ax=Ib

由上式可以看的出,一个向量,他在坐标系A中的表示结果是向量x,它在坐标系I中的表示结果是向量b,这表明什么?向量x和向量b,表示的是同一个向量,只不过是在不同的坐标系下,每个向量的度量结果不一样而已,即表现形式不同,但本质是一个东西。

我们知道一个向量在不同基下的坐标是不一样的,即向量在不同空间的测量结果是不一样的。如果举一个不恰当的例子,比如水,在零度以下是冰,在100度以上是水蒸气,你可以这样理解,水在0度的环境下的表现形式是冰,在100度的环境下的表现形式是水蒸气,他们只不过存在形式不同,但都是H_{2}O。那么矩阵是不是也可以看成向量所处的环境呢?(我们目前都是假设矩阵是非奇异的),我想是可以的。无论是把矩阵看成是向量所处环境也好,还是看成空间坐标系也好,不可否认的是,矩阵包含着度量的能力,他可以表达一种空间信息,此时矩阵表示一种度量方式。

由此矩阵作用于向量或者矩阵,可以把矩阵看成是动态的形式。

用矩阵的表达一个实体

一副图像在计算时,它是以一个矩阵的形式表达的;在NLP中,文本与词的关系,也是以矩阵的形式存在的。此时矩阵A表达一个具体的事物,此时矩阵就是一种静态的表示结果。

啰里啰嗦了那么多,就是为了加深理解矩阵的意义,矩阵在不同的情况下,其作用是不一样的。


特征值和特征向量

如果A是n阶方阵,如果存在一个非零的常数\lambda和一个n维的向量v使得:Av = \lambda v,则称\lambda是矩阵A的特征值,v就是其对应的特征向量。翻译成白话就是:如果矩阵A使得一个向量伸缩,那么该向量就是矩阵A 的一个特征向量,伸缩的尺度就是特征值。

如果你觉得矩阵表达运动时比较好理解,那么特征向量就是,各个分运动的方向,对应的特征值,就是运动的距离。如果你觉得矩阵作为表达实体时比较好理解,那么特征向量,就是该实体的某一特征,对应的特征值就是该特征的重要程度。

尤其是矩阵表达一个实体时,矩阵的特征分解显得尤为重要,因为此时的矩阵往往是稀疏的,维度比较大的,在存储或者计算时会浪费很多资源,此时特征值和特征向量的作用就显得尤为重要了,我们可以选择几个特征值最大的向量,就可以表达该实体,这样就可以对原来的矩阵起到了很好的降维作用,而且可以消除很多噪声。可以参考这个例子 。

奇异值分解

之前说的方阵都是n阶方阵,那么对于机器学习中很多时候面对的矩阵都是m\times n的,这个时候,我们也想跟方阵一样找出对应的特征值和特征向量,那么有什么方法?答案就是奇异值分解,此时的奇异值就是对应n阶方阵的特征值,只不过此时不再称呼特征值和特征向量了,因为解法不同以及分解出来的矩阵表达的意义也不同。在说奇异值分解之前,先交代两个概念。Hermitian矩阵和酉矩阵。


Hermitian矩阵

如果n阶复方阵A是对称的,且对称单元互为共轭,即,矩阵A的共轭转置矩阵等于它本身,称A为Hermitian矩阵。例如:

                                                                                       A= \begin{bmatrix} 2& 9+i\\ 9-i &7 \end{bmatrix}

共轭转置

矩阵有实数矩阵和复数矩阵。转置矩阵仅仅是将矩阵的行与列对换,而共轭转置矩阵在将行与列对换后还要让每个元素共轭一下。共轭,就是将形如a+bi的数变成a-bi,实数的共轭是它本身。

故,实数矩阵的共轭转置矩阵就是转置矩阵,复数矩阵的共轭转置矩阵就是上面所说的行列互换后每个元素取共轭

酉矩阵

我们说的正交矩阵是属于\mathbb{R}^{n*n}的,是实数域上的。那么推广到复数域:

假设U\in C^{n\times n},C为复数域,若:

                                                                            U^{T}U=UU^{T}=I

则称U就是酉矩阵。


定理:令A\in \mathbb{R}^{m\times n}(or\, \mathbb{C}^{m\times n}),则存在正交矩阵(或者酉矩阵)U\in \mathbb{R}^{m\times n}(or\, \mathbb{C}^{m\times n})V\in \mathbb{R}^{m\times n}(or\, \mathbb{C}^{m\times n}),使得:

                                                                                  A=U\Sigma V^{T}

其中\Sigma =\begin{bmatrix} \Sigma_{1} &O \\ O& O \end{bmatrix},且\Sigma _{1}=diag(\sigma _{1},\sigma _{2},......,\sigma _{r}),其对角线元素是按照从大到小的顺序排列的,即,\sigma _{1}\geq \sigma _{2}\geq ......\geq \sigma _{r}\geq 0r=rank(A)

现在证明这个定理是怎么来的,为了方便理解,先交代几个引理。

引理一、Hermitian矩阵A^{T}A可酉对角化,且特征值是非负的。

引理二、rank(A)=rank(A^{T}A)=rank(AA^{T})

引理三、A=O的充要条件是A^{T}A=O


证明A=U\Sigma V^{T}


rank(A)=r,根据引理一和引理二,可知A^{T}A可以酉对角化,且rank(A^{T}A)=r,那么存在一个n阶的酉矩阵V使得:

                                                          V^{T}(A^{T}A)V=\begin{bmatrix} \lambda _{1} & 0 & ......& 0\\ 0 & \lambda _{2} & ...... & 0\\ \vdots & \vdots & ...... & \vdots \\ 0 & 0 & ...... & \lambda _{r} \end{bmatrix}=diag(\lambda _{1},\lambda _{2},......\lambda _{n})

即:A^{T}A=V\Sigma ^{2}V^{T},其中\lambda _{1}\geq \lambda _{2}\geq ......\lambda _{r}> 0=\lambda _{r+1}=......=\lambda _{n}A^{T}A的非负特征根。

\Sigma _{1}=diag(\sigma _{1},\sigma _{2},......,\sigma _{r})=diag(\sqrt{\lambda _{1}},\sqrt{\lambda _{2}},......\sqrt{\lambda _{r}}),我们把酉矩阵V拆分成两个子矩阵V_{1}V_{2},有:

                                                                                        V_{1}=\begin{bmatrix} v_{1},v_{2},......,v_{r} \end{bmatrix}

                                                                                        V_{2}=\begin{bmatrix} v_{r+1},v_{r+2},......,v_{n} \end{bmatrix}

易知,A^{T}AV_{2}=V_{2}O\Rightarrow V_{2}^{T}A^{T}AV_{2}=O,根据引理三可知AV_{2}=O

则有

                                                                          A^{T}AV_{1}=V_{1}\begin{bmatrix} \lambda _{1} & 0 & ......& 0\\ 0 & \lambda _{2} & ...... & 0\\ \vdots & \vdots & ...... & \vdots \\ 0 & 0 & ...... & \lambda _{r} \end{bmatrix}=V_{1}\Sigma _{1}^{2}

由于\Sigma是对角矩阵,故,\Sigma ^{T}=\Sigma ,(\Sigma^{-1})^{T}=\Sigma^{-1}V^{T}=V^{-1}由此可得:

                                                                         \Rightarrow V_{1}^{T}A^{T}AV_{1}=\Sigma ^{2}

                                                                         \Rightarrow \Sigma_{1}^{-1}V_{1}^{T}A^{T}AV_{1}=\Sigma

                                                                          \Rightarrow \Sigma_{1}^{-1}V_{1}^{T}A^{T}AV_{1}\Sigma_{1}^{-1}=I

U_{1}=AV_{1}\Sigma_{1}^{-1},则有:U_{1}^{T}U_{1}=I。我们构造一个酉矩阵U_{2},使得U_{1}^{T}U_{2}=O,也就是各向量之间是相互正交的,然拼接成和酉矩阵V同等规模的酉矩阵U=\begin{bmatrix} U_{1} & U_{2} \end{bmatrix}

                                                                        U^{T}AV=\begin{bmatrix} U_{1}\\ U_{2} \end{bmatrix}A\begin{bmatrix} V_{1} & V_{2} \end{bmatrix}

                                                                                    =\begin{bmatrix} U_{1}^{T}AV_{1} &U_{1}^{T}AV_{2} \\ U_{2}^{T}AV_{1}& U_{2}^{T}AV_{2} \end{bmatrix}

                                                                                    =\begin{bmatrix} \Sigma _{1} &O \\ U_{2}^{T}U_{1}\Sigma _{1}& O \end{bmatrix}

                                                                                    =\begin{bmatrix} \Sigma_{1} &O \\ O & O \end{bmatrix}

A=U\Sigma V^{T},证毕。


我们对酉矩阵AA^{T}进行奇异值分解,同理可以得出:

                                                                              AA^{T}=U\Sigma^{2} U^{T}

我们已经知道对A^{T}A的奇异值分解为:

                                                                             A^{T}A=V\Sigma ^{2}V^{T}

如果矩阵A_{m\times n}的秩是r,则有:

m\times m酉矩阵U的前r列组成矩阵A的列空间的标准正交基。

n\times n酉矩阵V的前r列组成矩阵A的行空间(或者A^{T}的列空间)的标准正交基。

U的后m-r列组成矩阵A^{T}的零空间的标准正交基。

V的后n-r列组成矩阵A的零空间的标准正交基。

我们之前说过,奇异值分解,就是为了找到最重要的特征,用这些特征来表示原来的矩阵,这样可以起到降维的作用,也可以起到消除噪声的作用。那么,当矩阵A的秩r=rank(A)<h=min\begin{Bmatrix} m,n \end{Bmatrix}时,由于奇异值\sigma _{r+1}=\sigma _{r+2}=.....\sigma _{h}=0,因此矩阵A的奇异值分解就可以写成:

                                                                                      A=U_{r}\Sigma_{r} V_{r}^{T}

这种情况就称为矩阵A的截尾奇异值分解。

但是大多数的时候,有些奇异值不为0对应的特征向量我们也会舍弃,只会选取以少部分,就是大家常说的前10%甚至1%的奇异值会占总的奇异值的99%。如下图所示:

奇异值分解(SVD)小结_第1张图片


谈谈《数学之美》对SVD的理解

首先说明一下,吴军老师在数学之美讲解SVD的时候,有点是描述错误的,可能版本比较老,新版不知是否已经更正。在这里叙述时,会更正。

假如对新闻进行分类,把词和文本放到一个矩阵中,可以利用余弦定理来计算相似性;还可以利用对矩阵直接进行SVD分解一次解决。

矩阵A描述了词和文章的关联性,每一行代表一个词,每一列代表一篇文章,如果有N个词,M篇文章,那么对应的矩阵如下:

A= \begin{bmatrix} a_{11}& \cdots & a_{1j}& \cdots &a_{1M} \\ \vdots & \ddots & \vdots & \ddots &\vdots \\ a_{i1}& \cdots & a_{ij} & \cdots & a _{iM}\\ \vdots &\ddots & \vdots & \ddots &\vdots \\ a_{N1} &\cdots &a_{Ni} &\cdots & a_{NM} \end{bmatrix}

其中第i行第j列的元素a_{ij}表示,字典中第i个单词出现在第j篇文章中的加权词频(如TF-IDF),那么被分解的三个小矩阵:

奇异值分解(SVD)小结_第2张图片

  • 第一个矩阵U,表示对词进行分类的一个结果。矩阵UAA^{T}的特征向量组成的矩阵,A^{T}AN\times N的,\times的,表示的就是词与词之间的关系。UA^{T}A的一个基,它可以表示词与词之间的空间分布,也就是语义相近与否,所以我们分解出来的第一个矩阵U就是对词进行的分类结果。它的每一行表示一个词,每一列表示一个语义相近的词类。每个非零元素表述该词在相应语义中的相关性(重要性),数值越大越相关。
  • 最后一个矩阵V,表示是对文本的一个分类结果。矩阵VA^{T}A的特征向量组成的空间,A^{T}AM\times M的,文章\times文章,表示的是文章与文章之间的关系,它的每一列表示一篇文章,每一行表示一个主题,这一列中的每个元素表示在不同主题中的相关性。
  • 第二个矩阵,表示词的语义类和文章的主题之间的关系。如下面这个矩阵:

                                                                                  \Sigma =\begin{bmatrix} 0.7 &0.21 \\ 018&0.63 \end{bmatrix}

在矩阵\Sigma中,每一行表示一个语义,每一列表示一个主题。每一行的每个元素,表示该语义与主题之间的关系。0.7表示第一个语义与第一个主题相关,0.21表示第一个语义与第二个主题不相关。同理,0.18表示第二个语义与第一个主题不相关,0.63表示第二个语义与第二个主题相关。

到此SVD讲解完成,从理论到实际的物理意义,花了近两天的复习和总结,啰里啰嗦了这么多,也不知道是否阐述的明白。如有错误,欢迎指正。

 

参考:

《理解矩阵》孟岩

《数学之美》吴军

《矩阵分析》张贤达

 

 

你可能感兴趣的:(Machine,Learning,Deep,Learning,NLP)