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. vm 将宿主机文件夹 映射至 虚拟机

    一.关于centos如何安装(自行百度) 二.设置共享文件夹 添加共享文件夹(关闭虚拟机时操作) 虚拟机->设置->选项->共享文件夹 三.安装vm-tools (请用root用户执 ...

  2. AOJ/高等排序习题集

    ALDS1_5_B-MergeSort. Description: Write a program of a Merge Sort algorithm implemented by the follo ...

  3. Go语言之循环与条件判断

    一.for循环 Go 语言中没有 while 循环,只有一个 for 循环 for 变量初始化;条件;变量自增/自减 { 循环体内容 } 1.基本使用 for i := 0; i < 10; i ...

  4. 1.1 jvm核心类加载器--jdk源码剖析

    目录 前提: 运行环境 1. 类加载的过程 1.1 类加载器初始化的过程 1.2 类加载的过程 1.3 类的懒加载 2. jvm核心类加载器 3. 双亲委派机制 4. 自定义类加载器 5. tomca ...

  5. 解决Vite-React项目中js使用jsx语法报错的问题

    背景 在做存量项目接入Vite测试时发现,存量(老)项目中很多是直接在js中书写jsx语法,使用Vite启动时就会抛出一堆问题Failed to parse source. 不嫌麻烦可以跑个脚本批量修 ...

  6. 市区择房分析(ArcPy实现)

    1, 背景 如何找到环境好.购物方便.小孩上学方便的居住区地段是购房者最关心的问题.因此购房者就需要从总体上对商品房的信息进行研究分析,选择最适宜的购房地段. 2,目的 学会利用缓冲区分析和叠置分析解 ...

  7. 自动化键盘,python

    国际惯例先上源https://github.com/boppreh/keyboard#键盘输入 from pynput.keyboard import Key,Controller,Listener ...

  8. 验证域用户(C#)

    代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Intero ...

  9. Scrum Meeting 0607

    零.说明 日期:2021-6-7 任务:简要汇报两日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 两日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 重新设计产品 ...

  10. Unity 制作不规则形状button

    在游戏开发中,我们有时需要制作不规则形状的按键. Unity3d中使用UGUI的Button控件只能实现规则的长方形按钮.而通过给Button的Image组件添加对应的贴图(sprite)我们可以实现 ...