Google的本质是AX=λX
我最近在学习算法设计课程,老师在讲到QUICKSORT时提出了Google的本质就是AX=λX。话题是由Google的pagerank算法引入的。对于一个鸡生蛋,蛋生鸡循环问题我们可以通过对任意选一个向量进行A矩阵相乘的迭代。最后我们会发现它收敛于A的主特征向量。这是Google面对循环问题时解决的方案。我们也可以通过选取研究问题代表,然后对他进行研究,思路是打破循环。老师意味深长的关于谷歌的本质论断引起了我对特征指数和特征向量这个知识点的极大的兴趣。再根据费曼学习法的原理,检验是否理解的最好方式就是把它讲出来。那么我们接下来就探索一下,到底什么是特征值和特征向量?我们知道这个知识是由线性代数而引入的。那么我们就先从教科书的角度来理解什么是特征向量与特征值。
教科书对于特征向量与特征值的解释
我们选取了同济大学数学系编的线性代数第六版。下面列出书中的几个比较重要的公式。
A
X
=
λ
X
(
1
)
AX =λX (1)
AX=λX(1)
(
A
−
λ
E
)
X
=
0
(
2
)
(A-λE)X =0 (2)
(A−λE)X=0(2)
∣
A
−
λ
E
∣
=
0
(
3
)
|A-λE|=0 (3)
∣A−λE∣=0(3)
f
(
λ
)
=
∣
A
−
λ
E
∣
(
4
)
f(λ)=|A-λE| (4)
f(λ)=∣A−λE∣(4)
f
(
λ
)
=
0
(
5
)
f(λ)=0 (5)
f(λ)=0(5)
(
A
−
λ
i
E
)
X
=
0
(
6
)
(A-λiE)X =0 (6)
(A−λiE)X=0(6)
X
=
p
i
(
7
)
X =pi (7)
X=pi(7)
以上的公式就是相应的书里面给予给予我们特征值与特征相应的解释,首先我们看第1个式子中的lambda是特征值,然后 X是对应特征值的特征向量。第2个式子把右端项移过来,他本质上与1式是等价的。第3个式子对X有非零解的充要条件是|A-λE|的值等于0。f(λ)称为矩阵A的特征多项式,f(λ)=0 称为矩阵A的特征方程。6和7是说对于一个具体的λi,我们有对应的特征向量pi。
以上就是我们可以从教科书里得到的一些最基本的信息,但是我们看完这些式子之后,仍然对什么是特征向量与特征值一头雾水,并不能直观的理解它。接下来我们将从更直观的角度理解线性代数。
线性代数的本质
当我们在谈论线性的时候,我们到底在谈论什么?线性可以指线性变换( Linear transformation)。 抛开严格数学含义,我们可以说保持网格线平行且等距分布,并且保持原点不动的变换叫做线性变换。用数学语言是这样:
T
(
u
+
v
)
=
T
(
u
)
+
T
(
v
)
.
T(u+v) = T(u)+T(v).
T(u+v)=T(u)+T(v).
T
(
λ
u
)
=
λ
T
(
u
)
T(λu) = λT(u)
T(λu)=λT(u)
我们称满足以上两个条件的变换叫做线性变换。
接下来我们想一想什么是矩阵?矩阵也是一种线性变化。那么我们想一想矩阵相乘是什么意思呢?矩阵相乘是指两个线性变换的相继作用。对于一个向量a=[x,y]',经过一个矩阵A=[a b;c d]想乘。我们得到Aa,它是代表了a向量经过A矩阵的线性变化得到了变化后的坐标[x‘,y’]‘。现在我们来思考一个问题,对于一个非零向量a,RANK(A)=2,那么我们得到变换后的坐标[x‘,y’]‘一定不是零向量。如果让rank(A)=1,那么就代表了这个变换Aa,降低了向量a的维度。OK,现在我们已经得到了一个知识,那就是矩阵与向量的相乘,是对向量进行一次的线性变化。A*x=0;又是什么意思呢? X称为矩阵与a的零向量,或者说是核。这里的核我们称为是经过矩阵A变换后落在原点的集合。有意思的是当我们对比一下核函数的时候,会发现他们是有相似之处的。核函数映射的原始的点就是高维空间中的一些“零点”。
特征值
好了,有了以上的讨论,下面我们正式进入正题。我们知道对于x进行A的线性变化。i.e.A*x等于将X拉伸或者压缩一定的比例。那么λ的含义也非常显然了。他就是对应在变化中发生或者压缩比例的因子。那么特征值的个数呢?不要忘了课本给我们计算特征值的公式,我们可以用代数的基本定理得到。n次代数方程恰有n个根。当在实数域讨论时,特征值的个数不超过方程的次数n。
特征向量
那么我现在我们理解了,为什么特征相对是对应某个特征值的。那么我们自然会问,一个特征值仅对应于一个特征向量吗?那是否定的,因为向量可以乘以一个标量。那我们进一步问一个特征值仅对应于一个方向的特征向量吗?答案也是否定的,对于[2,0;0 2];的矩阵,作用于所有向量的结果是把它们拉伸两倍。也就是说平面中所有方向的向量都是它的特征向量。那么现在我们可以得出正确的结论了,那就是一个特征向量对应于一个特征值。到现在为止,我们似乎已经理解了什么是特征值与特征向量。那么将矩阵的特征基向量作用于它本身会发生什么呢,我们举个例子对于矩阵[3,1;0,2];他的两个特征向量[1 0]'[-1 1]'组成了特征基向量[1 -1;0 1];我们通过计算发现[1 -1;0 1]^-1*[3,1;0,2]*[1 -1;0 1]=[3 0;0 2];我们惊讶的发现右端对角的值就是特征向量对应的特征值。这并不是巧合,我们可以验证具有足够多特征向量的矩阵都可以对角化。但并不是所有矩阵都可以对角化,比如只有一个(一个的意思是很少)特征向量。
总结
希望你可以通过我的介绍,可以让你对线性代数的线性变换,矩阵,特征值,特征向量有给更深的理解。如果你想探索更多关于线性代数本质的内容,可以观看https://space.bilibili.com/88461692/channel/seriesdetail?sid=1528927
3b1b的个人主页,他是很好的数学布道者。相对苏式教育的定理证明加推论。我更喜欢了解一个事物的来龙去脉,当我们深入了解事物之后,一些定理推论就是很自然的事,也就显得更加行云流水了。
本文的目标很明确,还是借助费曼的学习法,把自己所学的知识讲给大家听,如果大家花时间阅读我的文章没有看懂。很抱歉,那是因为我没有完全掌握这个理论。