SVD专题1 算子的奇异值分解——矩阵形式的推导

前言 Preface

《Linear Algebra Done Right》一书在讲述算子的奇异值分解时并未给出其矩阵分解形式,仅是在结构上予以阐明:算子奇异值分解的核心在于使用两组基。以下讨论旨在总结奇异值分解推导的整个流程并给出算子奇异值分解的矩阵形式。

几点说明

  • 本文讨论的范围局限于算子的奇异值分解,而非更广泛的线性映射的奇异值分解。
  • 本文的叙述方式不同于通常教材的做法,即并不事先罗列为了得到目标结论所需的预备知识,而是一环扣一环反向补充每一个步骤所需的知识。
  • 为方便讨论,以下涉及到的算子均默认是复向量空间 \(V\) 中的算子,故不在每句话中重复指明复向量空间 \(V\) 上的算子

预备知识 Prerequisite

不同教材中给出算子奇异值分解的方式不同,本文将在算子极分解的基础上引出奇异值分解。

1.1 极分解 Polar Decomposition

算子极分解:一个算子 \(T\) 总是可以分解成一个等距同构 \(S\) 和一个正算子 \(\sqrt{T^*T}\) 的乘积。

\[T = S\sqrt{T^*T}\\
\]

现在我们遇到了两个新概念,等距同构 \(S\) 和正算子 \(\sqrt{T^*T}\) ,我们先来讨论前者。

1.2 等距同构 Unitary Operator

1.2.1 什么是等距同构

我们先给出等距同构的定义:若算子 \(S\) 能够保持范数不变,则称 \(S\) 为等距同构,即:

\[||Sv|| = ||v||\\
\]

等距同构 \(S\) 是怎样刻画的呢?其实就是在问一个算子 \(S\) 是等距同构的话有哪些等价条件呢?这里我们列举以下有助于理解我们后续推导的等价关系:

1.2.2 等距同构的刻画

算子 \(S\) 是等距同构 \(\Longleftrightarrow\)

(1)向量空间中的规范正交基 \(\{e_1, \cdots, e_n \}\) 被 \(S\) 作用后仍然是规范正交基 \(\{Se_1, \cdots, Se_n \}\) ,不妨记作 \(\{f_1, \cdots, f_n \}\) 。

(2)\(S^*S = SS^* = I , \quad or \quad S^* = S\)

注意观察,(2)其实告诉我们了 \(S\) 是一个正规算子,在此基础上多了一些别的性质,那么我们就可以在先前已经能够完全描述的正规算子的基础上来描述 \(S\) 。

重要补充:正规算子与复谱定理

正规算子:若算子 \(T\) 和它的伴随可交换,称算子 \(T\) 为正规算子,即:\(T^*T = TT^*\)

之所以我们能够完全描述正规算子,正是由于复谱定理:复向量空间中的正规算子 \(T\) 可以被一组规范正交基给对角化。

小声哔哔时间:以后我们就清楚了,凡是遇到了正规算子,就知道它可以被一组规范正交基给对角化,我们要训练自己的小脑瓜,直到把这句话刻在脑子里,变成一种本能反应。

1.2.3 等距同构的描述

等距同构 \(S\) 的描述: \(S\) 可以被一组规范正交基给对角化,且相应的本征值的绝对值为1。

请拿出小本本记住这句话的前半部分,我们后面会用到的:即 \(S\) 可以被一组规范正交基给对角化。

1.3 正算子 Positive Operator

再来谈一谈正算子的刻画及其描述。

1.3.1 什么是正算子

我们先给出正算子的定义:若自伴算子 \(T\) 满足 \(\left \langle Tv, v \right\rangle \ge 0\) 恒成立,则称 \(T\) 是正算子。

温馨小提示:由于自伴算子满足 \(T^* = T\) ,所以自伴算子都是正规算子。(^_^)

1.3.2 正算子的刻画

为了方便理解和记忆,这里先摆出书中重要的一种类比关系:

\(正规算子\rightleftharpoons 实数\)

\(正算子 \ \ \ \ \rightleftharpoons 非负实数\)

算子 \(T\) 是正算子 \(\Longleftrightarrow\)

(1) \(T\) 是自伴算子且所有本征值非负

(2) \(T\) 有唯一的正平方根,可以把它记作 \(\sqrt{T}\)

等等!算子还有开平方这一说?

答曰:小笨蛋,我上面的类比关系白写啦?非负实数可以开个平方算算平方根,正算子就不能有啦?

补:算子的平方根

如果算子 \(R\) 满足: \(R^2 = T\) ,则称算子 \(R\) 为算子 \(T\) 的平方根。

1.3.3 正算子的描述

正算子 \(T\) 的描述: \(T\) 可以被一组规范正交基给对角化,且相应的本征值非负。

请再次掏出小本本吧,同样记下这句话的前半部分,即:正算子 \(T\) 可以被一组规范正交基给对角化。

好了,现在我们可以解释一下为什么 \(\sqrt{T^*T}\) 是正算子啦!

我们说,对于复向量空间上的任意算子 \(T\) 而言, \(T^*T\) 都是正算子(不信的话用定义法去验证一下哈~),由先前我们对正算子的刻画:可以用 \(\sqrt{T^*T}\) 来表示 \(T^*T\) 唯一的那个正平方根(即这个平方根也是一个正算子)。

奇异值分解 Singular Value Decomposition(SVD)

极分解把复向量空间上的任意算子 \(T\) 给分解成了一个等距同构 \(S\) 和一个正算子 \(\sqrt{T^*T}\) 的乘积。掏出我们的小本本,看一看上面记下来的两句话:

(1) \(S\) 可以被一组规范正交基给对角化

(2) \(\sqrt{T^*T}\) 可以被一组规范正交基给对角化

啊呀,我们猜想一下,不会那样巧合,使得两个算子都被同一组规范正交基给对角化了吧?没错,确实没那么巧,这意味着我们要对任意算子 \(T\) 使用两组基来描述啦!这就是奇异值分解的核心,即对算子采用了两组基来表示呀!先前我们的做法是涉及到算子的,都一般默认变换前后都使用同一组基。

步骤1

不管三七二十一,先找一组规范正交基把 \(\sqrt{T^*T}\) 给对角化了,记这组规范正交基为 \(\{e_1, \cdots, e_n \}\) ,相应的本征值记作 \(\{s_1, \cdots, s_n \}\)

\[\begin{aligned}
\sqrt{T^*T}
\begin{bmatrix}e_1 \cdots e_n \end{bmatrix}
&= \begin{bmatrix} \sqrt{T^*T}e_1 \cdots \sqrt{T^*T}e_n \end{bmatrix} \\
&= \begin{bmatrix} s_1e_1 \cdots s_ne_n \end{bmatrix} \\
&= \begin{bmatrix} e_1 \cdots e_n \end{bmatrix} \begin{bmatrix} s_1 \\ & \ddots \\ & & s_n \\ \end{bmatrix}
\end{aligned}\\
\]

步骤2

在上一步的基础上,左右两边同时左乘等距同构 \(S\) :

\[\begin{aligned}
S \sqrt{T^*T}
\begin{bmatrix}e_1 \cdots e_n \end{bmatrix}
&= S \begin{bmatrix} e_1 \cdots e_n \end{bmatrix} \begin{bmatrix} s_1 \\ & \ddots \\ & & s_n \\ \end{bmatrix} \\
&= \begin{bmatrix} Se_1 \cdots Se_n \end{bmatrix} \begin{bmatrix} s_1 \\ & \ddots \\ & & s_n \\ \end{bmatrix} \\
&= \begin{bmatrix} f_1 \cdots f_n \end{bmatrix} \begin{bmatrix} s_1 \\ & \ddots \\ & & s_n \\ \end{bmatrix}
\end{aligned}\\
\]

回忆一下等距同构的刻画的(1),正是第三个等号成立的原因呀:规范正交基 \(\{e_1, \cdots, e_n \}\) 被 \(S\) 作用后仍然是规范正交基 \(\{f_1, \cdots, f_n \}\) ,这样就出现了第二组基。

进一步化简:

\[\begin{aligned}
T \begin{bmatrix}e_1 \cdots e_n \end{bmatrix}
&= \begin{bmatrix} f_1 \cdots f_n \end{bmatrix} \begin{bmatrix} s_1 \\ & \ddots \\ & & s_n \\ \end{bmatrix}
\end{aligned}\\
\]

两边同时右乘 \(\begin{bmatrix}e_1 \cdots e_n \end{bmatrix}^{-1}\) ,得到:

\[T
= \begin{bmatrix} f_1 \cdots f_n \end{bmatrix} \begin{bmatrix} s_1 \\ & \ddots \\ & & s_n \\ \end{bmatrix} \begin{bmatrix}e_1 \cdots e_n \end{bmatrix}^{-1}\\
\]

换用简单的大写符号来表示这些元素都明着写出来的矩阵,得到:

\[T = U \Sigma V^{-1}\\
\]

结语 Epilogue

以下两点相当明显的事实值得挑明(因为这对刚接触的人来说可能并不那样显然):

(1) \(\begin{bmatrix}e_1 \cdots e_n \end{bmatrix}^{-1}\) ,即矩阵 \(V^{-1}\) 就是等距同构的逆 \(S^{-1}\) 的矩阵,由于 \(S^{-1} = S^*\) ,故上式中的 \(V^{-1}\) 还可以写作 \(V^*\) 。矩阵 \(V^*\) 作用的目的在于(或称这个矩阵的“方向”在于)输入一个属于任意坐标系统的向量,给出该向量在规范正交基 \(\{e_1, \cdots, e_n \}\) 下的坐标系统的重新(等价)表述。

(2) \(\begin{bmatrix} f_1 \cdots f_n \end{bmatrix}\) ,即矩阵 \(U\) 作用的目的在于,把原输入向量经算子 \(T\) 变换后的输出向量在规范正交基 \(\{f_1, \cdots, f_n \}\) 下的坐标系统的重新(等价)表述,重新变回其在任意坐标系统下的等价表述。

由上述(1)中的等价关系,我们给出本文的最终目标,即复向量空间上算子奇异值分解最终的矩阵表述形式:

\[T = U \Sigma V^{*}\\
\]

SVD专题1 算子的奇异值分解——矩阵形式的推导的更多相关文章

  1. 从矩阵(matrix)角度讨论PCA(Principal Component Analysis 主成分分析)、SVD(Singular Value Decomposition 奇异值分解)相关原理

    0. 引言 本文主要的目的在于讨论PAC降维和SVD特征提取原理,围绕这一主题,在文章的开头从涉及的相关矩阵原理切入,逐步深入讨论,希望能够学习这一领域问题的读者朋友有帮助. 这里推荐Mit的Gilb ...

  2. 数据降维技术(2)—奇异值分解(SVD)

    上一篇文章讲了PCA的数据原理,明白了PCA主要的思想及使用PCA做数据降维的步骤,本文我们详细探讨下另一种数据降维技术—奇异值分解(SVD). 在介绍奇异值分解前,先谈谈这个比较奇怪的名字:奇异值分 ...

  3. SVD(奇异值分解)小结

    注:奇异值分解在数据降维中有较多的应用,这里把它的原理简单总结一下,并且举一个图片压缩的例子,最后做一个简单的分析,希望能够给大家带来帮助. 1.特征值分解(EVD) 实对称矩阵 在理角奇异值分解之前 ...

  4. 关于SVD(Singular Value Decomposition)的那些事儿

    SVD简介 SVD不仅是一个数学问题,在机器学习领域,有相当多的应用与奇异值都可以扯上关系,比如做feature reduction的PCA,做数据压缩(以图像压缩为代表)的算法,还有做搜索引擎语义层 ...

  5. HAWQ + MADlib 玩转数据挖掘之(五)——奇异值分解实现推荐算法

    一.奇异值分解简介 奇异值分解简称SVD(singular value decomposition),可以理解为:将一个比较复杂的矩阵用更小更简单的三个子矩阵的相乘来表示,这三个小矩阵描述了大矩阵重要 ...

  6. 数据预处理:PCA,SVD,whitening,normalization

    数据预处理是为了让算法有更好的表现,whitening.PCA.SVD都是预处理的方式: whitening的目标是让特征向量中的特征之间不相关,PCA的目标是降低特征向量的维度,SVD的目标是提高稀 ...

  7. SVD分解.潜语义分析.PythonCode

    原文链接:http://www.cnblogs.com/appler/archive/2012/02/02/2335886.html 原始英文链接:http://www.puffinwarellc.c ...

  8. 词向量(one-hot/SVD/NNLM/Word2Vec/GloVe)

    目录 词向量简介 1. 基于one-hot编码的词向量方法 2. 统计语言模型 3. 从分布式表征到SVD分解 3.1 分布式表征(Distribution) 3.2 奇异值分解(SVD) 3.3 基 ...

  9. 浅谈 PCA与SVD

    前言 在用数据对模型进行训练时,通常会遇到维度过高,也就是数据的特征太多的问题,有时特征之间还存在一定的相关性,这时如果还使用原数据训练模型,模型的精度会大大下降,因此要降低数据的维度,同时新数据的特 ...

随机推荐

  1. Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式

    1. 前言 发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导 SMTP是Python默认的邮件模块,可以发送纯文本.富文本.HTML 等格式的邮件 今天 ...

  2. 【vue】使用 Video.js 播放视频

    目录 安装 引入 使用 参考文档 环境: vue 2.0+ element ui (这里的代码用了elmentui的按钮样式,可以不用elment ui的样式) 安装 在项目中安装 video.js. ...

  3. 前端快闪四: 拦截axios请求和响应

    马甲哥继续在同程艺龙写一点大前端: 今天我们来了解一下 如何拦截axios请求/响应? axios是一个基于 promise 的网络请求库,可以用于浏览器和 node.js, promise 类似于C ...

  4. Go语言核心36讲(Go语言基础知识二)--学习笔记

    02 | 命令源码文件 我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件. 这里的源码文件又分为三种,即:命令源码文件.库源码文件和测 ...

  5. 国内首篇云厂商 Serverless 论文入选全球顶会:突发流量下,如何加速容器启动?

    作者 | 王骜 来源 | Serverless 公众号 导读 ​ USENIX ATC (USENIX Annual Technical Conference) 学术会议是计算机系统领域的顶级会议,入 ...

  6. SimpleDateFormat、Date和String互转

    今天在修改bug时遇到一个查询异常:根据时间段查询的时候,如果查询时间段含12点钟,那么能查到时间段之外的其他数据: 跟踪了数据流动发现,前同事写的程序中,有一处是讲前端传来时间字符串转为Date的一 ...

  7. javascript-jquery介绍

    jquery优势 1.轻量级 2.强大的选择器 3.出色的DOM封装 4.可靠的事件处理机制 5.完善的Ajax 6.不污染顶级变量 7.出色的浏览器兼容 8.链式操作方式 9.隐式迭代 10.行为层 ...

  8. [no_code][Alpha]测试报告

    项目 内容 2020春季计算机学院软件工程(罗杰 任健) 2020春季计算机学院软件工程(罗杰 任健) 作业要求 测试报告 我们在这个课程的目标是 设计出一个OCR表单处理软件 这个作业在哪个具体方面 ...

  9. 预备知识-python核心用法常用数据分析库(上)

    1.预备知识-python核心用法常用数据分析库(上) 目录 1.预备知识-python核心用法常用数据分析库(上) 概述 实验环境 任务一:环境安装与配置 [实验目标] [实验步骤] 任务二:Pan ...

  10. 转:Vivado IP报[Opt 31-67] 错误问题解决方法

    使用VIVADO编译代码时,其中一个IP报错,错误类似为 ImplementationOpt Design[Opt 31-67] Problem: A LUT2 cell in the design ...