此视频由CuriosityStream赞助播出
 
在上期视频中
我简单介绍了特征向量和特征值的基本思想
这里快速回顾一下
此处有一个2×2的矩阵
右乘一个向量(1,0)
可以这样写
你将获得一个新的向量
在这里是(-1,-2)
接下来我不再用箭头来表示向量
只用箭头末端的点来代替
因为这样演示会更方便
还是一对输入输出向量
你会发现矩阵变换导致向量缩放
并且旋转
这是一般情况
输入随便一个向量
输出向量的长度和角度一般都会变化
事实上，如果我在屏幕上打出一大堆随机输入向量
用向量末端的点代表
并对它们全部一起做矩阵乘法
这就是新的输出向量
它们中的绝大多数
都是输入向量的比例缩放和旋转
但是如果倒放再来一遍
你会发现这两条线上的所有向量都没有被旋转
这些线上的向量只被缩放了
矩阵对某些线上的向量只缩放
这些就是矩阵的“特征向量”
放大系数，或者说向量被缩放的倍数
就是“特征值”
注意到有个特征值是1
因为变换过程中
那些向量的长度没有改变
如果你再倒带一次
你会发现另外一个特征向量上的点都被放大3倍
如果我们把2×2矩阵换成这个
称为“旋转矩阵”
则所有输入将旋转90°
那么问题来了
这个新矩阵（旋转矩阵）的特征向量是什么
顺便一提，(0,0)不能算的
考虑到特征向量是指那些不会被矩阵旋转的向量
我们可以说这里没有特征向量
因为除了(0,0)之外的所有向量都被旋转了
尽管如此，如果你去分析的话
你还是能算出特征值和特征向量
不过，它们是虚数的
虽然没办法直观地看到它们
我们关心的是这样一个简单的事实
如果特征值/特征向量是虚数
或者只是有虚部
那么，对于所有的非零向量输入
都会因矩阵乘法而旋转
它们可能被缩放，也可能没有
但是被旋转是肯定的
您即将看到的第一个特征值/特征向量的应用
就是 斐波那契数列
你知道的，这个序列从0和1开始
把它们二者相加就获得下一项
然后是这二者相加，云云
数学表示为，每项为前两者相加
现在已知这个数字在序列中，要求下一项
有一个很好的可视化的方式来求解
而不必回到序列本身
可视化的理由在于
我们可以把等式用矩阵乘法表示
根据矩阵乘法法则，请看第一个点乘
F[n-1] 加上 F[n-2] 等于 F[n]
跟上式相同
第二个点乘没有意义
F[N-1] 加 0 等于它本身
我们把它弄进来只是为了获得一个方阵
如果我们输入任意两个相邻数字
比如 8 和 5
输出应就等于序列中的下一项（13）
还有我们输入的F[N-1]（8）
输出只是这个方框滑过一格
每次矩阵乘法都让方框再移一格
从图像上看，这相当于我输入向量 (8,5)
矩阵乘法将转移它至 (13,8)
让我多对几个斐波那契数列的相邻项
所组成的坐标点（向量）进行相同的矩阵乘法运算
如果我保留了输入
我们将看到输出落在了数列的下一项
我们非常关心的是
所有的点似乎都落在这条线附近了
因为它就是矩阵的特征向量
靠近这条线的点
只是往上移动了
而几乎没有旋转
它所对应的特征值正是“黄金比例”
也就是 (1+√5) / 2
这也是每次乘法运算后点远离了原点多少
粗略数字，因为实际点不完全落在线上
尽管粗糙，这也使得预测下一项变得简单
序列越往后算坐标会越靠近这条线
因为特征向量让它们不会旋出这条线
所以我只要取出一个点并乘以黄金比例
就能得到下一项的大概值
就算是很前面的项，这个误差也不大
但如果我扩展一下，让项数趋近无穷大
误差将趋近于0
点也开始无限接近特征向量
这意味着，如果我给你数列更后面的项
并要求下一项
你只需乘上黄金比例
就能获得一个相当精确的值
同样令我着迷的问题是
如果我将这个乘法
用在一些随机点上会怎样
想象这些都代表了“新斐波那契数列”的前面两个数字
他们算法相同，只是初值不同
如果我们做相同的矩阵乘法，将得到这个
代表了数列中的第二对数字
然后再变换成这个点集
再继续下去，点集会越来越接近特征向量
意味着它们都将开始按黄金比例放大
这儿我放大一些，让你们看清四次运算后的结果
数值上这意味着，无论我们的初始值是 0和1
或者 3和17
或者 其它随便什么正数
只要我们用了相同的公式
将前两项相加得到下一项
数列就会逐渐变成黄金比例乘以上一项
这个比例根植于这个算式
根植于这个矩阵和它的特征向量
而非初始值
对于那些渴望了解现实应用的
请看下一个例子
因为它结合了 微积分
和 复数
和 特征的东西
我们先回答几个问题
我现在随便在XY平面上放个粒子点
并告诉你它会随时间变化
第一个问题是
当 dx/dt 和 dy/dt 是多少的时候
它会向右移动？
好吧，如果你觉得微积分很简单
dx/dt 必须为正，dy/dt 必须是0
它将导致X正向移动
而不改变Y
正是我们想要的
如果我想要让粒子点向上
你能轻松得出 dy/dt 为正，并且 dx/dt 等于 0
但有个更难的问题
如果我要它靠近或者远离原点呢？
在这种情况下 dy/dt 需要是 dx/dt 的一半
我们可以把这两个速度看作一个坐标
因为 dy/dt 是 dx/dt 的一半
当且仅当这个坐标落在这条线上时
这条线正好穿过原点和粒子点本身
它的方程是 y=1/2x
只是为了展示视觉效果
如果dx/dt=1， dy/dt=0.5，如图所示
则向量之和指向此处
它指向远离原点的方向
也正是粒子的运动方向
这些值都会带来同样的效果
然而速度为负则导致运动趋向原点
好了，接下来是实际应用
假定有一些狐狸，种群数量记为F
兔子的种群数量记为R
这个变量代表了每种动物在任意时刻的数量
假定狐狸数量的变化速率
等于它当前的种群数量
某种意义上，这代表了狐狸数量越多
它们繁衍地越快
但我们假设它们将长生不老
也没有什么数量上限
因为是简化的
如果解微分方程，将得出模型是指数增长的
现在假定兔子的繁衍速率是当前种群数量的三倍
远高于狐狸的繁衍速率
然而它们会死去或者被吃掉
取决于当前有多少狐狸
这些让问题变得更困难了
但总之，问题是要求出随时间变化会发生什么事情
如果我们对各种群的数量的初始值都赋予随机值
在图像上，我们视x轴为兔子的种群数量
y轴为狐狸的
如果假定初始值为10只兔子和10只狐狸
则这代表了点 (10,10)
如果我们将这个点代入方程
将解得微分项
这说明，兔子此时的增长速率是狐狸的两倍
就像之前那样
所以我们将 dR/dt 和 dF/dt 的集合放到这个点
基本上就是速度了
矢量和告诉我们
在这一刻，这个点将向右上方移动
这意味着两者的数量都在增长
因为就算兔子会被吃掉
它们也繁衍得足够快，以保证数量增长
不要考虑向量的长度，只考虑方向
现在将兔子的初始数量改成2
将数字代入方程
发现兔子的数量将会减少
种群数量逐渐不足
种群消亡的速度快于再生速度
标记出该向量的点
告诉我们在这个示例中
点将向左上方移动
看起来兔子数量将归零
如果我们对每个点都做这件事
我们有点像在画梯度场
但它实际上是微分方程系统的相平面
如果我们从 (10,10) 开始
我们跟踪箭头移动
观察种群数量随时间变化
从 (2,10) 开始我们确实会看到兔子数量趋近0
然后这也有一大堆其他情况
取决于你从哪开始
你所看到的是不同初始条件下的微分方程的解法
但一个一个点地把相平面画出来太繁琐了
所以我们换个方式
我将系数取出来作为一个矩阵
它们将乘以两个变量 R 和 F
将这个导数记为 R' F'
经过矩阵乘法你会发现
它们是等价的
现在我们可以对之前的例子用矩阵乘法
但这次注意输入是兔子和狐狸的种群数量
也就是你看到的点
然而，应用矩阵乘法
输出的是速度，或者说种群变化速率
而不是新的点
这儿，我将 (10,10) 标记为其他颜色
并进行乘法运算同时保留 (10,10) 的副本
这是输出，但再强调一遍
这些代表的是输入点的瞬时变化速率
当输入 (10,10)
我们获得 R'=20，且 F'=10
如果我按比例缩小它
并将它置于输入点上方
它所展示的正如我们之前所见
如果你放10只兔子和10只狐狸进入我们的仿真环境
并按“开始”
在那一刻，两个种群数量都会增加
但兔子的种群数量增长要快2倍
但你是否意识到了特征向量？
如果我回放，你会发现整条线上的所有点
还有x轴上的，都没有旋转
这意味着这些线上的输入
得到的输出也在这些线上
回忆下刚才举过的例子
运动沿着这条线
这意味着如果我们有9只兔子，0只狐狸
或者3只兔子，6只狐狸
只要它在特征向量上
并让仿真启动
则种群数量将永远落在这两条线上
底部的特征向量是显而易见的
一开始你只有兔子
那么过了一段时间后你就有了更多的兔子
但是上面这条线好像就有点意思
如果我们有2倍于兔子数量的狐狸
则随着时间推移，数量比例不会改变
有足够多的狐狸，使兔子的数量不会成绝大多数
但也不会太多，不至于导致兔子完全灭绝
一切都保持着比例
它们的特征值都为正数
因此点都远离原点而不是趋近于它
但仅有这些特征向量，还不足以让我们估计
整个系统在任意初值下的变化情况
由于其余任意初值的流动
都有点跟随着特征向量
所以相平面看起来就像这样
另外，上面这个特征向量分割出了一块特殊区域
任何在它之上的种群数量
都会导致兔子最终消亡
所有的箭头都指向了y轴
这便是狐狸“胜利”的区域
它们以比兔子再生速度更快的速度杀死了兔子们
但在这个特征向量之下而在另一者之上
则是兔子们的“胜利”
它意味着兔子将狐狸的数量甩得越来越远
它们仍被吃掉了一些
但它们的繁衍速度更快
但在特征向量上，这甜蜜的区域，一切都按比例增长
这就是为什么我们之前看到有些路径流向了右边
有些流向了左边
这都取决于我们从特征向量的哪一侧开始操作
为了多一点变化，我们让这个数字增大一些
导致兔子繁衍速度加快
则特征向量往上移动
扩大了兔子“胜利”的区域
如果我让狐狸繁衍地更快，则它向下移动
扩大了狐狸“胜利”的区域
然而这个的最知名应用
是弹簧上的重物
不同于绘制动物种群数量的点
我们将打出“位置”和“速度”点
如果我将重物推到左边
且无速度初值
对应了图像上的这个点
如果我释放它，并假定无阻尼
它将永远振荡运动
在相平面上，这代表了永远绕原点运动
从x位移而无速度
到最大速度而无位移，循环往复
如今代表它的方程变成了
Ma 或者 Mv'
= - kx - bv
其中，k是弹性系数，而b是阻尼系数
当前，质量（m）和弹性系数（k）是 1，而 b=0
因此这是实际的等式
而你可能已经知道了，位移的导数就是速度
为什么我要这样写呢
因为你看，我们有两个微分项
一些系数
同名而没有那“一撇”的变量，跟以前一样
问题跟之前一样，就是怎么找到“特征”一类的东西
然而，在这个问题中特征值是虚数的
特征向量也是如此
记得我之前说过的吗
虚数的特征值代表了旋转
再一次，这就是直观的体验
对于这一类只有虚数特征值的微分方程系统
代表了（相平面上）纯粹的旋转
既不衰减到平衡点，也不会发散
现在如果我增加弹性系数，使弹簧刚性更大
可以猜到仍然不会有衰减
但一些时候的速度理应更大
这就是我增加（弹性系数）后发生的事情
如今我们获得了椭圆图像
表示最大速度增加了
但是最大位移没有，因为还是从原来那个点开始的
尽管如此，特征值仍然是虚数
代表只振荡而不衰减
如果我们加入一些轻阻尼
例如把物块放入某种液体
预计物块仍会振荡，但是会衰减至平衡
因此，请先观察当我改变阻尼系数时相平面的变化
如你所见，现在它盘旋着落入原点，也就是平衡点
这里既无速度，也无位移
这正印证了我们所预计的，来自阻尼的衰减
从特征值的角度，我们能获得更直观的解答
因为虚部之上对应着旋转的分量
我们可以看到负实部对应着衰减
因此系统是稳定的，且会逐渐趋近平衡
如果将阻尼系数继续增大
我们可以看到相平面上的衰减更快了
符合预期的是，实部更加为负
如果我们有一个正的阻尼系数
让我改一下
它将带来一个正实部
对应着放大或者说不稳定
这意味着相平面将螺旋着远离平衡点
到现在，我们已经感受到了特征值和特征向量
所带来的真实视觉体验
对于一个系统或者数列
经历了长时间或多次迭代之后
虽然并非总是如此
但在很多情况下，特征值和特征向量展示了长期行为
这就是为什么它们这么有用
在讲矩阵的那期视频中
我展示了这样一个僵尸场景
在某个隔离区内，每经过一个小时
一部分人类就会变成僵尸
但是也有种治疗方法使得部分僵尸变回人类
既然每小时的人类和僵尸的数量
能够通过线性方程计算得出
我们把它换成矩阵形式
以便看出长此以往会发生什么
如果我们用坐标图来代替
我们将发现，对于一些起始点
代表了人类和僵尸的人口数量
特征向量代表了系统的平衡
由于特征值是 1
一旦人口数量点落在这上面
数字将永远不变
然而其他的点，每小时都会向它移动
经过多次迭代之后，系统将收敛到一个点
在此处僵尸的数量是人类的两倍
再次强调特征向量展示了长期行为
现在让我们假定，我们有数个单向连接的节点
如果你总是随机的在这个网络上游走
并想知道你在每个节点上消耗的平均时长
它又变成了一个矩阵问题
因为一切都是随机的，所以我们可以写出概率
例如你在A，那么你百分百会去到B
然后你会有50%的概率去到C或D
对每条连线都这样做
如果我们把这些概率值放入一个矩阵
在这你可以看出从A到B是100%
但B到C是50%
结果这个矩阵的特征向量
展示了你在每个节点所花费的时间
如果我们将这些节点看作各个网站
将这些连线看作它们之间的链接
这就是谷歌页面排序算法的基本原理
是的，从一开始，谷歌页面排序的算法
就是判断你会在哪些网站停留更长的时间
假设你整天在网上随机点击链接
而排名矩阵只不过是它的特征向量
但它也并非总是代表了长期行为
例如，在之前的视频中，我从未提起过
约会应用的社交网络例子
当有3位男士，记为1~3
和3位女士，记为4~6
在约会网站上匹配，如图所示
而且这里没有同性匹配
这产生了一个二分图
“二分”意指网络可被分割为两个不同的子集
使得每个子集内部无连接
现在，如果我们把它画成邻接矩阵
例如这里，1号人士和4号人士相连
将第1列第4行的值记为1
第4列第1行也是如此
然后，如果二者未相连则记为0
最终得出这个
而我没有提到的是，这正是特征向量
当图是二分的
则该矩阵的特征值
将会呈现出正负对
如果我们允许同性匹配，则这不再是有向图
特征值也不再是正负对
因此，如果我给你这样一张图
你很难一眼看出它是否是二分图
但如果我标记了节点，并基于所有连接作出邻接矩阵
我发现特征值全都是正负对
然后我们就知道了：是的！这是二分图
如果我重新排列一下就会更明显
想要知道图如何做聚类
同样需要用到特征值
且它能揭示极其混乱的图中的隐藏模式
请参考谱聚类算法以了解更多
特征值也出现在频率分析中
如果你需要找到一个系统的自然频率
这在电路中非常有用，因为和这很像（分析频率）
还有弹簧上的重物
特征值能帮助我们了解疾病在人群中的传播速度
用于数据压缩和人脸识别
大量的物理应用
当然还有许多，我无法在视频中一一介绍
但仍希望本视频能让你直观感受到它背后的力量
我相信很多人在学校学到这个时都没什么概念
- 以下内容为赞助商信息 -
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
