购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.15 矩阵对角化

在2.12节中,我们探讨了线性系统及其在机器学习中的重要性,并且指出,从机器学习的角度来看,通过矩阵求逆来求解线性系统的标准数学过程并非理想的解决方案。在本节中,我们将引入一种无需矩阵求逆就能求解线性系统的方法。此外,本节内容还有助于我们深入理解二次型,为掌握主成分分析(PCA)打下基础,而主成分分析是数据科学领域中最重要的工具之一。

考虑一个具有 n 个线性无关特征向量的 n × n 矩阵 A 。设 S 是一个以这些特征向量为列的矩阵。即,

Ae 1 1 e 1

Ae 2 2 e 2

Ae n n e n

并且

S =[ e 1 e 2 e n ]

因此,我们有

AS = A [ e 1 e 2 e n ]=[ Ae 1 Ae 2 Ae n ]=[λ 1 e 1 λ 2 e 2 …λ n e n ]

其中,

Λ 是一个对角矩阵,对角线上的元素是 A 的特征值,其余位置为0。

因此,我们得到

AS =

由此可推导出

A = SΛS -1

并且

Λ = S -1 AS

如果 A 是对称的,那么它的特征向量就是正交的,即 S T S = SS T = I S -1 = S T ,因此,可推导出 A 的对角化表示:

A = SΛS T

注意,对角化的结果并不唯一:对于一个给定的矩阵,存在多种可能的对角化方式。

2.15.1 矩阵对角化的PyTorch代码

现在,我们将2.15节中学到的数学知识以PyTorch实现。与之前一样,代码清单2.18只展示直接相关的代码段。

:本小节的完整代码可以从http://mng.bz/RXJn获取,并且可以使用Jupyter Notebook执行。

代码清单2.18 矩阵对角化

2.15.2 不使用逆运算,通过对角化求解线性系统

对角化有许多实际应用。现在我们来探讨其中的一个案例。通常,矩阵求逆(计算 A -1 )是一个数值不稳定的复杂过程。因此,应尽可能地避免通过 Ax = b 来求解 x = A -1 b 。然而,对于具有 n 个不同特征值的对称方阵,可以通过对角化来帮助求解。我们将该过程分解为多个步骤,首先对 A 进行对角化:

A = SΛS T

Ax = b 可以被写为

SΛS T x = b

其中 S 是以 A 的特征向量为列的矩阵:

S =[ e 1 e 2 e n ]

由于 A 是对称的,所以这些特征向量是正交的,即 S T S = S S T = I 。可以通过一系列非常简单的步骤来求解以下线性系统:

首先求解

Sy 1 = b

得到

y 1 = S T b

需要注意的是,不同于矩阵求逆,转置和矩阵-向量乘法都是简单且数值稳定的操作。然后,我们可以得到

Λ S T x )= y 1

现在求解

Λy 2 = y 1

得到

y 2 = Λ -1 y 1

需要注意的是,由于 Λ 是对角矩阵,因此对其求逆非常简单:

最后一步,求解

S T x = y 2

得到

x = Sy 2

因此,无须使用任何复杂或不稳定的步骤,就能够计算出 x

2.15.3 通过对角化求解线性方程组的PyTorch代码

让我们尝试对以下方程组进行求解:

x+y+z= 8

2 x+ 2 y+ 3 z= 15

x+ 3 y+ 3 z= 16

该方程组可以表示为矩阵和向量的形式:

Ax = b

其中,

注意, A 是一个对称矩阵,它的特征向量是正交的。因此,将 A 的特征向量作为列的矩阵是正交的,该矩阵的转置和逆相同。具体实现如代码清单2.19所示。

代码清单2.19使用对角化求解线性方程组

2.15.4 使用对角化计算矩阵的幂

如果矩阵 A 可以被对角化,那么

A = SΛS -1

A 2 = SΛS -1 SΛS -1 = SΛIΛS -1 = 2 S -1

A n =…=…= n S -1

对于一个对角矩阵

它的 n 次幂可以简单地表示为

如果我们需要分次计算一个 m × m 矩阵 A 的各种幂次,我们应该先计算矩阵 S ,之后,只需要 O m )次运算即可计算 A 的任何幂次,相比之下,直接计算则需要执行( n m 3 )次运算。 R1B6sfeRPACf/6T0rQdJ+JzAuhn53wQO4ARA56lsw+tgM/exU+4zk6VoRkKbzo6p

点击中间区域
呼出菜单
上一章
目录
下一章
×