矩阵论 •「对角化之 SVD 分解」

矩阵的对角化(SVD分解)

矩阵的SVD分解是矩阵对角化的方法之一.

特征值、向量的定义

TTT 是线性空间 VVV 上的一个线性变换,若存在一非零向量 v⃗\vec{v}v,使得 Tv⃗=λv⃗T\vec{v}=\lambda \vec{v}Tv=λv,则称 λ\lambdaλ 为线性变换 TTT 的一个「特征值」, v⃗\vec{v}vv⃗≠0⃗\vec{v} \neq \vec{0}v=0)为线性变换 TTT 的「属于特征值 λ\lambdaλ 的特征向量」。根据线性变换与矩阵的对应关系,设 {v1⃗,v2⃗...,vn⃗}\{\vec{v_1},\vec{v_2}...,\vec{v_n}\}{v1,v2...,vn} 是线性空间 VVV 的一个基,线性变换 TTT 在这组基下的矩阵是 AAAλ\lambdaλ 为线性变换 TTT 的一个特征值,λ\lambdaλ 的一个特征向量 v⃗\vec{v}v 在这个基下的坐标“向量”为 x\boldsymbol{x}x,则可证明:Ax=λxA\boldsymbol{x}=\lambda \boldsymbol{x}Ax=λx。特征值和特征向量的几何含义:在特定的向量 v⃗\vec{v}vv⃗≠0⃗\vec{v} \neq \vec{0}v=0)方向上输出的 Tv⃗T\vec{v}Tv平行v⃗\vec{v}v,即为 Tv⃗=λv⃗T\vec{v}=\lambda \vec{v}Tv=λv;使用矩阵和坐标的形式来描述线性变换这一过程即:Ax=λxA\boldsymbol{x}=\lambda \boldsymbol{x}Ax=λx

①特征向量不为零向量;②每一个特征值的所有特征向量 + 零向量可以构成一个线性空间,称其为特征值 λλλ 的「特征子空间」,由此也可以看到,特征向量不唯一,可以取特征子空间中的任意互相线性无关的非零向量;对每一个特征值而言,几何重数(λi\lambda_iλi 对应的特征子空间的维数) ≤\leq 代数重数;③称 (λI−A)(λI- A)(λIA) 为矩阵 AAA 的「特征矩阵」、称 det(λI−A)det(λI- A)det(λIA) 为矩阵 AAA 的「特征多项式」。Tips:如果 0 是矩阵的特征值,则有 Ax=0x=0A\boldsymbol{x}=0 \boldsymbol{x}=\boldsymbol{0}Ax=0x=0,则特征值 0 所对应的向量生成了矩阵的零空间 N(A)N(A)N(A);故如果矩阵 AAA 为不可逆矩阵,即零空间 N(A)N(A)N(A) 不是只含 0\boldsymbol{0}0 的空间,则 0 是矩阵 AAA 的特征值之一.

注意:在后续的所有讨论中,(向量)x\boldsymbol{x}x 就代表线性空间中一个向量 v⃗\vec vv 的坐标。为线性空间选定一个基后,我们将用矩阵和坐标“向量”x\boldsymbol{x}x 分别“代替”线性变换中抽象的 TTTv⃗\vec{v}v.

特征值、向量的计算

根据特征值、特征向量定义:
Ax=λx⟹Ax−λx=0⟹(λI−A)x=0 A\boldsymbol{x} =\lambda\boldsymbol{x} \\ \Longrightarrow A\boldsymbol x-\lambda\boldsymbol x =\boldsymbol{0} \\ \Longrightarrow (\lambda I - A)\boldsymbol{x}=\boldsymbol{0} Ax=λxAxλx=0(λIA)x=0
即特征矩阵为(2x2矩阵举例示范):
λI−A=[λ−abcλ−d] \lambda I-A=\begin{bmatrix}\lambda -a&b\\c&\lambda -d\end{bmatrix} λIA=[λacbλd]
特征向量不能为 0\boldsymbol{0}0,故上面方程有非零解,即列向量所构成的向量组线性相关(非满秩),即特征矩阵的行列式(特征多项式)值为 000
det⁡(A−λI)=0 \det(A-\lambda I)=0 det(AλI)=0
其是一个关于 λ\lambdaλnnn 次多项式(nnn为矩阵阶数),因此可以解出所有的特征值 λ\lambdaλ;然后将每一个特征值 λi\lambda_iλi 代入 (λI−A)x=0(\lambda I -A)\boldsymbol{x}=\boldsymbol{0}(λIA)x=0解出这个方程(矩阵)的零空间(即属于这个特征值 λi\lambda_iλi 的特征向量构成的特征子空间),因此得到属于每个特征值 λi\lambda_iλi特征向量

相似变换对角化(矩阵的SVD分解)

如果我们知道一个矩阵的特征值和特征向量(即使不知道该矩阵本身),那我们就知道“定义域”线性空间中任意一个坐标“向量”x\boldsymbol{x}x,其被矩阵 AAA 这一线性变换作用后的得到的坐标“向量”AxA\boldsymbol{x}Ax。也就是说,特征值、特征向量其实就刻画了一个线性变换后生成的空间,即矩阵 AAA 可以被分解为(等价于)特征值和特征向量构成的形式,称这一过程为矩阵 AAA 的SVD(Singular Value Decomposition)分解.

根据是矩阵是一个线性变换,因此可以将向量先根据一个基(特征向量形成的基)分解得到线性组合系数,再变换这个基(特征向量形成的基)得到新基,然后再将新基由原来的线性组合的系数进行合成,得到 AxA\boldsymbol{x}Ax具体做法

  1. 先将坐标“向量” x\boldsymbol{x}x 分解为由特征向量(假设 v1⃗、v2⃗...\vec{v_1}、\vec{v_2}...v1v2...)的坐标进行线性表示的形式(不妨设特征向量的坐标组成矩阵 CCC ):
    x=Cx′ \boldsymbol{x} = C \boldsymbol{x'} x=Cx
    即线性组合系数 x′\boldsymbol{x'}x 为:
    x′=C−1x \boldsymbol{x'} = C^{-1}\boldsymbol{x} x=C1x

  2. 我们知道线性变换 AAA 会对特征向量进行缩放 λ\lambdaλ 倍(由特征值、特征向量的定义可知),因此每一个特征向量 xi\boldsymbol{x_i}xi 都将被缩放它对应的特征值倍,即 λi\lambda_iλi 倍。这一线性变换可以用特征值构成的对角矩阵 Λ\LambdaΛ 形式描述
    C[λ10...00λ2...000...000...λn] C \begin{bmatrix} λ_1 & 0 & ... & 0\\ 0 & λ_2 & ... & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & ... & λ_n \end{bmatrix} Cλ10000λ200............000λn
    其中 CCC 是特征向量的坐标构成的矩阵

  3. 最后,我们对原基(特征向量构成的矩阵 CCC )变换后的新基(即第2步的那个矩阵)进行线性组合,其中组合系数是向量 x′⃗\vec{x'}x ,即:

    C[λ10...00λ2...000...000...λn]x′=C[λ10...00λ2...000...000...λn]C−1x C\begin{bmatrix}λ_1 & 0 & ... & 0\\0 & λ_2 & ... & 0\\0 & 0 & ... & 0\\0 & 0 & ... & λ_n\end{bmatrix} \boldsymbol{x'}= C \begin{bmatrix} λ_1 & 0 & ... & 0\\ 0 & λ_2 & ... & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & ... & λ_n \end{bmatrix}C^{-1} \boldsymbol{x} Cλ10000λ200............000λnx=Cλ10000λ200............000λnC1x
    这样,我们就通过特征值、特征向量,得到了原坐标向量 x\boldsymbol{x}x,其被矩阵 AAA 这一线性变换作用后的得到的新坐标向量 AxA\boldsymbol{x}Ax,即:
    Ax=C[λ10...00λ2...000...000...λn]C−1x A\boldsymbol{x} = C \begin{bmatrix} λ_1 & 0 & ... & 0\\ 0 & λ_2 & ... & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & ... & λ_n \end{bmatrix} C^{-1} \boldsymbol{x} Ax=Cλ10000λ200............000λnC1x

综上:线性变换的矩阵 AAA 等价于用特征值、特征向量描述的变换,即对 AAA 进行特征分解(SVD分解,Singular Value Decomposition):
A=C[λ10...00λ2...000...000...λn]C−1 A = C \begin{bmatrix} λ_1 & 0 & ... & 0\\ 0 & λ_2 & ... & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & ... & λ_n \end{bmatrix} C^{-1} A=Cλ10000λ200............000λnC1
这也称为相似变换对角化(矩阵 AAA 和特征值组成的对角阵 Λ\LambdaΛ 相似,C−1AC=ΛC^{-1}AC = \LambdaC1AC=Λ)。这种分解的一个显而易见的好处之一是,方便求矩阵 AAAnnn 次方

n 阶矩阵一定有 n 个线性无关的特征向量吗(即任何一个矩阵都可以进行SVD分解吗)?否

SVD 分解的充要条件

定理:属于不同特征值的特征向量是线性无关的(特征子空间之间的关系,类似于直和的情况)。SVD分解的充要条件定理nnn 阶方阵 AAA 可通过相似变换对角化的充要条件是它具有 nnn 个线性无关的特征向量;由此可以推论若 nnn 阶方阵有 nnn 个互异的特征值,则必可对角化(因为每个特征值至少有一个特征向量,这里显然每一个不同的特征值都有一个特征向量)

附录:相似矩阵

前面证明过,互为相似的矩阵是同一线性变换在不同基下的矩阵。在这里,相似矩阵有相同的特征多项式(假设 B=P−1APB = P^{-1}APB=P1AP):
∣λI−B∣=∣λI−P−1AP∣=∣P−1(λI−A)P∣=∣P−1∣⋅∣λI−A∣⋅∣P∣=∣λI−A∣ \begin{aligned} \left|\lambda I-B\right|& =\begin{vmatrix}\lambda I-P^{-1}AP\end{vmatrix}=\begin{vmatrix}P^{-1}(\lambda I-A)P\end{vmatrix} \\ &=\left|P^{-1}\right|\cdot\left|\lambda I-A\right|\cdot\left|P\right| \\ &=\left|\lambda I-A\right| \end{aligned} λIB=λIP1AP=P1(λIA)P=P1λIAP=λIA
因此有相同的特征值;但特征向量(坐标)不相同(这应该是因为描述线性空间的基不同)。从这个角度来看,对所有的互为相似的矩阵 AAABBB 进行SVD分解后,Λ\LambdaΛ 这个对角阵是一样的。也就是说,在将一个坐标向量使用坐标特征向量进行分解后,相似矩阵所代表的线性变换,就是对坐标特征向量进行伸缩变换且伸缩的倍数相同,然后再利用变换后的坐标特征向量进行线性组合…从相似矩阵有着相同的 Λ\LambdaΛ 对角阵,似乎也可以佐证互为相似的矩阵是同一线性变换.

附录:矩阵的迹与行列式

定义矩阵的迹为所有对角元素之和,即 trA=∑i=1naii\mathrm{tr}A=\sum_{i=1}^na_{ii}trA=i=1naii

定理1trA=∑i=1nλi\mathrm{tr}A=\sum_{i=1}^n\lambda_itrA=i=1nλi,即矩阵 AAA 的迹等于矩阵 AAA特征值之和定理2det⁡A=∏i=1nλi\det A=\prod_{i=1}^n\lambda_idetA=i=1nλi,即矩阵 AAA 的行列式等于矩阵 AAA特征值之积(从“几何”意义上理解,行列式的值等于矩阵变换后的“体积”与原“体积”的比值,特征值是矩阵在特征向量方向上的缩放因子);

定理3:从上面可知,相似矩阵有相同的特征多项式,因此,有相同的特征值,且有相同的迹和行列式(相似矩阵有相同的特征值,因此特征值之和、积都相等,故迹、行列式也相等);

学习人工智能,机器学习都离不开数学基础和编程知识。无论你是数据科学的初学者还是已经从事人工智能开发的有经验人员,这门课都适合于你。为什么这么说?首先人工智能和机器学习本质上就是算法,而算法就是数学及统计学以及编程的结合。当前市场上有许多开源的软件包如SKLEARN确实可以帮助没经验的或缺乏数学或算法基础的人实现机器学习模型及预测,但这些工具无法使你真正懂得算法的本质或来源,或者无法使你在不同场合下灵活运用及改进算法。记住,在实际工作中找到适合应用场景的解决方案是最难但是最重要的。但这离不开数学基础和算法理解。比如,线性回归是一类普遍的机器学习算法,所有的机器学习软件都有现成的方法实现模型,但如果在训练数据中加入几条新数据,那么新建立的模型和原来的模型有和联系或不同?再比如,为什么深度神经网络中的Sigmoid函数一般只用到输出层?神经网络的向后传播理论如何与泰勒展开和复合函数的偏导数联系在一起?人工智能中推荐系统和文字向量如何与矩阵的奇异分解以及特征向量联系?模型中对标签进行数据变换如何影响预测值?所有这些问题的答案,你都可以从本课中找到线索。本课系统地讲述了有关人工智能,机器学习背后的数学知识。特别指出,微积分和代数知识是本课的核心。统计学基础被安排在另外的课程中。除此之外,我在每一章节或主要知识点后都安排了各类程序以解释和回顾所学到的东西。最后要提到的是,这不是一门工程项目实践课。但我会另外专门安排有关人工智能,机器学习的实践课程
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值