系列 · 线性代数 · 第 6 篇

线性代数(六):特征值与特征向量

矩阵作用在向量上,绝大多数向量会被旋转和拉伸——但总有少数向量方向不变,只是被缩放。这些特征向量和它们对应的特征值,揭示了线性变换最深的结构,从 Google 搜索到 PCA 都靠它撑起。

一个核心问题#

用矩阵作用到向量上,结果可能千变万化:大部分向量会被旋转、拉伸,最终指向一个全新的方向;但总有一些特殊的向量,无论怎样变换都不会离开自己的方向——它们只会被拉长、缩短或反向。

线性代数(六):特征值与特征向量 — 章节概览图

这些“倔强”的向量就是特征向量(eigenvector),它们被拉伸或缩短的比例就是特征值(eigenvalue)。

寻找这些“不变方向”是数学中最强大的工具之一,特征值驱动了 Google 的 PageRank 算法,预测人口增长,分析桥梁和飞机的稳定性,甚至将原本需要超级计算机算几百年的问题简化为几步简单的计算。

你将学到什么#

  • 特征向量和特征值的定义,以及它们清晰的几何意义
  • 如何用特征方程求解它们
  • 对角化:把矩阵重新表达为沿自身主轴的缩放
  • 为什么矩阵涉及旋转时会出现复特征值
  • 幂迭代、 PCA、 PageRank、 Leslie 人口模型、斐波那契数列——同一个概念的五种应用
  • 对称矩阵的谱定理

预备知识#

第 3 章 (矩阵作为线性变换)、第 4 章 (行列式)、第 5 章 (零空间与列空间)。

特征向量到底是什么#

形式定义#

$$ A\vec{v} = \lambda\vec{v}, $$

那么 $\vec{v}$ 就是 $A$特征向量$\lambda$ 是对应的特征值

“eigen” 是德语,意思是“自己的”或“内在的”。特征向量就是矩阵独有的方向。

为什么非零很重要?#

零向量对任何 $\lambda$ 和任何 $A$ 都能满足 $A\vec{0} = \lambda\vec{0}$ 。如果允许零向量作为特征向量,那每个数都能成为特征值,这个概念就毫无意义了。所以特征向量必须是非零的。不过特征值可以为零——这说明 $A$ 把那个方向压缩到了原点。

一张图胜过千言万语#

在平面上随便选两个向量,用同一个矩阵 $A$ 对它们进行变换,定义马上就清楚了。一个在特征线上,另一个不在:

一个停在原线上的向量幸存为特征向量;普通向量被甩出原线

绿色向量 $\vec{v}$ 变换后长度变成了原来的 3 倍,但方向没变——它所在的过原点的直线保持不变。橙色向量 $\vec{u}$ 则被旋转离开了原来的直线。特征向量就是那些“左边虚线和右边虚线完全重合”的向量。

两个直观例子#

揉面团: 揉面的时候,面团内部几乎所有点都被移动到新位置,既混合又旋转。但沿着擀面杖的方向,点只是被压扁——方向保持不变。这些方向就是这次揉压变换的特征方向。

旋转木马: 在旋转木马上,你身体的每个方向都在不停变化,只有旋转轴始终指向上方。这个轴就是一个特征值为 1 的特征向量。


特征值告诉了你什么#

特征值 $\lambda$ 就是沿着特征方向的缩放比例。三种情况就能讲清楚它的作用:

同一个特征向量,不同特征值:拉伸、不变、翻面缩小

看下面的对照表:

特征值特征向量的变化
$\lambda > 1$拉长,方向不变
$\lambda = 1$不变,固定方向
$0 < \lambda < 1$缩短,方向不变
$\lambda = 0$压缩到原点——矩阵 $A$ 在这个方向上不可逆
$-1 < \lambda < 0$翻转并缩短
$\lambda < -1$翻转并拉长
$\lambda \in \mathbb{C}\setminus\mathbb{R}$旋转——没有固定的实数方向

例子:镜子反射#

绕 y 轴的反射可以用矩阵 $A = \bigl(\begin{smallmatrix}-1&0\\0&1\end{smallmatrix}\bigr)$ 表示。

  • $\lambda_1 = -1$ ,特征向量 $(1,0)$ :水平向量左右翻转。
  • $\lambda_2 = 1$ ,特征向量 $(0,1)$ :竖直向量保持不动。

这和日常照镜子的经验一致:左右互换,上下不变。

例子:剪切变换#

剪切矩阵 $A = \bigl(\begin{smallmatrix}1&1\\0&1\end{smallmatrix}\bigr)$ 把每条竖直线推成斜线。解特征方程会发现 $\lambda = 1$ 是一个重根,但只有一个独立特征向量 $(1,0)$

也就是说,剪切变换只保留了一个方向——水平轴——再没有其他方向了。这种矩阵叫亏损矩阵(defective matrix),无法对角化。


求特征值:特征方程#

$$ (A - \lambda I)\vec{v} = \vec{0}. $$ $$ \det(A - \lambda I) = 0. $$

这就是特征方程。它是关于 $\lambda$$n$ 次多项式,根据代数基本定理,在复数域 $\mathbb{C}$ 上恰好有 $n$ 个根(含重数)。这些根就是特征值。

完整算例#

求矩阵 $A = \bigl(\begin{smallmatrix}4&2\\1&3\end{smallmatrix}\bigr)$ 的特征值和特征向量。

$$ \det\begin{pmatrix}4-\lambda&2\\1&3-\lambda\end{pmatrix} = (4-\lambda)(3-\lambda) - 2 = \lambda^2 - 7\lambda + 10 = 0. $$

第二步:解方程。
分解因式得 $(\lambda - 5)(\lambda - 2) = 0$ ,所以 $\lambda_1 = 5$$\lambda_2 = 2$

第三步:求特征向量。

$$ (A - 5I)\vec{v} = \begin{pmatrix}-1&2\\1&-2\end{pmatrix}\vec{v} = \vec{0}. $$

解得 $v_1 = 2v_2$ ,取 $\vec{v}_1 = (2, 1)$

$$ (A - 2I)\vec{v} = \begin{pmatrix}2&2\\1&1\end{pmatrix}\vec{v} = \vec{0}. $$

解得 $v_1 = -v_2$ ,取 $\vec{v}_2 = (-1, 1)$

验证结果。
计算 $A(2,1)^T = (10,5)^T = 5\,(2,1)^T$ 。✓

两个快速检验方法#

$$ \operatorname{tr}(A) = \lambda_1 + \cdots + \lambda_n,\qquad \det(A) = \lambda_1\cdots\lambda_n. $$

在本例中,$\operatorname{tr}(A) = 7 = 5+2$$\det(A) = 10 = 5\cdot 2$ 。每次计算完都用这两个公式检查一下,能迅速发现算术错误。

$2\times 2$ 矩阵特征向量的几何直观#

把原始网格和变换后的网格画在一起,特征向量就一目了然——它们是网格变形时保持不动的那两条直线。

特征向量是网格变形时绕着不动的那两条线

右图中,网格被剪切、拉伸,但绿色和紫色的两条过特征向量的直线位置不变,其他所有方向都发生了倾斜。

对角化:让矩阵变得简单#

线性代数(六):特征值与特征向量 — 章节小结图

核心思想#

$$ A = P D P^{-1}. $$

这样就把变换 $A$ 分解成了三步:切换到特征基底、独立缩放每个特征方向、再切换回原坐标系。

三步还原 $A$ #

对角化的三步:换基底 → 纯缩放 → 换回来

中间那一步就是 $D$ ——把 x 轴拉长 3 倍, y 轴保持不变。在特征基底下,所有可对角化矩阵都只是几个独立缩放操作的组合。

为什么这很强大?#

快速计算矩阵幂: 因为 $A^k = P D^k P^{-1}$ ,而 $D^k = \operatorname{diag}(\lambda_1^k, \ldots, \lambda_n^k)$ ,只要特征分解算好了,求 $A^{100}$ 就非常简单——只需要对几个标量求幂,而不是对整个矩阵。

长期行为清晰可见:$k \to \infty$ ,绝对值最大的特征值(主特征值)决定了系统的行为:如果 $|\lambda_{\max}| > 1$ ,系统会发散;如果 $|\lambda_{\max}| < 1$ ,系统会收敛;如果 $|\lambda_{\max}| = 1$ ,系统会保持稳定。

矩阵函数轻松定义: 对任何合理的函数 $f$ ,都可以定义 $f(A) := P f(D) P^{-1}$ 。这就是微分方程中的矩阵指数、连续时间马尔可夫链等背后的原理。

什么时候可以对角化?#

  • 如果矩阵有 $n$互不相同的特征值,一定可以对角化。不同特征值对应的特征向量天然线性无关,这一点我稍后会证明。
  • 实对称矩阵(以及更一般的正规矩阵)总是可以对角化的,即使有重特征值,也能找到一组正交的特征向量。
  • 如果独立特征向量的数量少于矩阵的阶数,矩阵就是亏损的(defective),无法对角化。比如剪切矩阵 $\bigl(\begin{smallmatrix}1&1\\0&1\end{smallmatrix}\bigr)$$\lambda = 1$ 的代数重数是 2,但几何重数只有 1。

复特征值:旋转的数学本质#

旋转没有实特征向量#

$$ A = \begin{pmatrix}0&-1\\1&0\end{pmatrix}, $$

它的特征方程是 $\lambda^2 + 1 = 0$ ,解得 $\lambda = \pm i$ 。这个矩阵没有实特征向量,几何上看非常明显: 90° 旋转会把实平面上所有方向都转走。

实空间中的每个向量都被旋转出原线;迭代下去画出一个圆

左图说明:随便选一个方向,$R$ 都会把它转离原来的直线。右图展示了 $R$ 反复作用在一个初始向量上的结果——轨迹画出一个圆,长度保持不变,因为 $|\lambda| = |e^{i\theta}| = 1$

一般旋转#

$$ R_\theta = \begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}, $$

特征值是 $\lambda = \cos\theta \pm i\sin\theta = e^{\pm i\theta}$ 。这就是欧拉公式从行列式中自然浮现的结果。模长 $|\lambda| = 1$ 表明旋转不会改变向量的长度。

复特征值总是共轭成对出现#

实矩阵的特征多项式系数是实数,所以复特征值必然成对共轭出现:如果 $\lambda = a + bi$ 是特征值,那么 $\bar\lambda = a - bi$ 也是。

复特征值如何影响系统行为#

$\lambda = re^{i\theta}$ 。每次迭代时,矩阵 $A$ 会让向量缩放 $r$ 倍并旋转 $\theta$ 角度。因此,$A^k\vec{x}_0$ 的长期行为可以分为三种情况:

  • $r < 1$ :向内螺旋(阻尼振荡)
  • $r = 1$ :在圆或椭圆上转动(等幅振荡)
  • $r > 1$ :向外螺旋(发散振荡)

这解释了为什么无阻尼摆会永远摆动,有阻尼摆最终会停下,而控制理论中调得不好的反馈回路会导致系统失控。

幂迭代:求解主特征向量#

$$ \vec{v}_{k+1} = \frac{A\vec{v}_k}{\|A\vec{v}_k\|}. $$

随便选一个初始向量(几乎任何向量都可以),用 $A$ 作用上去,归一化,然后重复这个过程。最终结果会收敛到主特征向量。

幂迭代:任意起始方向都会被吸引到主特征线

$$ A^k\vec{v}_0 = \sum_i c_i \lambda_i^k \vec{v}_i. $$

经过 $k$ 次迭代后,$|\lambda_i|$ 最大的那一项会以 $(|\lambda_1|/|\lambda_2|)^k$ 的比例压倒其他项。归一化去掉绝对长度,剩下的就是主特征向量。收敛速度是几何级数,取决于谱隙 $|\lambda_2|/|\lambda_1|$ ——谱隙越大,收敛越快。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import numpy as np

def power_iteration(A, num_iters=100):
    v = np.random.rand(A.shape[0])
    v /= np.linalg.norm(v)
    for _ in range(num_iters):
        Av = A @ v
        v = Av / np.linalg.norm(Av)
    eigenvalue = v @ A @ v          # 瑞利商
    return eigenvalue, v

A = np.array([[4, 2], [1, 3]])
val, vec = power_iteration(A)
print(f"主特征值: {val:.4f}")   # ~5.0

如果需要求所有特征值,工业级算法是 QR 迭代, NumPy、 MATLAB 和 LAPACK 都在底层使用它:

1
2
3
4
5
6
7
8
def qr_algorithm(A, num_iters=200):
    Ak = A.astype(float).copy()
    for _ in range(num_iters):
        Q, R = np.linalg.qr(Ak)
        Ak = R @ Q
    return np.diag(Ak)

print(qr_algorithm(np.array([[4, 2], [1, 3]])))   # [5, 2]

应用一:人口增长(Leslie 矩阵)#

把一个物种按年龄分成几类,用 $\vec{p}_t$ 表示 $t$ 时刻每个年龄类的数量。Leslie 矩阵 $L$ 的第一行是各年龄类的生育率,次对角线是存活率。模型很简单:$\vec{p}_{t+1} = L\vec{p}_t$

$$ L = \begin{pmatrix}0&2&0.5\\0.6&0&0\\0&0.8&0\end{pmatrix}. $$
1
2
3
4
import numpy as np
L = np.array([[0, 2, 0.5], [0.6, 0, 0], [0, 0.8, 0]])
eigenvalues, eigenvectors = np.linalg.eig(L)
print("主特征值:", max(abs(eigenvalues)))

主特征值决定了整个系统的命运:如果 $|\lambda_1| > 1$ ,种群会增长;如果 $|\lambda_1| < 1$ ,种群会灭绝;如果 $|\lambda_1| = 1$ ,种群会趋于稳定。对应的特征向量就是稳定年龄分布——不管初始比例是什么,最终都会收敛到这个分布。


应用二: Google PageRank#

Larry Page 和 Sergey Brin 提出了一个问题:如何衡量一个网页的重要性?他们的答案很简单:如果重要的网页链接到某个网页,那这个网页就重要。 这个定义是递归的,而这种递归问题正好可以用特征向量来解决。

$$ \vec{r} = H\vec{r}, $$

这其实就是 $H\vec{r} = 1\cdot\vec{r}$ ,也就是特征值为 1 的特征向量。

$$ G = dH + \frac{1-d}{n}\,\mathbf{1}\mathbf{1}^T. $$

对矩阵 $G$ 进行幂迭代,最终就能得到 PageRank。实际上, PageRank 就是对一个数十亿行的稀疏矩阵做幂迭代。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import numpy as np
H = np.array([[0,   0, 1, 1/3],
              [1/2, 0, 0, 1/3],
              [1/2, 1, 0, 1/3],
              [0,   0, 0, 0  ]])
d, n = 0.85, 4
G = d * H + (1 - d) / n * np.ones((n, n))
r = np.ones(n) / n
for _ in range(100):
    r = G @ r
print("PageRank:", r)

应用三:斐波那契与黄金比例#

$$ \begin{pmatrix}F_{n+1}\\F_n\end{pmatrix} = \begin{pmatrix}1&1\\1&0\end{pmatrix}^n \begin{pmatrix}1\\0\end{pmatrix}. $$ $$ \phi = \tfrac{1+\sqrt 5}{2}\approx 1.618 \quad\text{(黄金比例)},\qquad \hat\phi = \tfrac{1-\sqrt 5}{2}\approx -0.618. $$ $$ F_n = \frac{\phi^n - \hat\phi^n}{\sqrt 5}. $$

因为 $|\hat\phi| < 1$ ,第二项会逐渐衰减,最终 $F_{n+1}/F_n$ 收敛到 $\phi$ 。黄金比例的出现并非偶然,它正是斐波那契矩阵的主特征值。

应用四: PCA 预告#

$\mathbb{R}^n$ 中取一团数据点,先中心化,再计算协方差矩阵 $C = \tfrac{1}{n-1}XX^T$ 。协方差矩阵 $C$ 的特征向量就是主成分,也就是方差最大的正交方向。特征值则表示这些方向上的方差大小。

主成分就是协方差矩阵的特征向量

PC$_1$ 指向点云分布的最长轴, PC$_2$ 与 PC$_1$ 垂直,且长度更短。把数据投影到前几个主成分上,就能得到保留最多信息的最低维表示。这个简单的思想支撑了人脸识别、基因表达聚类和推荐系统等应用。我将在第 9 章 中进一步说明,它还直接引出了奇异值分解(SVD)。


对称矩阵与谱定理#

实对称矩阵($A = A^T$ )是线性代数中最让人省心的一类矩阵:

  1. 特征值全是实数,不会有复数冒出来。
  2. 不同特征值对应的特征向量彼此正交
  3. 总能找到一组标准正交的特征向量。换句话说,$A = Q\Lambda Q^T$ ,其中 $Q$ 是正交矩阵(满足 $Q^{-1} = Q^T$ )。

这就是谱定理,也是 PCA、图像压缩以及大部分优化方法能如此简洁高效的根本原因。

谱分解#

$$ A = \lambda_1\,\vec{q}_1\vec{q}_1^T + \lambda_2\,\vec{q}_2\vec{q}_2^T + \cdots + \lambda_n\,\vec{q}_n\vec{q}_n^T. $$

如果只保留绝对值最大的前 $k$$\lambda_i$ ,就能得到 $A$ 在 Frobenius 范数下的最优秩-$k$ 近似。这正是低秩去噪和压缩的核心原理。

正定性#

对于对称矩阵 $A$ ,特征值的符号决定了二次型 $\vec{x}^T A\vec{x}$ 的性质:

条件二次型
所有 $\lambda_i > 0$正定——像碗一样,有唯一极小值
所有 $\lambda_i \ge 0$半正定
所有 $\lambda_i < 0$负定——像穹顶一样,有唯一极大值
正负混合不定——鞍点

在优化问题中,目标函数在临界点处的 Hessian 矩阵正定,就是严格局部极小值的二阶充分条件。


几条值得记住的性质#

对象特征值特征向量
$A$$\lambda_i$$\vec{v}_i$
$A^k$$\lambda_i^k$$\vec{v}_i$ (不变)
$A^{-1}$ (可逆时)$1/\lambda_i$$\vec{v}_i$ (不变)
$A + cI$$\lambda_i + c$$\vec{v}_i$ (不变)
$cA$$c\lambda_i$$\vec{v}_i$ (不变)
$A^T$ (实矩阵)$\lambda_i$通常不同
$$ \operatorname{tr}(A) = \sum_i \lambda_i, \qquad \det(A) = \prod_i \lambda_i, \qquad A \text{ 可逆} \iff \text{所有 } \lambda_i \neq 0. $$

相似矩阵#

如果 $B = P^{-1}AP$ ,那么 $A$$B$相似矩阵,它们的特征多项式相同,因此特征值及其重数也完全一致。对角化只是相似变换恰好把 $B$ 变成对角矩阵的情况。

代数重数与几何重数#

  • 代数重数$\lambda$ 作为特征多项式根出现的次数。
  • 几何重数$\dim \ker(A - \lambda I)$ ,也就是对应 $\lambda$ 的线性无关特征向量的数量。

几何重数总是小于或等于代数重数。一个矩阵可以对角化的条件是,每个特征值的几何重数都等于代数重数。


总结#

特征值和特征向量揭示了线性变换的核心结构:

概念含义
特征向量变换后方向保持不变的向量
特征值该方向上的缩放比例
对角化在特征基下,变换变成独立的拉伸操作
复特征值矩阵发生旋转——没有固定的实数方向
主特征值决定 $A^k\vec{x}_0$ 的长期行为
谱定理对称矩阵 $\Rightarrow$ 实特征值 + 正交特征向量

核心思想: 找到方向不变的向量,复杂的变换就简化成几个简单的拉伸操作。

从 Google 搜索到种群生物学,从量子力学到深度学习,特征值无处不在。掌握这个概念,我就掌握了应用数学的一把关键钥匙。


数值稳定性:为什么我们从不用特征多项式求特征值#

教科书上讲的特征值求法是这样的:列出 $\det(A-\lambda I)=0$ ,展开成关于 $\lambda$ 的多项式,然后求根。但实际写代码时,没人会这么干,原因非常有趣。

多项式的根对系数极其敏感,这种敏感性可以用“病态”来形容。 Wilkinson 举过一个经典例子:$\prod_{k=1}^{20}(x-k)$ 的根是 $1, 2, \ldots, 20$ 。如果把 $x^{19}$ 的系数稍微扰动一下,比如改变 $2^{-23}$ ——仅仅是一个系数末尾的一个 bit——靠近 $x=15$ 的那些根就会剧烈变化,变成半径大于 2 的复数对。输入的微小误差导致了输出的巨大偏差。这个多项式求根问题的条件数大约是 $10^{14}$

$$A \;\longrightarrow\; \text{特征多项式系数} \;\longrightarrow\; \text{根}.$$

第一步,计算行列式展开时会出现大量抵消,这本身就是误差放大的来源。第二步则是 Wilkinson 灾难的重演。即使是 $20\times 20$ 的矩阵,只要元素看起来很合理,绕一圈算出来的特征值可能连首位数字都错了。

实际的特征值求解器,比如 LAPACK 中的 dgeev(用于一般矩阵)和 dsyev(用于对称矩阵),背后分别是 numpy 的 np.linalg.eignp.linalg.eigh。它们根本不生成特征多项式,而是用 QR 算法:迭代地分解 $A_k = Q_k R_k$ ,然后令 $A_{k+1} = R_k Q_k$$A_{k+1}$$A_k$ 有相同的特征值(因为这是相似变换),在一定条件下,$A_k$ 会收敛到上三角矩阵,特征值就出现在对角线上。通过引入 shift 和 Hessenberg 预处理,算法复杂度是 $\Theta(n^3)$ ,并且具有反向稳定性:计算出的特征值是 $A+\delta A$ 的精确特征值,其中 $\|\delta A\|\le c\,\varepsilon\,\|A\|$

对于对称矩阵,dsyev 使用三对角化加 分治(divide-and-conquer)或 MRRR 方法,速度更快(约 $\tfrac{4}{3}n^3$ ),稳定性也更高。结论很简单:写代码时遇到“求特征值”,如果是对称矩阵就用 np.linalg.eigh,否则用 np.linalg.eig,别犹豫。特征多项式只是个定义,不是算法。

深度学习中的联系: Jacobian 特征值与梯度爆炸/消失#

$$\frac{\partial h_T}{\partial h_0} \;\approx\; \prod_{t=0}^{T-1} J_t,$$

其中 $J_t$ 是第 $t$ 步的 Jacobian 矩阵。对于长序列(比如 $T=100, 1000$ ),这个连乘积的长期行为由平均 Jacobian 的特征值决定——这正是你刚刚学到的主特征值分析。

这里有三个关键点:

  1. 如果主特征值 $|\lambda| > 1$ ,梯度会指数级爆炸,$\|J^T\| \sim |\lambda|^T$ 。比如当 $|\lambda| = 1.1$ 时,经过 100 步,梯度会被放大到原来的约 $13{,}780$ 倍。这就是所谓的梯度爆炸。解决方法通常是梯度裁剪:一旦梯度范数超过某个阈值,就对其进行缩放。
  2. 如果主特征值 $|\lambda| < 1$ ,梯度会指数级衰减。比如当 $|\lambda| = 0.9$ 时,经过 100 步,梯度会缩小到原来的约 $26{,}000$ 分之一。这就是梯度消失,也是为什么普通的 RNN 难以学习长程依赖的原因。 LSTM 和 GRU 通过引入一个接近恒等映射的路径(cell state),让主方向上的等效 Jacobian 特征值接近 $1$ ,从而绕开了这个问题。
  3. 正交初始化将循环权重矩阵的所有奇异值(以及谱半径上界)初始化为 $1$ ,让训练从稳定边缘开始,而不是一开始就陷入不稳定或过度衰减的状态。

对于前馈网络,类似的分析逐层适用:每层 $W^TW$ 的特征值决定了梯度在反向传播过程中是被放大还是被削弱。 ResNet 的成功部分归功于 skip connection $x + F(x)$ ,它给层 Jacobian 加上了恒等矩阵,把特征值从零附近推开。 GAN 中的谱归一化通过约束 $\sigma_{\max}(W) \le 1$ 来保证稳定性。这些技巧全都直接来源于你刚刚建立的特征值直觉。

所以,当这一章提到“主特征值控制 $A^k\vec{x}_0$ 的长期行为”时,放到深度学习的语境下,可以理解为:它决定了你那 100 层的网络到底能不能训得动


接下来的内容#

  • 第 7 章 正交性与投影——支撑 PCA 和最小二乘的几何原理。
  • 第 8 章 对称矩阵与二次型——深入探讨谱定理的核心思想。
  • 第 9 章 奇异值分解——每个矩阵都能表示为“旋转 × 缩放 × 旋转”,非方阵也不例外。
  • 第 10–18 章: 范数、稀疏方法、矩阵微积分,以及它们在机器学习、计算机视觉等领域的实际应用。
本系列

线性代数 18 篇

  1. 01 线性代数(一):向量的本质——不仅仅是箭头
  2. 02 线性代数(二):线性组合与向量空间
  3. 03 线性代数(三):矩阵作为线性变换
  4. 04 线性代数(四):行列式的秘密
  5. 05 线性代数(五):线性方程组与列空间
  6. 06 线性代数(六):特征值与特征向量 当前
  7. 07 线性代数(七):正交性与投影——当向量互不干扰
  8. 08 线性代数(八):对称矩阵与二次型
  9. 09 线性代数(九):奇异值分解 SVD
  10. 10 线性代数(十):矩阵范数与条件数——数值计算的健康体检
  11. 11 线性代数(十一):矩阵微积分与优化——从梯度到反向传播
  12. 12 线性代数(十二):稀疏矩阵与压缩感知——少即是多的数学奇迹
  13. 13 线性代数(十三):张量与多线性代数——从标量到高维数据立方体
  14. 14 线性代数(十四):随机矩阵理论——混沌中的秩序
  15. 15 线性代数(十五):机器学习中的线性代数——从 PCA 到推荐系统
  16. 16 线性代数(十六):深度学习中的线性代数——从全连接到 Transformer
  17. 17 线性代数(十七):计算机视觉中的线性代数——从像素到三维重建
  18. 18 线性代数(十八):前沿应用与总结——量子计算、GNN、大模型,与十八章回望

读有所得?

GitHub 关注我 → 新文周更

GitHub