<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>线性代数 on 方糖猫Blog</title>
    <link>https://ftmao.com/blog/tags/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/</link>
    <description>AI 视频、AI Agent 与工程实践笔记</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Tue, 28 Jul 2020 09:00:00 +0800</lastBuildDate><atom:link href="https://ftmao.com/blog/tags/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/index.xml" rel="self" type="application/rss+xml" /><item>
      <title>《数学之美》学习总结：程序员视角下的核心数学知识与工程实践</title>
      <link>https://ftmao.com/blog/bookstore/beauty-of-mathematics-notes/</link>
      <pubDate>Tue, 28 Jul 2020 09:00:00 +0800</pubDate>
      <guid>https://ftmao.com/blog/bookstore/beauty-of-mathematics-notes/</guid>
      <description>&lt;h1 id=&#34;数学之美学习总结程序员视角下的核心数学知识与工程实践&#34;&gt;《数学之美》学习总结：程序员视角下的核心数学知识与工程实践&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;目标读者：写过代码、对数学有点畏惧、想知道“学这些到底有什么用”的新人。&lt;br&gt;
参考书籍：吴军《数学之美》&lt;br&gt;
阅读目标：建立数学与软件工程之间的直觉连接，避开最常见的学习误区。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;0-写在前面数学不是应试而是降维工具&#34;&gt;0. 写在前面：数学不是应试，而是“降维工具”&lt;/h2&gt;
&lt;p&gt;很多程序员对数学的印象还停留在大学课堂：公式推导、考试算题、考完就忘。《数学之美》这本书最大的价值，是让我们看到&lt;strong&gt;数学在真实工程问题中如何把复杂问题变简单&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;搜索怎么在海量网页里找到最相关的结果？→ 用&lt;strong&gt;概率&lt;/strong&gt;和&lt;strong&gt;线性代数&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;语音识别怎么把声波变成文字？→ 用&lt;strong&gt;概率模型&lt;/strong&gt;和&lt;strong&gt;隐马尔可夫模型&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;机器翻译怎么做到“信达雅”？→ 用&lt;strong&gt;统计&lt;/strong&gt;和&lt;strong&gt;信息论&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;推荐系统怎么猜你喜欢？→ 用&lt;strong&gt;矩阵分解&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;中文分词怎么切得准？→ 用&lt;strong&gt;统计语言模型&lt;/strong&gt;和&lt;strong&gt;动态规划&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;数据怎么压缩得更小？→ 用&lt;strong&gt;信息论&lt;/strong&gt;中的熵和哈夫曼编码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这本书的核心启示：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;好的数学模型，能把一个看似需要“理解人类智能”的问题，转化为可以计算、可以优化的工程问题。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下面我从程序员最关心的几大数学分支入手，分别讲清楚它们的作用、典型场景和学习避坑技巧。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;1-线性代数把关系变成矩阵运算&#34;&gt;1. 线性代数：把“关系”变成“矩阵运算”&lt;/h2&gt;
&lt;h3 id=&#34;11-一句话理解线性代数&#34;&gt;1.1 一句话理解线性代数&lt;/h3&gt;
&lt;p&gt;线性代数研究的是&lt;strong&gt;向量、矩阵和它们之间的变换&lt;/strong&gt;。对程序员来说，它最大的用处是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;把一堆有关系的数字，统一表示成矩阵，然后用高效的矩阵运算一次性处理。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;12-先修复习向量内积与矩阵乘法&#34;&gt;1.2 先修复习：向量、内积与矩阵乘法&lt;/h3&gt;
&lt;p&gt;如果你从没接触过线性代数，先把这几个概念过一遍，后面所有内容都建立在它们之上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. 向量：一组有顺序的数字&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;向量就是一个排好序的数字列表。比如用一个向量描述一个用户：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[年龄 25, 月消费 300, 活跃天数 12]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;位置是有意义的：第 1 位永远是年龄，不能随便换。推荐系统、神经网络里说的“特征向量”，就是这个东西。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 内积（点积）：对应位置相乘再相加&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;两个长度相同的向量，对应位置的数字相乘，再把结果全部加起来，就是内积：&lt;/p&gt;
&lt;p&gt;$$
[2, 1] \cdot [3, 4] = 2 \times 3 + 1 \times 4 = 6 + 4 = 10
$$&lt;/p&gt;
&lt;p&gt;直觉上，内积衡量“两个方向有多像”：两个向量越是“同向”，内积越大。这就是为什么推荐系统能用它来算“用户口味”和“电影风格”的匹配度（见 1.4 节）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 矩阵：一张二维数字表&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;矩阵就是一张有行有列的数字表。我们用 $(m \times n)$ 表示它的形状，$m$ 是行数，$n$ 是列数。比如一张 3 个用户 × 4 部电影的评分表，就是一个 $(3 \times 4)$ 的矩阵。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 矩阵乘法：左矩阵的行，与右矩阵的列做内积&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;矩阵 $A$ 乘矩阵 $B$，结果第 $i$ 行第 $j$ 列的元素 = “$A$ 的第 $i$ 行”与“$B$ 的第 $j$ 列”的内积。看一个完整例子，$A$ 是 $(2 \times 3)$，$B$ 是 $(3 \times 2)$：&lt;/p&gt;
&lt;p&gt;$$
A = \begin{bmatrix} 1 &amp;amp; 2 &amp;amp; 0 \\ 3 &amp;amp; 1 &amp;amp; 1 \end{bmatrix}, \quad
B = \begin{bmatrix} 1 &amp;amp; 2 \\ 0 &amp;amp; 1 \\ 2 &amp;amp; 0 \end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;结果 $C = A \times B$ 是一个 $(2 \times 2)$ 矩阵，4 个元素逐个算：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$C_{11}$ = $A$ 第 1 行 · $B$ 第 1 列 = $[1,2,0] \cdot [1,0,2]$ = $1\times1 + 2\times0 + 0\times2 = 1$&lt;/li&gt;
&lt;li&gt;$C_{12}$ = $A$ 第 1 行 · $B$ 第 2 列 = $[1,2,0] \cdot [2,1,0]$ = $1\times2 + 2\times1 + 0\times0 = 4$&lt;/li&gt;
&lt;li&gt;$C_{21}$ = $A$ 第 2 行 · $B$ 第 1 列 = $[3,1,1] \cdot [1,0,2]$ = $3\times1 + 1\times0 + 1\times2 = 5$&lt;/li&gt;
&lt;li&gt;$C_{22}$ = $A$ 第 2 行 · $B$ 第 2 列 = $[3,1,1] \cdot [2,1,0]$ = $3\times2 + 1\times1 + 1\times0 = 7$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;$$
C = \begin{bmatrix} 1 &amp;amp; 4 \\ 5 &amp;amp; 7 \end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;形状规则：&lt;strong&gt;$(m \times k) \cdot (k \times n) = (m \times n)$&lt;/strong&gt;——左矩阵的列数必须等于右矩阵的行数，这两个相同的 $k$ 会“抵消”掉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 转置：行列互换&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;转置就是把矩阵“翻个面”，第 $i$ 行变成第 $i$ 列，记作 $A^T$。上面的 $A$ 转置后变成 $(3 \times 2)$：&lt;/p&gt;
&lt;p&gt;$$
A^T = \begin{bmatrix} 1 &amp;amp; 3 \\ 2 &amp;amp; 1 \\ 0 &amp;amp; 1 \end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这和后面的工程应用有什么关系？&lt;/strong&gt; 推荐系统的矩阵分解，本质就是“用户向量 · 电影向量”的内积；神经网络每一层都是一次矩阵乘法。看懂上面的计算过程，后面公式里的 $u_i^T v_j$、$W\mathbf{x}$ 对你来说就不再是天书。&lt;/p&gt;
&lt;h3 id=&#34;13-核心概念速查&#34;&gt;1.3 核心概念速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;概念&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;程序员直觉&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;软件行业用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;向量&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;一组有顺序的数字&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;用户特征、词向量、颜色 RGB&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;矩阵&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;一张二维表&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;邻接表、图像像素、权重参数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;矩阵乘法&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;一种“加权组合”&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;神经网络前向传播、图神经网络&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;特征值/特征向量&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;变换中的“不变方向”&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;PageRank、降维、稳定性分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;转置、逆矩阵&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;坐标系互换、回推原值&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;最小二乘法、线性回归求解&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;14-典型场景推荐系统里的矩阵分解&#34;&gt;1.4 典型场景：推荐系统里的矩阵分解&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;什么是矩阵分解？&lt;/strong&gt; 一句话：把一张大表拆成两张小表的乘积。如果 $R \approx U \times V$，那么 $R$ 里任何一个元素，都可以用“$U$ 的一行”和“$V$ 的一列”做内积还原出来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么评分表是稀疏的？&lt;/strong&gt; 假设有 100 万用户、10 万部电影，评分表有 $10^{11}$ 个格子。但每个用户只看过几百部电影，打过分的更少——表里 99% 以上的格子是空的。推荐系统要解决的就是：&lt;strong&gt;把这些空格子填上&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一个完整的数字例子。&lt;/strong&gt; 假设只有 3 个用户、4 部电影，真实评分矩阵 $R$（“?” 表示没看过、需要预测）：&lt;/p&gt;
&lt;p&gt;$$
R = \begin{bmatrix} 5 &amp;amp; 4 &amp;amp; ? &amp;amp; 1 \\ ? &amp;amp; 1 &amp;amp; 5 &amp;amp; 4 \\ 5 &amp;amp; ? &amp;amp; ? &amp;amp; ? \end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;我们假设每个用户只用 2 个数字就能概括他的“口味”——即 $k=2$ 个隐因子，可以脑补成“动作片程度”和“喜剧片程度”。假如通过训练（方法见下文）得到了：&lt;/p&gt;
&lt;p&gt;用户矩阵 $U$（3×2，每行是一个用户的口味向量）：&lt;/p&gt;
&lt;p&gt;$$
U = \begin{bmatrix} 1 &amp;amp; 0 \\ 0 &amp;amp; 1 \\ 1 &amp;amp; 1 \end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;电影矩阵 $V$（2×4，每列是一部电影的风格向量）：&lt;/p&gt;
&lt;p&gt;$$
V = \begin{bmatrix} 5 &amp;amp; 4 &amp;amp; 0 &amp;amp; 1 \\ 0 &amp;amp; 1 &amp;amp; 5 &amp;amp; 4 \end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;现在预测“用户 1 会给电影 3 打几分”：取 $U$ 的第 1 行 $[1, 0]$，和 $V$ 的第 3 列 $[0, 5]$，做内积：&lt;/p&gt;
&lt;p&gt;$$
\hat{R}_{13} = [1, 0] \cdot [0, 5] = 1 \times 0 + 0 \times 5 = 0
$$&lt;/p&gt;
&lt;p&gt;预测 0 分——用户 1 是纯动作片爱好者，电影 3 是纯喜剧片，系统不会推荐它。再看用户 3（口味 $[1, 1]$，什么都看一点）对电影 2：&lt;/p&gt;
&lt;p&gt;$$
\hat{R}_{32} = [1, 1] \cdot [4, 1] = 1 \times 4 + 1 \times 1 = 5
$$&lt;/p&gt;
&lt;p&gt;预测满分，大胆推荐。你可以顺手验证：已知的评分（比如 $\hat{R}_{11} = [1, 0] \cdot [5, 0] = 5$）也和原表对得上——这正是训练时调整 $U$、$V$ 的目标。&lt;/p&gt;
&lt;p&gt;这里的 $k$（本例为 2）就是压缩后的“口味维度”：原来要用 4 个数描述一个用户（每部电影一个分），现在只用 2 个数。真实场景里 $k$ 常取几十到几百。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    subgraph 原始评分矩阵R
        direction TB
        R1[&amp;#34;用户 × 电影&amp;lt;br/&amp;gt;大部分为空&amp;#34;]
    end

    subgraph 分解
        direction TB
        U[&amp;#34;用户矩阵 U&amp;lt;br/&amp;gt;用户 × 隐因子&amp;#34;]
        V[&amp;#34;电影矩阵 V&amp;lt;br/&amp;gt;隐因子 × 电影&amp;#34;]
    end

    subgraph 预测
        direction TB
        P[&amp;#34;补全后的评分矩阵&amp;lt;br/&amp;gt;R ≈ U × V&amp;#34;]
    end

    R1 --&amp;gt;|矩阵分解| U
    U --&amp;gt; V
    V --&amp;gt; P&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;数学上，我们希望：&lt;/p&gt;
&lt;p&gt;$$
R_{m \times n} \approx U_{m \times k} \cdot V_{k \times n}
$$&lt;/p&gt;
&lt;p&gt;其中每个符号的含义：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$R$：评分矩阵；$m$ 是用户数，$n$ 是电影数；&lt;/li&gt;
&lt;li&gt;$U$：用户矩阵，它的第 $i$ 行 $u_i$ 是第 $i$ 个用户的口味向量（$k$ 个数）；&lt;/li&gt;
&lt;li&gt;$V$：电影矩阵，它的第 $j$ 列 $v_j$ 是第 $j$ 部电影的风格向量（$k$ 个数）；&lt;/li&gt;
&lt;li&gt;$k$：隐因子维度，比如“动作片程度”“喜剧片程度”；&lt;/li&gt;
&lt;li&gt;$u_i^T v_j$：$u_i$ 转置后乘 $v_j$，就是上面演示的“行 · 列”内积，即预测的评分。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;训练目标是最小化预测评分和真实评分的差距：&lt;/p&gt;
&lt;p&gt;$$
\min_{U,V} \sum_{(i,j) \in \text{已知评分}} (R_{ij} - u_i^T v_j)^2 + \lambda (|U|^2 + |V|^2)
$$&lt;/p&gt;
&lt;p&gt;这行公式的意思是：对所有已知评分 $(i, j)$，让预测值 $u_i^T v_j$ 和真实值 $R_{ij}$ 的差的平方尽量小。最后一项里，$\lambda$（希腊字母 lambda）是一个人为设定的小系数，$|U|^2$ 表示 $U$ 里所有元素的平方和——这一项叫“正则化”，作用是惩罚过大的参数，防止模型死记硬背训练数据（过拟合）。&lt;/p&gt;
&lt;p&gt;这就是推荐系统里最经典的协同过滤思路。&lt;strong&gt;没有线性代数，这个补全问题根本无法优雅表达和求解。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;15-典型场景神经网络里的矩阵乘法&#34;&gt;1.5 典型场景：神经网络里的矩阵乘法&lt;/h3&gt;
&lt;p&gt;一个全连接层可以写成：&lt;/p&gt;
&lt;p&gt;$$
\mathbf{y} = \sigma(W \mathbf{x} + \mathbf{b})
$$&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\mathbf{x}$ 是输入向量&lt;/li&gt;
&lt;li&gt;$W$ 是权重矩阵&lt;/li&gt;
&lt;li&gt;$\mathbf{b}$ 是偏置向量&lt;/li&gt;
&lt;li&gt;$\sigma$ 是激活函数&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    X[&amp;#34;输入向量 x&amp;#34;] --&amp;gt;|&amp;#34;乘以 W&amp;#34;| WX[&amp;#34;Wx&amp;#34;]
    B[&amp;#34;偏置 b&amp;#34;] --&amp;gt;|&amp;#34;加上&amp;#34;| WX
    WX --&amp;gt;|&amp;#34;激活 σ&amp;#34;| Y[&amp;#34;输出向量 y&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;深度学习的训练，本质上就是不断调整 $W$ 和 $\mathbf{b}$，让输出 $y$ 越来越接近期望值。&lt;/p&gt;
&lt;h3 id=&#34;16-线性代数避坑技巧&#34;&gt;1.6 线性代数避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不要死记公式，先画形状&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;矩阵乘法能不能做，先看维度。$(m \times k) \times (k \times n) = (m \times n)$，中间维度必须相同。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;区分“行向量”和“列向量”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多 bug 来自默认了错误的形状。写代码时打印 &lt;code&gt;shape&lt;/code&gt; 是基本功。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注意矩阵乘法和逐元素乘法的区别&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;矩阵乘法：$A \times B$，满足结合律，用于变换。&lt;/li&gt;
&lt;li&gt;逐元素乘法（Hadamard）：$A \odot B$，两个矩阵形状完全一样，对应位置相乘。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不要忽视“稀疏矩阵”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;推荐系统、图数据中，90% 以上都是 0。用普通稠密矩阵会爆内存，要学 &lt;code&gt;CSR&lt;/code&gt;、&lt;code&gt;CSC&lt;/code&gt; 等稀疏存储格式。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;特征值不是玄学&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 PageRank 里，网页重要性就是某个矩阵的&lt;strong&gt;最大特征值对应的特征向量&lt;/strong&gt;。理解这一点，看很多算法会有豁然开朗的感觉。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;2-微积分描述变化与优化&#34;&gt;2. 微积分：描述“变化”与“优化”&lt;/h2&gt;
&lt;h3 id=&#34;21-一句话理解微积分&#34;&gt;2.1 一句话理解微积分&lt;/h3&gt;
&lt;p&gt;微积分研究的是&lt;strong&gt;变化率和累积量&lt;/strong&gt;。对程序员来说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;导数告诉你“往哪走”，积分告诉你“走了多远”。机器学习里最常用的就是导数。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;22-先修复习导数偏导梯度与链式法则&#34;&gt;2.2 先修复习：导数、偏导、梯度与链式法则&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 导数：函数在某点的瞬时变化率&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;函数 $f(x)$ 在某一点的导数，就是曲线在该点的切线斜率——“$x$ 增加一点点，$f(x)$ 会跟着变化多少”。&lt;/p&gt;
&lt;p&gt;以 $f(x) = x^2$ 为例，它的导数是 $f&amp;rsquo;(x) = 2x$（求导规则：$x^n$ 的导数是 $nx^{n-1}$）。在 $x = 3$ 处，$f&amp;rsquo;(3) = 2 \times 3 = 6$，意思是：在 $x = 3$ 附近，$x$ 每增加一小段，$f(x)$ 大约增加这一段的 6 倍。&lt;/p&gt;
&lt;p&gt;验证一下：$x$ 从 3 变成 3.01，$f$ 从 9 变成 $3.01^2 = 9.0601$，增加了 0.0601 ≈ 6 × 0.01。对得上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 偏导数：多变量时，一次只看一个变量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;函数有多个变量时，对其中一个求导、把其他变量当常数，就是偏导数，符号用 $\partial$（读作“偏”）。比如 $f(x, y) = x^2 + 3y$：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对 $x$ 求偏导：$\frac{\partial f}{\partial x} = 2x$（把 $3y$ 当常数，常数的导数为 0）&lt;/li&gt;
&lt;li&gt;对 $y$ 求偏导：$\frac{\partial f}{\partial y} = 3$（把 $x^2$ 当常数）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. 梯度：所有偏导数组成的向量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;把每个变量的偏导数排成一个向量，就是梯度，记作 $\nabla f$（符号 $\nabla$ 读作 nabla）。上面的例子里 $\nabla f = [2x, 3]$。&lt;/p&gt;
&lt;p&gt;梯度有一个关键性质：&lt;strong&gt;它指向函数值上升最快的方向&lt;/strong&gt;。所以要求函数的最小值，就要反着梯度的方向走——这就是 2.4 节梯度下降法的全部原理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 链式法则：复合函数求导，层层相乘&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;函数套函数（复合函数）的导数，等于各层导数相乘。例子：$z = (2x + 1)^2$。&lt;/p&gt;
&lt;p&gt;把它拆成两层：内层 $u = 2x + 1$，外层 $z = u^2$。那么：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内层导数：$\frac{du}{dx} = 2$&lt;/li&gt;
&lt;li&gt;外层导数：$\frac{dz}{du} = 2u$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;链式法则：$\frac{dz}{dx} = \frac{dz}{du} \times \frac{du}{dx} = 2u \times 2 = 2(2x+1) \times 2 = 8x + 4$&lt;/p&gt;
&lt;p&gt;代入 $x = 1$：$\frac{dz}{dx} = 12$。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这和工程应用有什么关系？&lt;/strong&gt; 神经网络就是几十层函数套函数，链式法则让“对每一层参数求导”变成一次从后往前的乘法传递——这就是 2.5 节反向传播在做的事。&lt;/p&gt;
&lt;h3 id=&#34;23-核心概念速查&#34;&gt;2.3 核心概念速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;概念&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;程序员直觉&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;软件行业用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;导数&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;函数在某点的变化率&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;梯度下降、敏感度分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;偏导数&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;多变量函数中一个变量的变化率&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;神经网络反向传播&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;梯度&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;所有偏导数组成的向量&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;指向函数增长最快的方向&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;链式法则&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;复合函数求导规则&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;反向传播算法的核心&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;积分&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;变化率的累积&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;概率密度、面积、物理模拟&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;24-典型场景梯度下降法&#34;&gt;2.4 典型场景：梯度下降法&lt;/h3&gt;
&lt;p&gt;几乎所有机器学习训练，最后都在解一个优化问题：&lt;/p&gt;
&lt;p&gt;$$
\min_\theta L(\theta)
$$&lt;/p&gt;
&lt;p&gt;其中 $L$ 是损失函数，$\theta$ 是模型参数。&lt;/p&gt;
&lt;p&gt;梯度下降的更新规则：&lt;/p&gt;
&lt;p&gt;$$
\theta_{\text{新}} = \theta_{\text{旧}} - \eta \cdot \nabla L(\theta_{\text{旧}})
$$&lt;/p&gt;
&lt;p&gt;其中 $\eta$ 是学习率，$\nabla L$ 是梯度。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[初始化参数 θ] --&amp;gt; B[计算当前损失 L]
    B --&amp;gt; C[求梯度 ∇L]
    C --&amp;gt; D{梯度足够小?}
    D --&amp;gt;|否| E[沿负梯度方向更新 θ]
    E --&amp;gt; B
    D --&amp;gt;|是| F[得到近似最优解]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;用下山来比喻：你蒙着眼睛站在山坡上，每一步都朝&lt;strong&gt;最陡的下降方向&lt;/strong&gt;走一小步，重复多次就能到达山谷。&lt;/p&gt;
&lt;h3 id=&#34;25-典型场景反向传播&#34;&gt;2.5 典型场景：反向传播&lt;/h3&gt;
&lt;p&gt;神经网络的层数很多，直接对每个参数求导非常麻烦。反向传播用&lt;strong&gt;链式法则&lt;/strong&gt;，从输出层往输入层一层一层传误差。&lt;/p&gt;
&lt;p&gt;比如一个简单网络：&lt;/p&gt;
&lt;p&gt;$$
z = f(y), \quad y = g(x), \quad x = h(w)
$$&lt;/p&gt;
&lt;p&gt;求 $z$ 对 $w$ 的导数：&lt;/p&gt;
&lt;p&gt;$$
\frac{\partial z}{\partial w} = \frac{\partial z}{\partial y} \cdot \frac{\partial y}{\partial x} \cdot \frac{\partial x}{\partial w}
$$&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    w[&amp;#34;参数 w&amp;#34;] --&amp;gt; x[&amp;#34;x = h(w)&amp;#34;]
    x --&amp;gt; y[&amp;#34;y = g(x)&amp;#34;]
    y --&amp;gt; z[&amp;#34;z = f(y)&amp;#34;]
    z --&amp;gt;|&amp;#34;∂z/∂y&amp;#34;| y
    y --&amp;gt;|&amp;#34;∂y/∂x&amp;#34;| x
    x --&amp;gt;|&amp;#34;∂x/∂w&amp;#34;| w&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;这就是深度学习的训练能高效进行的原因。&lt;strong&gt;链式法则让“百亿（billion）级别参数的求导”变得可行。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id=&#34;26-微积分避坑技巧&#34;&gt;2.6 微积分避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;梯度方向是“上升最快”，要加负号&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;求最小值时，更新公式里是 $-\eta \nabla L$，不是 $+\eta \nabla L$。符号搞反，损失会越来越大。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;学习率太大或太小都是灾难&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;太大：在最低点附近震荡，甚至发散。&lt;/li&gt;
&lt;li&gt;太小：收敛极慢，浪费算力。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[学习率 η 太大] --&amp;gt; B[震荡/不收敛]
    C[学习率 η 太小] --&amp;gt; D[收敛极慢]
    E[学习率 η 合适] --&amp;gt; F[稳定收敛]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不是所有函数都能简单求导&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;离散函数、不可导函数（如 ReLU 在 0 点）需要特殊处理。ReLU 的导数在 0 点通常直接定义为 0 或 1。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不要手动推导每一层梯度&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;现代框架（PyTorch、TensorFlow）都有自动微分。先理解原理，再交给框架。但&lt;strong&gt;原理不懂，调参就是瞎调&lt;/strong&gt;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;区分“局部最小”和“全局最小”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;梯度下降只能保证找到局部最小。深度学习中，很多局部最小其实差距不大，不必过度纠结。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;3-概率论处理不确定性&#34;&gt;3. 概率论：处理“不确定性”&lt;/h2&gt;
&lt;h3 id=&#34;31-一句话理解概率论&#34;&gt;3.1 一句话理解概率论&lt;/h3&gt;
&lt;p&gt;概率论研究的是&lt;strong&gt;不确定性&lt;/strong&gt;。对程序员来说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;当输入有噪声、数据不完整、结果不唯一时，概率论是最自然的建模语言。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;32-先修复习概率条件概率贝叶斯期望与方差&#34;&gt;3.2 先修复习：概率、条件概率、贝叶斯、期望与方差&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 概率：0 到 1 之间的数&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;$P(A)$ 表示事件 $A$ 发生的可能性：0 是不可能，1 是必然，0.5 是五五开。掷一次骰子，掷出 6 的概率 $P(6) = 1/6$。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 条件概率：B 已经发生时，A 的概率&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;$P(A \mid B)$ 读作“在 $B$ 发生的条件下 $A$ 的概率”，竖线右边是已知条件。用一张小表格算一遍：统计 100 封邮件——&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;含“免费”&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;不含“免费”&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;合计&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;垃圾邮件&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;30&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;10&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;40&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;正常邮件&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;5&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;55&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;60&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;合计&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;35&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;65&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;100&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;问：一封邮件含“免费”这个词，它是垃圾邮件的概率是多少？&lt;/p&gt;
&lt;p&gt;条件概率的算法是：&lt;strong&gt;只在符合条件的样本里算比例&lt;/strong&gt;。含“免费”的共 35 封，其中垃圾邮件 30 封：&lt;/p&gt;
&lt;p&gt;$$
P(\text{垃圾} \mid \text{含“免费”}) = \frac{30}{35} \approx 85.7%
$$&lt;/p&gt;
&lt;p&gt;对比一下：不看任何条件时，$P(\text{垃圾}) = 40/100 = 40%$。“含免费”这个条件把概率从 40% 拉到了 85.7%——这就是 3.4 节垃圾邮件过滤器在做的事。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 贝叶斯定理：由结果反推原因&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;贝叶斯定理：&lt;/p&gt;
&lt;p&gt;$$
P(A \mid B) = \frac{P(B \mid A) \cdot P(A)}{P(B)}
$$&lt;/p&gt;
&lt;p&gt;用经典疾病检测例子算一遍。假设：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某病患病率 $P(\text{患病}) = 1%$&lt;/li&gt;
&lt;li&gt;检测准确率 99%：患病者 99% 检出阳性，健康者 99% 检出阴性（即 1% 被误报为阳性）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;问：一个人检测为阳性，他真的患病的概率是多少？&lt;/p&gt;
&lt;p&gt;直觉会说 99%，但实际算一下。想象 10000 个人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;真患病：$10000 \times 1% = 100$ 人，其中检出阳性 $100 \times 99% = 99$ 人；&lt;/li&gt;
&lt;li&gt;健康：9900 人，其中误报阳性 $9900 \times 1% = 99$ 人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;阳性一共 $99 + 99 = 198$ 人，真患病的只有 99 人：&lt;/p&gt;
&lt;p&gt;$$
P(\text{患病} \mid \text{阳性}) = \frac{99}{198} = 50%
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;远低于直觉的 99%。&lt;/strong&gt; 原因是病人基数太小（1%），健康人群的误报凑出了一半的阳性。这就是为什么医学筛查阳性后还要复查，也是贝叶斯定理最反直觉、最实用的一课。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 期望：长期平均值&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;期望 $E(X)$ 是“重复无数次后的平均结果”。掷骰子：&lt;/p&gt;
&lt;p&gt;$$
E(X) = 1\times\frac{1}{6} + 2\times\frac{1}{6} + 3\times\frac{1}{6} + 4\times\frac{1}{6} + 5\times\frac{1}{6} + 6\times\frac{1}{6} = \frac{21}{6} = 3.5
$$&lt;/p&gt;
&lt;p&gt;骰子永远掷不出 3.5，但掷一万次的平均值会非常接近 3.5。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 方差：波动程度&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;期望相同的两个随机变量，稳定性可能天差地别。方差衡量“结果偏离期望有多远”：每个值减去期望、平方、再平均。比如三个数 1、2、3，期望是 2，方差 $= \frac{(1-2)^2 + (2-2)^2 + (3-2)^2}{3} = \frac{2}{3} \approx 0.67$。方差越大，波动越剧烈。风险评估里“期望收益相同、方差更小”的方案就是更稳的方案。&lt;/p&gt;
&lt;h3 id=&#34;33-核心概念速查&#34;&gt;3.3 核心概念速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;概念&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;程序员直觉&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;软件行业用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;概率&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;某件事发生的可能性&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;垃圾邮件识别、点击率预测&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;条件概率&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;已知某事发生，另一事发生的概率&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;贝叶斯分类、推荐系统&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;贝叶斯定理&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;由结果反推原因&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;垃圾邮件过滤、医疗诊断&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期望&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;长期平均结果&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;A/B 测试、收益评估&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;方差/标准差&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;结果的波动程度&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;风险评估、模型稳定性&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;大数定律&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;样本越多，估计越准&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;实验设计、蒙特卡洛模拟&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;正态分布&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;最常见的“钟形”分布&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;误差建模、异常检测&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;34-典型场景朴素贝叶斯垃圾邮件过滤&#34;&gt;3.4 典型场景：朴素贝叶斯垃圾邮件过滤&lt;/h3&gt;
&lt;p&gt;假设收到一封邮件，里面出现了“免费”“中奖”“点击”等词。我们想判断它是垃圾邮件的概率：&lt;/p&gt;
&lt;p&gt;$$
P(\text{垃圾} \mid \text{词}) = \frac{P(\text{词} \mid \text{垃圾}) \cdot P(\text{垃圾})}{P(\text{词})}
$$&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$P(\text{垃圾})$ 是训练集中垃圾邮件的比例&lt;/li&gt;
&lt;li&gt;$P(\text{词} \mid \text{垃圾})$ 是垃圾邮件里出现这些词的概率&lt;/li&gt;
&lt;li&gt;$P(\text{垃圾} \mid \text{词})$ 是看到这封邮件后它是垃圾邮件的概率&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[收集大量邮件] --&amp;gt; B[统计每个词在垃圾/正常邮件中出现的频率]
    B --&amp;gt; C[新邮件到达]
    C --&amp;gt; D[提取关键词]
    D --&amp;gt; E[用贝叶斯公式计算概率]
    E --&amp;gt; F{P &amp;gt; 阈值?}
    F --&amp;gt;|是| G[判定为垃圾邮件]
    F --&amp;gt;|否| H[判定为正常邮件]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;这是《数学之美》里非常经典的例子。&lt;strong&gt;它把“理解邮件含义”转化成了“统计词频”&lt;/strong&gt;，这正是概率论的魅力。&lt;/p&gt;
&lt;h3 id=&#34;35-典型场景语言模型与-n-gram&#34;&gt;3.5 典型场景：语言模型与 N-gram&lt;/h3&gt;
&lt;p&gt;搜索引擎、输入法、语音识别都要预测“下一个词最可能是什么”。&lt;/p&gt;
&lt;p&gt;N-gram 模型假设：下一个词只和前 N-1 个词有关。比如二元模型（bigram）：&lt;/p&gt;
&lt;p&gt;$$
P(w_n \mid w_1, w_2, \dots, w_{n-1}) \approx P(w_n \mid w_{n-1})
$$&lt;/p&gt;
&lt;p&gt;通过统计语料中词对出现的频率来估计概率：&lt;/p&gt;
&lt;p&gt;$$
P(w_n \mid w_{n-1}) = \frac{\text{count}(w_{n-1}, w_n)}{\text{count}(w_{n-1})}
$$&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[&amp;#34;历史词 w_{n-1}&amp;#34;] --&amp;gt; B[统计所有接在后面的词]
    B --&amp;gt; C[计算条件概率]
    C --&amp;gt; D[选择概率最大的词作为预测]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;现代大语言模型虽然用神经网络替代了 N-gram，但核心目标没变：&lt;strong&gt;最大化下一个词的预测概率&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;36-概率论避坑技巧&#34;&gt;3.6 概率论避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不要把“概率高”等同于“一定发生”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;模型说某件事概率 99%，也不代表绝对。工程上永远要留兜底逻辑。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注意“条件概率”的方向&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;$P(A \mid B)$ 和 $P(B \mid A)$ 完全不一样。看到症状推疾病，和知道疾病推症状，是两回事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数据稀疏是大问题&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;没见过的词不能直接算概率为 0，要用&lt;strong&gt;平滑技术&lt;/strong&gt;（如拉普拉斯平滑）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;小心“独立同分布”假设&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;很多模型假设数据独立同分布（i.i.d.），但真实世界往往不是。时间序列、推荐系统中的用户行为都有相关性。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;概率模型需要大量数据&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;数据量不够时，统计模型效果往往不如规则系统。先用规则跑起来，再逐步引入概率模型。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;4-信息论量化信息量&#34;&gt;4. 信息论：量化“信息量”&lt;/h2&gt;
&lt;h3 id=&#34;41-一句话理解信息论&#34;&gt;4.1 一句话理解信息论&lt;/h3&gt;
&lt;p&gt;信息论研究的是&lt;strong&gt;如何度量、传输和压缩信息&lt;/strong&gt;。对程序员来说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;信息论告诉我们：一个消息有多“意外”，就有多少信息量。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;42-先修复习log信息量与熵&#34;&gt;4.2 先修复习：log₂、信息量与熵&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. log₂ 的直觉：猜几次能猜中？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;$\log_2 n$ 回答的问题是：“$n$ 个可能性，用二分法猜几次能锁定答案？” 玩猜数字游戏：我心里想一个 1-8 的数，你每次问“比 $x$ 大吗”，3 次一定能猜中（8 → 4 → 2 → 1）。所以 $\log_2 8 = 3$。这和程序员的二分查找是同一回事：在 8 个元素的有序数组里查找，最多比较 3 次。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 信息量：越意外，信息量越大&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个事件的信息量定义为 $-\log_2 P$，单位是 bit（比特），$P$ 是这个事件发生的概率。$P$ 越小（越意外），信息量越大：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;公平硬币掷出正面：$P = 1/2$，信息量 $= -\log_2 \frac{1}{2} = 1$ bit；&lt;/li&gt;
&lt;li&gt;一个概率 $P = 1/8$ 的事件发生：信息量 $= -\log_2 \frac{1}{8} = 3$ bit。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;直觉：掷出正面没什么可惊讶的（1 bit 就够记录），8 选 1 猜中则值得多记几笔（3 bit）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 熵：平均信息量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;熵 $H(X)$ 是“平均每次能获得多少信息量”：把每种结果的“概率 × 信息量”加起来：&lt;/p&gt;
&lt;p&gt;$$
H(X) = -\sum_i P(x_i) \log_2 P(x_i)
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;完整算一遍公平硬币的熵。&lt;/strong&gt; 两种结果，概率各 1/2：&lt;/p&gt;
&lt;p&gt;$$
H = -\left( \tfrac{1}{2} \log_2 \tfrac{1}{2} + \tfrac{1}{2} \log_2 \tfrac{1}{2} \right) = -\left( \tfrac{1}{2} \times (-1) + \tfrac{1}{2} \times (-1) \right) = 1 \text{ bit}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;再算一枚偏倚硬币&lt;/strong&gt;（正面 90%、反面 10%，查表或按计算器可得 $\log_2 0.9 \approx -0.152$，$\log_2 0.1 \approx -3.322$）：&lt;/p&gt;
&lt;p&gt;$$
H = -\left( 0.9 \times (-0.152) + 0.1 \times (-3.322) \right) = 0.137 + 0.332 \approx 0.47 \text{ bit}
$$&lt;/p&gt;
&lt;p&gt;偏倚硬币的结果更好猜（大概率是正面），不确定性低，所以熵只有约 0.47 bit，不到公平硬币的一半。&lt;strong&gt;熵最大的时候，就是所有结果等可能的时候。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这和工程应用有什么关系？&lt;/strong&gt; 熵给出了无损压缩的理论下限（4.4 节），交叉熵则是拿这个“平均信息量”的框架去衡量模型预测和真实标签的差距（4.5 节）。&lt;/p&gt;
&lt;h3 id=&#34;43-核心概念速查&#34;&gt;4.3 核心概念速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;概念&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;程序员直觉&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;软件行业用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;信息量&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;一个事件带来的“惊讶程度”&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;异常检测、日志告警&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;熵（Entropy）&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;不确定性的平均值&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;决策树、特征选择、压缩&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;交叉熵&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;模型分布与真实分布的差距&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;分类损失函数&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;KL 散度&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;两个分布有多“不像”&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;生成模型、变分推断&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;互信息&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;两个变量共享多少信息&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;特征选择、关联分析&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;44-典型场景熵与数据压缩&#34;&gt;4.4 典型场景：熵与数据压缩&lt;/h3&gt;
&lt;p&gt;熵描述的是一个随机变量的平均信息量。对于离散随机变量 $X$：&lt;/p&gt;
&lt;p&gt;$$
H(X) = -\sum_{i} P(x_i) \log P(x_i)
$$&lt;/p&gt;
&lt;p&gt;举个例子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果某事件必然发生（$P=1$），熵为 0，因为毫无信息量。&lt;/li&gt;
&lt;li&gt;如果硬币正反概率各 0.5，熵最大，因为最不确定。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[原始数据] --&amp;gt; B[计算符号频率]
    B --&amp;gt; C[估算熵 H]
    C --&amp;gt; D[设计编码&amp;lt;br/&amp;gt;高频短码、低频长码]
    D --&amp;gt; E[压缩后的数据]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;哈夫曼编码就是根据频率构造最优前缀码，让平均编码长度接近熵。ZIP、MP3、JPEG 背后都有信息论的影子。&lt;/p&gt;
&lt;h3 id=&#34;45-典型场景交叉熵损失函数&#34;&gt;4.5 典型场景：交叉熵损失函数&lt;/h3&gt;
&lt;p&gt;分类任务中，模型输出一个概率分布 $\hat{y}$，真实标签是 $y$。交叉熵衡量两者差异：&lt;/p&gt;
&lt;p&gt;$$
H(y, \hat{y}) = -\sum_{i} y_i \log \hat{y}_i
$$&lt;/p&gt;
&lt;p&gt;在二分类中简化为：&lt;/p&gt;
&lt;p&gt;$$
L = -\left[ y \log \hat{y} + (1-y) \log(1-\hat{y}) \right]
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么用交叉熵而不是均方误差？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;因为交叉熵对“模型很有信心但错了”的情况惩罚更大，能让分类器学得更果断。&lt;/p&gt;
&lt;h3 id=&#34;46-信息论避坑技巧&#34;&gt;4.6 信息论避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;熵大不一定“信息多”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;熵大只代表不确定性高。如果全是噪声，熵也很大，但没有价值。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;log 的底数要看场景&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;信息论里常用以 2 为底（单位 bit），机器学习里常用自然对数（单位 nat）。比较时要注意统一。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;交叉熵损失要配合 softmax&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;多分类时，模型最后一层通常是 softmax + 交叉熵。不要漏了 softmax。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;KL 散度不对称&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;$D_{KL}(P | Q) \neq D_{KL}(Q | P)$。写代码和解释结果时要注意方向。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;信息论是“上限”不是“下限”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;熵给出的是无损压缩的理论下限。实际压缩算法由于实现复杂度，往往达不到这个下限。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;5-统计学与数据思维从数据中提炼规律&#34;&gt;5. 统计学与数据思维：从数据中提炼规律&lt;/h2&gt;
&lt;h3 id=&#34;51-一句话理解统计学&#34;&gt;5.1 一句话理解统计学&lt;/h3&gt;
&lt;p&gt;概率论是“从模型推数据”，统计学是“从数据推模型”。对程序员来说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;统计学让你知道：手里的数据能告诉我们什么、不能告诉我们什么。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;52-先修复习总体与样本均值中位数方差置信区间&#34;&gt;5.2 先修复习：总体与样本、均值、中位数、方差、置信区间&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 总体 vs 样本&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;总体是你想研究的全部对象（比如“所有用户”），样本是你实际拿到的一小部分（比如“昨天活跃的一万名用户”）。统计学的全部工作，就是用样本去估计总体，并说清楚这个估计有多靠谱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 均值与中位数：谁更抗揍？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;5 个数的小例子：某功能 5 个用户的日使用时长（分钟）——&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;3, 5, 4, 6, 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;ul&gt;
&lt;li&gt;均值：$(3 + 5 + 4 + 6 + 100) \div 5 = 118 \div 5 = 23.6$&lt;/li&gt;
&lt;li&gt;中位数：排序后取中间那个。排序为 &lt;code&gt;3, 4, 5, 6, 100&lt;/code&gt;，中位数是 5&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;均值 23.6 被 100 这个极端值（可能是挂机用户）严重拉偏，中位数 5 稳如泰山。&lt;strong&gt;看收入、时长这类分布时，中位数往往比均值更诚实。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 方差与标准差：波动有多大？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;还是用上面 5 个数（均值 23.6）。方差 = 每个数减均值、平方、再平均：&lt;/p&gt;
&lt;p&gt;$$
\frac{(3-23.6)^2 + (5-23.6)^2 + (4-23.6)^2 + (6-23.6)^2 + (100-23.6)^2}{5} = \frac{424.36 + 345.96 + 384.16 + 309.76 + 5836.96}{5} = \frac{7301.2}{5} = 1460.24
$$&lt;/p&gt;
&lt;p&gt;标准差 = 方差开平方：$\sqrt{1460.24} \approx 38.2$。标准差的好处是单位和原数据一致（分钟），可以直接说“波动大约 ±38 分钟”。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 置信区间：估计值 ± 误差范围&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;单给一个估计值是不负责任的，要带上误差范围。比如“新方案转化率为 5% ± 1%（95% 置信区间）”，意思是真实转化率大概率落在 4% - 6% 之间。区间越窄，估计越可靠；想让区间变窄，就得加大样本量——这就是 5.4 节 A/B 测试背后在算的事。&lt;/p&gt;
&lt;h3 id=&#34;53-核心概念速查&#34;&gt;5.3 核心概念速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;概念&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;程序员直觉&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;软件行业用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;采样&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;从整体中抽一部分观察&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;A/B 测试、日志抽样&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;大数定律&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;样本越多，估计越稳定&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;实验样本量设计&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中心极限定理&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;样本均值趋向正态分布&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;置信区间、假设检验&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;置信区间&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;估计的不确定性范围&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;转化率评估&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;假设检验&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;判断差异是否显著&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;实验效果验证&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;过拟合/欠拟合&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;模型太复杂或太简单&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;调参、正则化&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;54-典型场景ab-测试&#34;&gt;5.4 典型场景：A/B 测试&lt;/h3&gt;
&lt;p&gt;产品改了一个按钮颜色，想知道转化率有没有提升。直接看“实验组转化率 5%，对照组 4%”不够，因为可能是随机波动。&lt;/p&gt;
&lt;p&gt;统计学要做的是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;计算两组差异的标准误。&lt;/li&gt;
&lt;li&gt;做假设检验，看差异是否显著。&lt;/li&gt;
&lt;li&gt;给出置信区间，比如“提升 0.8% - 1.2%”。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[提出假设] --&amp;gt; B[随机分流用户]
    B --&amp;gt; C[收集实验数据]
    C --&amp;gt; D[计算指标与置信区间]
    D --&amp;gt; E{差异是否显著?}
    E --&amp;gt;|是| F[上线新方案]
    E --&amp;gt;|否| G[保持原方案/重新设计]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;没有统计学，A/B 测试的结论很容易变成“拍脑袋”。&lt;/p&gt;
&lt;h3 id=&#34;55-典型场景平滑技术&#34;&gt;5.5 典型场景：平滑技术&lt;/h3&gt;
&lt;p&gt;N-gram 或朴素贝叶斯中，总会遇到训练集中没出现过的词或组合。如果直接算概率为 0，模型就会失效。&lt;/p&gt;
&lt;p&gt;拉普拉斯平滑（加一平滑）是最简单的方法：&lt;/p&gt;
&lt;p&gt;$$
P(w_n \mid w_{n-1}) = \frac{\text{count}(w_{n-1}, w_n) + 1}{\text{count}(w_{n-1}) + V}
$$&lt;/p&gt;
&lt;p&gt;其中 $V$ 是词表大小。它给每个未出现事件分配了一个很小的概率。&lt;/p&gt;
&lt;p&gt;更高级的平滑方法还有 Good-Turing、Kneser-Ney 等。《数学之美》里强调：&lt;strong&gt;数据稀疏是统计自然语言处理的核心难题之一&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id=&#34;56-统计学避坑技巧&#34;&gt;5.6 统计学避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;相关性不等于因果性&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;两个指标同时上涨，不一定是一个导致另一个。要用实验设计或因果推断方法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;样本量不足时结论不可信&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;看 100 个用户的实验结果，和看 10 万个用户的实验结果，说服力完全不同。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注意幸存者偏差&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;只看到“活下来”的数据，会高估成功率。比如只分析活跃用户，会忽略流失用户。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;异常值可能毁掉统计结果&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;平均值对极端值很敏感。分析数据时要看中位数、分位数，不要只看平均。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;训练集和测试集要分开&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在训练数据上表现好，不代表在真实数据上也好。交叉验证是基本操作。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;6-图论与离散数学描述状态与连接&#34;&gt;6. 图论与离散数学：描述“状态”与“连接”&lt;/h2&gt;
&lt;h3 id=&#34;61-一句话理解图论&#34;&gt;6.1 一句话理解图论&lt;/h3&gt;
&lt;p&gt;图论研究的是&lt;strong&gt;节点和节点之间的连接&lt;/strong&gt;。对程序员来说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;只要问题能画成“点”和“线”，就可以用图论来解决。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;62-先修复习节点边度与图的两种存法&#34;&gt;6.2 先修复习：节点、边、度与图的两种存法&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 基本概念&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节点（顶点）：图里的“点”，可以代表人、网页、城市；&lt;/li&gt;
&lt;li&gt;边：节点之间的“连线”，代表关系；&lt;/li&gt;
&lt;li&gt;有向 vs 无向：微博“关注”是有向的（你关注他，他不一定关注你），微信好友是无向的；&lt;/li&gt;
&lt;li&gt;权重：边上挂的数字，比如两个城市之间的距离。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. 一个 3 节点小图的两种表示&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;假设一个无向图：A 和 B 之间有一条权重 2 的边，A 和 C 之间有一条权重 5 的边，B 和 C 之间没有边。&lt;/p&gt;
&lt;p&gt;邻接矩阵：用一张 $3 \times 3$ 的表，第 $i$ 行第 $j$ 列存节点 $i$ 到节点 $j$ 的边权，0 表示没边：&lt;/p&gt;
&lt;p&gt;$$
\begin{bmatrix} 0 &amp;amp; 2 &amp;amp; 5 \\ 2 &amp;amp; 0 &amp;amp; 0 \\ 5 &amp;amp; 0 &amp;amp; 0 \end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;（无向图的邻接矩阵一定是对称的。）&lt;/p&gt;
&lt;p&gt;邻接表：每个节点挂一个列表，只记录真实存在的边：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;A → [(B, 2), (C, 5)]
B → [(A, 2)]
C → [(A, 5)]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;&lt;strong&gt;该用哪种？&lt;/strong&gt; 邻接矩阵查询快但占 $n^2$ 空间（$n$ 是节点数），适合边很多的稠密图；邻接表只占和“节点数 + 边数”成正比的空间，适合边很少的稀疏图。社交网络这种“人均几百好友”的图就是稀疏图，工程上基本都用邻接表。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 度：一个节点有几条边&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;度 = 连在一个节点上的边的数量。上面的图里：A 的度是 2，B 和 C 的度都是 1。有向图还要分入度（多少条边指向我）和出度（我指向多少条边）——6.4 节 PageRank 里“被多少重要网页链接”，数的就是入度。&lt;/p&gt;
&lt;h3 id=&#34;63-核心概念速查&#34;&gt;6.3 核心概念速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;概念&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;程序员直觉&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;软件行业用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;图&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;节点 + 边&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;社交网络、网页链接、知识图谱&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;最短路径&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;两点之间代价最小的路径&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;地图导航、网络路由&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;拓扑排序&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;有依赖关系的任务排序&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;编译依赖、工作流调度&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;有限状态机&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;系统在有限状态间转移&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;正则表达式、协议设计&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Trie 树&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;前缀树&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;搜索引擎提示、自动补全&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;64-典型场景网页排名与-pagerank&#34;&gt;6.4 典型场景：网页排名与 PageRank&lt;/h3&gt;
&lt;p&gt;互联网可以看作一张有向图：网页是节点，超链接是边。&lt;/p&gt;
&lt;p&gt;PageRank 的核心思想：&lt;strong&gt;一个网页的重要性，取决于链接到它的网页有多重要&lt;/strong&gt;。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[网页 A] --&amp;gt; B[网页 B]
    C[网页 C] --&amp;gt; B
    B --&amp;gt; D[网页 D]
    D --&amp;gt; A&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;数学上，PageRank 向量 $\mathbf{r}$ 满足：&lt;/p&gt;
&lt;p&gt;$$
\mathbf{r} = d M \mathbf{r} + \frac{1-d}{N} \mathbf{1}
$$&lt;/p&gt;
&lt;p&gt;其中 $M$ 是转移矩阵，$d$ 是阻尼系数（通常取 0.85），$N$ 是网页总数。&lt;/p&gt;
&lt;p&gt;这个公式同时用到了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;图论&lt;/strong&gt;：网页链接关系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;线性代数&lt;/strong&gt;：转移矩阵和特征向量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;概率论&lt;/strong&gt;：随机冲浪模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;65-典型场景有限状态机在词法分析中的应用&#34;&gt;6.5 典型场景：有限状态机在词法分析中的应用&lt;/h3&gt;
&lt;p&gt;编译器识别一个标识符、数字或关键字时，用的就是有限状态机（FSM）。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    S0[开始] --&amp;gt;|字母| S1[标识符]
    S1 --&amp;gt;|字母/数字| S1
    S0 --&amp;gt;|数字| S2[数字]
    S2 --&amp;gt;|数字| S2&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;正则表达式的底层也可以用有限状态机实现。理解 FSM，对写解析器、协议状态机都非常有帮助。&lt;/p&gt;
&lt;h3 id=&#34;66-图论避坑技巧&#34;&gt;6.6 图论避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;图不一定是对称的&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;网页链接、关注关系都是有向图。不要用无向图的算法硬套。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注意自环和重边&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;实现图算法时，自环节点和多条边会影响结果，要提前处理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;大图要考虑存储方式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;邻接矩阵适合稠密图，邻接表适合稀疏图。百亿级别边必须用分布式图计算框架。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;状态机要覆盖所有输入&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;设计 FSM 时，每个状态对每个可能输入都要有定义，否则会出现未定义行为。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;最短路径算法要选对&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dijkstra：无负权边，单源最短路。&lt;/li&gt;
&lt;li&gt;Bellman-Ford：有负权边。&lt;/li&gt;
&lt;li&gt;Floyd：多源最短路。&lt;/li&gt;
&lt;li&gt;BFS：无权图最短路。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;7-优化算法在复杂空间中找到好答案&#34;&gt;7. 优化算法：在复杂空间中找到“好答案”&lt;/h2&gt;
&lt;h3 id=&#34;71-一句话理解优化算法&#34;&gt;7.1 一句话理解优化算法&lt;/h3&gt;
&lt;p&gt;优化算法研究的是&lt;strong&gt;如何高效地找到最优或近似最优解&lt;/strong&gt;。对程序员来说：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;很多问题没有闭式解，必须用迭代方法一步步逼近答案。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;72-先修复习优化三要素为什么迭代记忆化与贪心&#34;&gt;7.2 先修复习：优化三要素、为什么迭代、记忆化与贪心&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1. 优化问题的三要素&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;任何优化问题都可以拆成三件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;变量：你能调的东西（比如模型的参数）；&lt;/li&gt;
&lt;li&gt;目标函数：你想最大化或最小化的东西（比如“预测误差最小”）；&lt;/li&gt;
&lt;li&gt;约束：不能违反的条件（比如“预算不超过 100 万”）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. 为什么没有一步到位的公式？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;中学解方程 $x^2 - 2x = 0$ 有求根公式，一步到位。但真实问题的目标函数往往太复杂（几亿个变量、函数嵌套几十层），不存在能直接写出答案的公式（闭式解），只能“迭代逼近”：先随便猜一个答案，算一算离最优还差多远、该往哪个方向调，调完再算，循环成千上万次。梯度下降、EM 算法都是这种思路。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 动态规划：记住算过的，别重复算&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用斐波那契数列（$f(n) = f(n-1) + f(n-2)$，$f(1) = f(2) = 1$）对比两种算法。朴素递归算 $f(5)$：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;f(5) = f(4) + f(3)
f(4) = f(3) + f(2)   ← f(3) 第二次出现
f(3) = f(2) + f(1)   ← f(2) 也被反复重算&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;$f(3)$ 被完整重算了 2 次，$f(2)$ 被重算 3 次；$n$ 稍大一点，重复计算就爆炸式增长。动态规划（记忆化）的做法：算过的结果存进数组，下次直接查表，每个 $f(i)$ 只算一次，$n$ 步搞定。&lt;strong&gt;“存在重复子问题”是判断能不能用 DP 的标志。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 贪心：每步拿当前最好&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;贪心算法的直觉：每走一步都选眼前最好的选择，不回看、不后悔。比如用 1 元、5 角、1 角的硬币凑 1.8 元：先拿 1 元（能拿的最大面额），再拿 5 角，再拿 3 个 1 角。很多场景贪心足够好（7.4 节分词里的局部最优选择就有它的影子），但要注意它不一定能得到全局最优。&lt;/p&gt;
&lt;h3 id=&#34;73-核心概念速查&#34;&gt;7.3 核心概念速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;算法&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;核心思想&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;软件行业用途&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;梯度下降&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;沿负梯度方向更新&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;深度学习训练&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;动态规划&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;把大问题拆成重叠子问题&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;最短路径、编辑距离、分词&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;贪心算法&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;每步选局部最优&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;哈夫曼编码、活动安排&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;EM 算法&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;期望-最大化迭代&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;隐变量模型、聚类&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;维特比算法&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;动态规划找最优路径&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;语音识别、HMM 解码&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;74-典型场景动态规划做中文分词&#34;&gt;7.4 典型场景：动态规划做中文分词&lt;/h3&gt;
&lt;p&gt;中文分词没有天然空格，需要判断“结合成/分子/情况”还是“结合/成分/子情况”。&lt;/p&gt;
&lt;p&gt;一种简单思路是：把句子切成词序列，让整体概率最大。&lt;/p&gt;
&lt;p&gt;$$
\text{最佳切分} = \arg\max_{\text{切分方式}} P(\text{切分方式} \mid \text{句子})
$$&lt;/p&gt;
&lt;p&gt;用动态规划可以高效求解：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[句子起始] --&amp;gt; B[考虑第一个词]
    B --&amp;gt; C[剩余子问题]
    C --&amp;gt; D[递归求解]
    D --&amp;gt; E[取概率最大的路径]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;例如“研究生命”可以切成“研究/生命”或“研究生/命”。统计语言模型会选概率更高的切分。&lt;/p&gt;
&lt;h3 id=&#34;75-典型场景维特比算法与语音识别&#34;&gt;7.5 典型场景：维特比算法与语音识别&lt;/h3&gt;
&lt;p&gt;语音识别的任务是：给定声学信号，找出最可能的文字序列。&lt;/p&gt;
&lt;p&gt;Hidden Markov Model（HMM）把这个问题建模为：&lt;/p&gt;
&lt;p&gt;$$
\hat{W} = \arg\max_W P(W \mid \text{声学信号}) = \arg\max_W P(\text{声学信号} \mid W) \cdot P(W)
$$&lt;/p&gt;
&lt;p&gt;维特比算法用动态规划，在状态序列中找出概率最大的路径，避免枚举所有可能。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[声学特征序列] --&amp;gt; B[每个时刻计算各状态概率]
    B --&amp;gt; C[只保留到达每个状态的最优路径]
    C --&amp;gt; D[递推到最后一帧]
    D --&amp;gt; E[回溯得到最优词序列]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;h3 id=&#34;76-优化算法避坑技巧&#34;&gt;7.6 优化算法避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;动态规划要能定义“状态”和“转移”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不是所有问题都适合 DP。关键是找到无后效性的子问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;贪心算法不一定最优&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;贪心只在具有“最优子结构”和“贪心选择性质”的问题上才能得到全局最优。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;EM 算法对初始值敏感&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不同的初始化可能收敛到不同的局部最优。通常需要多次随机初始化。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不要迷信“最优”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;工程上很多时候“足够好”比“理论最优”更重要。启发式算法往往更实用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注意时间复杂度&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;动态规划虽然比暴力快，但状态空间太大时也会超时。要会分析复杂度。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;8-nlp-中的数学让机器理解语言&#34;&gt;8. NLP 中的数学：让机器“理解”语言&lt;/h2&gt;
&lt;h3 id=&#34;81-一句话理解-nlp-数学&#34;&gt;8.1 一句话理解 NLP 数学&lt;/h3&gt;
&lt;p&gt;自然语言处理的核心数学问题是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;把离散的、有歧义的语言，转化为可以计算的概率或向量。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;82-先修复习先把文本变成数字&#34;&gt;8.2 先修复习：先把文本变成数字&lt;/h3&gt;
&lt;p&gt;计算机只认数字，不认汉字。NLP 的一切数学操作之前，都有一步“文本 → 数字”的转换。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. one-hot：一个词一个位置&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;假设词表只有 4 个词：&lt;code&gt;[我, 爱, 北京, 上海]&lt;/code&gt;。one-hot 表示就是“词表里有几个词，向量就有几维；是哪个词，对应位置为 1，其余为 0”：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;我   → [1, 0, 0, 0]
爱   → [0, 1, 0, 0]
北京 → [0, 0, 1, 0]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;&lt;strong&gt;2. 词袋：一句话一个计数向量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;词袋（Bag of Words）表示一整句话：向量的每个位置记录该词在句中出现了几次。两个短句：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;句1：我 爱 北京  → [1, 1, 1, 0]
句2：我 爱 上海  → [1, 1, 0, 1]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;注意它丢掉了语序——“我爱北京”和“北京爱我”的词袋向量一模一样。这是词袋模型的硬伤，但作为第一步表示已经够用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这和后面的工程应用有什么关系？&lt;/strong&gt; 8.4 节的 TF-IDF，就是给词袋向量的每一维乘上一个“区分度权重”；8.5 节的语言模型和机器翻译，则是在“文本已经变成数字序列”的前提下算概率。现代词向量（word2vec）本质上也是 one-hot 经过一层矩阵乘法压缩出来的稠密向量——看到“矩阵乘法”，可以翻回 1.2 节复习。&lt;/p&gt;
&lt;h3 id=&#34;83-核心任务速查&#34;&gt;8.3 核心任务速查&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;任务&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;数学工具&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;工程价值&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中文分词&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;统计语言模型 + 动态规划&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;搜索、输入法、文本分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;词性标注&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;HMM / CRF&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;句法分析、信息抽取&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;语音识别&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;HMM + 高斯混合模型&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;语音助手、输入法&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;机器翻译&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;统计翻译模型 / 神经网络&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;跨语言交流&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;信息检索&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TF-IDF + 向量空间模型&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;搜索引擎、推荐&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;84-典型场景tf-idf-与搜索排序&#34;&gt;8.4 典型场景：TF-IDF 与搜索排序&lt;/h3&gt;
&lt;p&gt;搜索引擎怎么判断一个网页和查询词有多相关？TF-IDF 是最经典的方案：&lt;/p&gt;
&lt;p&gt;$$
\text{TF-IDF}(t, d) = \text{TF}(t, d) \times \text{IDF}(t)
$$&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TF（词频）：词 $t$ 在文档 $d$ 中出现多少次。&lt;/li&gt;
&lt;li&gt;IDF（逆文档频率）：$\log \frac{N}{|{d: t \in d}|}$，衡量词的区分能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;“的”“是”这种词出现很多但 IDF 很低，不会拉高排序；“量子计算”出现少但 IDF 高，更有区分度。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    Q[用户查询] --&amp;gt;|分词| T[关键词]
    T --&amp;gt;|计算 TF-IDF| S[候选文档得分]
    S --&amp;gt;|排序| R[返回结果]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;h3 id=&#34;85-典型场景统计机器翻译&#34;&gt;8.5 典型场景：统计机器翻译&lt;/h3&gt;
&lt;p&gt;早期机器翻译用统计模型，把翻译问题建模为：&lt;/p&gt;
&lt;p&gt;$$
\hat{e} = \arg\max_e P(e \mid f) = \arg\max_e P(f \mid e) \cdot P(e)
$$&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$P(e)$ 是目标语言模型，判断翻译结果是否通顺。&lt;/li&gt;
&lt;li&gt;$P(f \mid e)$ 是翻译模型，判断源语言到目标语言的对应关系。&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    F[外语句子 f] --&amp;gt;|翻译模型| C[候选译文集合]
    C --&amp;gt;|语言模型打分| S[选择最通顺的译文]
    S --&amp;gt; E[目标语言句子 e]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;现代神经机器翻译用 Transformer 替代了这些统计模型，但“源语言 → 候选 → 语言模型打分”的直觉仍然成立。&lt;/p&gt;
&lt;h3 id=&#34;86-nlp-数学避坑技巧&#34;&gt;8.6 NLP 数学避坑技巧&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;语言模型不是真的“理解”语言&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它只是统计规律。不要对输出结果赋予过多“智能”含义。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分词结果影响后续所有任务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;中文分词错误会级联传播。搜索里“南京市/长江大桥”和“南京/市长/江大桥”完全不是一回事。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;TF-IDF 忽略语义&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;它只看词频，不处理同义词。现代搜索会用向量语义模型做补充。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数据预处理占 80% 工作量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;去噪、归一化、编码处理往往比模型本身更费时间。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不要忽视评估指标&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;BLEU、ROUGE、准确率、召回率、F1 各有适用场景。单一看指标容易误判。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;9-多门数学如何协同工作&#34;&gt;9. 多门数学如何协同工作？&lt;/h2&gt;
&lt;p&gt;真实工程中，这些数学工具很少单独出现，它们通常协同作战。&lt;/p&gt;
&lt;h3 id=&#34;91-一个典型-ai-项目的数学全景&#34;&gt;9.1 一个典型 AI 项目的数学全景&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    subgraph 数据层
        D1[原始数据] --&amp;gt; D2[清洗 / 采样 / 特征工程]
    end

    subgraph 建模层
        D2 --&amp;gt; L1[线性代数&amp;lt;br/&amp;gt;把特征表示成向量/矩阵]
        L1 --&amp;gt; L2[概率论&amp;lt;br/&amp;gt;定义损失/似然函数]
        L2 --&amp;gt; L3[信息论&amp;lt;br/&amp;gt;交叉熵 / KL 散度]
        L3 --&amp;gt; L4[微积分&amp;lt;br/&amp;gt;梯度下降优化参数]
        L4 --&amp;gt; L5[优化算法&amp;lt;br/&amp;gt;DP / EM / 贪心]
    end

    subgraph 输出层
        L5 --&amp;gt; O1[训练好的模型]
        O1 --&amp;gt; O2[预测/推理]
    end&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;h3 id=&#34;92-案例逻辑回归&#34;&gt;9.2 案例：逻辑回归&lt;/h3&gt;
&lt;p&gt;逻辑回归是分类问题的“基线模型”，同时用到了三种数学：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;线性代数&lt;/strong&gt;：把输入特征加权求和&lt;/p&gt;
&lt;p&gt;$$
z = \mathbf{w}^T \mathbf{x} + b
$$&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;概率论&lt;/strong&gt;：用 sigmoid 函数把 $z$ 映射成概率&lt;/p&gt;
&lt;p&gt;$$
P(y=1 \mid \mathbf{x}) = \sigma(z) = \frac{1}{1 + e^{-z}}
$$&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;微积分 + 信息论&lt;/strong&gt;：用梯度下降最小化交叉熵损失&lt;/p&gt;
&lt;p&gt;$$
L = -\left[ y \log \hat{y} + (1-y) \log(1-\hat{y}) \right]
$$&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    X[&amp;#34;特征向量 x&amp;#34;] --&amp;gt;|&amp;#34;w^T x + b&amp;#34;| Z[&amp;#34;线性组合 z&amp;#34;]
    Z --&amp;gt;|&amp;#34;sigmoid&amp;#34;| P[&amp;#34;概率 ŷ&amp;#34;]
    P --&amp;gt;|&amp;#34;交叉熵损失&amp;#34;| L[&amp;#34;损失 L&amp;#34;]
    L --&amp;gt;|&amp;#34;梯度下降&amp;#34;| W[&amp;#34;更新 w, b&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;h3 id=&#34;93-案例pagerank&#34;&gt;9.3 案例：PageRank&lt;/h3&gt;
&lt;p&gt;Google 的 PageRank 算法是多种数学结合的典型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;图论&lt;/strong&gt;：网页之间的链接关系&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;线性代数&lt;/strong&gt;：网页链接表示成转移矩阵 $M$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;概率论&lt;/strong&gt;：把随机冲浪者停留在某个网页的概率作为网页重要性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特征值&lt;/strong&gt;：PageRank 向量就是矩阵 $M$ 的&lt;strong&gt;主特征向量&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;$$
\mathbf{r} = d M \mathbf{r} + \frac{1-d}{N} \mathbf{1}
$$&lt;/p&gt;
&lt;p&gt;其中 $d$ 是阻尼系数，$N$ 是网页总数。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;10-给新人的学习路线图&#34;&gt;10. 给新人的学习路线图&lt;/h2&gt;
&lt;h3 id=&#34;101-推荐学习顺序&#34;&gt;10.1 推荐学习顺序&lt;/h3&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart LR
    A[高中数学复习&amp;lt;br/&amp;gt;函数、方程] --&amp;gt; B[线性代数基础&amp;lt;br/&amp;gt;向量、矩阵、乘法]
    B --&amp;gt; C[微积分基础&amp;lt;br/&amp;gt;导数、偏导、梯度]
    C --&amp;gt; D[概率论基础&amp;lt;br/&amp;gt;条件概率、分布、期望]
    D --&amp;gt; E[信息论入门&amp;lt;br/&amp;gt;熵、交叉熵]
    E --&amp;gt; F[统计学入门&amp;lt;br/&amp;gt;采样、假设检验]
    F --&amp;gt; G[离散数学/图论&amp;lt;br/&amp;gt;图、状态机]
    G --&amp;gt; H[优化算法&amp;lt;br/&amp;gt;DP、贪心、EM]
    H --&amp;gt; I[结合项目学习&amp;lt;br/&amp;gt;NLP / 推荐 / 搜索]
    I --&amp;gt; J[读《数学之美》&amp;lt;br/&amp;gt;看工程案例]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;h3 id=&#34;102-学习资源建议&#34;&gt;10.2 学习资源建议&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;阶段&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;推荐资源&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;目标&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;入门&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;3Blue1Brown《线性代数的本质》&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;建立几何直觉&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;入门&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;3Blue1Brown《微积分的本质》&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;理解导数和积分&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;入门&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;3Blue1Brown《概率论》&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;理解概率直觉&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;入门&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;3Blue1Brown《信息论》&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;理解熵和编码&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;实践&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;吴军《数学之美》&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;看真实工程案例&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;深入&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;《统计学习方法》/《机器学习》周志华&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;系统学习算法&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;深入&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;《算法导论》&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;系统学习优化与数据结构&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;103-新人最常犯的-5-个错误&#34;&gt;10.3 新人最常犯的 5 个错误&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;只看公式，不画图&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;数学公式是压缩后的表达。先用图像、例子理解，再看公式会轻松很多。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;追求严格证明，忽视直觉&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对程序员来说，先知道“为什么有用”比“怎么严格证明”更重要。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;不跑代码，只看书&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用 NumPy 写一遍矩阵乘法、梯度下降，理解会深很多。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;跳得太快，基础不牢&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不要还没搞懂向量和矩阵，就直接去看 Transformer。基础不稳，后面全是黑魔法。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;学了不用，很快忘记&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选一个实际项目（比如用逻辑回归做分类、用协同过滤做推荐、用 TF-IDF 做搜索），把数学用起来。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id=&#34;11-避坑总结一张图记住要点&#34;&gt;11. 避坑总结：一张图记住要点&lt;/h2&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;mindmap
  root((数学之美&amp;lt;br/&amp;gt;避坑指南))
    线性代数
      先看形状再算
      区分矩阵乘和逐元素乘
      稀疏矩阵别用稠密存
      特征值不是玄学
    微积分
      梯度要加负号
      学习率要调参
      框架能自动求导但原理要懂
      局部最小不必纠结
    概率论
      概率高不等于一定发生
      条件概率方向别搞反
      零概率要平滑
      数据量决定模型上限
    信息论
      熵大不等于信息多
      交叉熵配合 softmax
      KL 散度不对称
    统计学
      相关不等于因果
      样本量要足够
      训练集测试集要分开
    图论与优化
      有向图无向图别混
      贪心不一定最优
      DP 状态定义要无后效性
    通用
      先直觉后证明
      一定要写代码
      用项目驱动学习&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;12-结语数学是程序员的第二门语言&#34;&gt;12. 结语：数学是程序员的“第二门语言”&lt;/h2&gt;
&lt;p&gt;《数学之美》让我印象最深的一点是：很多复杂问题，其实都有简洁的数学表达。线性代数让我们能批量处理关系，微积分让我们能自动优化，概率论让我们能坦然面对不确定性，信息论让我们能量化信息，统计学让我们能从数据中提炼规律，图论和优化算法让我们能高效搜索复杂空间。&lt;/p&gt;
&lt;p&gt;作为新人，不必一开始就精通所有推导。重要的是建立&lt;strong&gt;直觉&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;看到矩阵，想到“关系和变换”。&lt;/li&gt;
&lt;li&gt;看到导数，想到“变化和优化方向”。&lt;/li&gt;
&lt;li&gt;看到概率，想到“不确定性和可能性”。&lt;/li&gt;
&lt;li&gt;看到熵，想到“信息量和不确定性”。&lt;/li&gt;
&lt;li&gt;看到图，想到“节点和连接”。&lt;/li&gt;
&lt;li&gt;看到优化问题，想到“状态、转移、目标函数”。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当你能把业务问题翻译成数学问题，再用代码实现出来，你就已经从“写代码的人”成长为“解决问题的人”了。&lt;/p&gt;
&lt;p&gt;希望这篇总结对你有帮助。如果有具体概念想深入，欢迎在评论区交流。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;参考与延伸阅读&#34;&gt;参考与延伸阅读&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;吴军《数学之美》&lt;/li&gt;
&lt;li&gt;3Blue1Brown 系列视频（B 站/YouTube）&lt;/li&gt;
&lt;li&gt;周志华《机器学习》&lt;/li&gt;
&lt;li&gt;李航《统计学习方法》&lt;/li&gt;
&lt;li&gt;Thomas M. Cover《信息论基础》&lt;/li&gt;
&lt;li&gt;《算法导论》&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>线性代数脉络</title>
      <link>https://ftmao.com/blog/posts/linear-algebra-study-notes/</link>
      <pubDate>Sun, 05 Jul 2020 09:00:00 +0800</pubDate>
      <guid>https://ftmao.com/blog/posts/linear-algebra-study-notes/</guid>
      <description>&lt;h1 id=&#34;线性代数脉络&#34;&gt;线性代数脉络&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;目标读者&lt;/strong&gt;：完全没有学过线性代数，或者学过但感觉&amp;quot;全是零散公式、串不起来&amp;quot;的同学。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;阅读目标&lt;/strong&gt;：读完这篇，你应该能回答三个问题——线性代数到底在研究什么？六大章节（行列式、矩阵、方程组、向量组、特征值、二次型）之间是什么关系？每个核心公式&amp;quot;是干什么用的、什么时候用&amp;quot;？&lt;/p&gt;
&lt;p&gt;全文尽量用白话，每个公式都配一句&amp;quot;人话解释&amp;quot;，例题只用小数字，保证你能动手验证。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一先看全局线性代数知识地图&#34;&gt;一、先看全局：线性代数知识地图&lt;/h2&gt;
&lt;p&gt;很多新人学线性代数最大的痛苦是：每章都会算，但不知道章节之间有什么关系。其实整门课可以串成一条线：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[行列式&amp;lt;br/&amp;gt;一个数] --&amp;gt; B[矩阵&amp;lt;br/&amp;gt;一张表格]
    B --&amp;gt; C[线性方程组&amp;lt;br/&amp;gt;Ax = b]
    B --&amp;gt; D[向量组&amp;lt;br/&amp;gt;线性相关/无关]
    C --&amp;gt; E[秩 rank&amp;lt;br/&amp;gt;贯穿全课的核心概念]
    D --&amp;gt; E
    E --&amp;gt; F[特征值与特征向量&amp;lt;br/&amp;gt;Av = λv]
    F --&amp;gt; G[相似对角化&amp;lt;br/&amp;gt;P⁻¹AP = Λ]
    G --&amp;gt; H[二次型&amp;lt;br/&amp;gt;xᵀAx 与正定性]

    style A fill:#e1f5ff
    style E fill:#ffe1e1
    style H fill:#e8ffe1&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;一句话概括这条主线：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;行列式&lt;/strong&gt;是&amp;quot;算出一个数&amp;quot;的工具，用来判断矩阵是否可逆、方程组是否有唯一解；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;矩阵&lt;/strong&gt;是全课的主角，后面所有内容都是围绕矩阵展开的；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;线性方程组&lt;/strong&gt;引出了&lt;strong&gt;秩&lt;/strong&gt;，秩又把方程组和向量组统一了起来；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特征值与特征向量&lt;/strong&gt;研究&amp;quot;矩阵作用在某个方向上只相当于伸缩&amp;quot;，是相似对角化的基础；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;二次型&lt;/strong&gt;是特征值理论的直接应用，判断正定性靠的还是特征值（或顺序主子式）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;记住一个核心观点：&lt;strong&gt;秩（rank）是贯穿线性代数全课的灵魂概念&lt;/strong&gt;。学到后面你会发现，方程组解的判定、向量组的相关性、可对角化的条件，全都落脚在&amp;quot;秩&amp;quot;或&amp;quot;线性无关&amp;quot;上。&lt;/p&gt;
&lt;p&gt;再用一张图把知识和现实世界挂钩——这门课的每个核心工具，都有拿得出手的实际应用：&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[&amp;#34;线性代数核心工具&amp;#34;] --&amp;gt; B[&amp;#34;矩阵与变换&amp;#34;]
    A --&amp;gt; C[&amp;#34;方程组求解&amp;#34;]
    A --&amp;gt; D[&amp;#34;特征值与特征向量&amp;#34;]
    A --&amp;gt; E[&amp;#34;二次型与正定性&amp;#34;]
    B --&amp;gt; F[&amp;#34;计算机图形学：旋转 缩放 投影&amp;#34;]
    B --&amp;gt; G[&amp;#34;马尔可夫链：状态转移&amp;#34;]
    B --&amp;gt; H[&amp;#34;神经网络：每层都是矩阵乘法&amp;#34;]
    C --&amp;gt; I[&amp;#34;最小二乘拟合&amp;#34;]
    C --&amp;gt; J[&amp;#34;线性回归：正规方程&amp;#34;]
    D --&amp;gt; K[&amp;#34;PageRank：网页排序&amp;#34;]
    D --&amp;gt; L[&amp;#34;PCA 降维与数据科学&amp;#34;]
    D --&amp;gt; M[&amp;#34;SVD：图像压缩&amp;#34;]
    E --&amp;gt; N[&amp;#34;优化问题：Hessian 正定判极小值&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;后面每章结尾会配一小节&amp;quot;应用场景&amp;quot;，把这些连线展开讲清楚。&lt;/p&gt;
&lt;h2 id=&#34;二行列式把一张数表算成一个数&#34;&gt;二、行列式：把一张数表算成一个数&lt;/h2&gt;
&lt;h3 id=&#34;21-行列式是什么&#34;&gt;2.1 行列式是什么&lt;/h3&gt;
&lt;p&gt;矩阵是一张 $m \times n$ 的数表，而行列式是给&lt;strong&gt;方阵&lt;/strong&gt;（$n \times n$）定义的一个&lt;strong&gt;数&lt;/strong&gt;。这是新人最容易混淆的第一点：行列式不是表格，是一个数值。&lt;/p&gt;
&lt;p&gt;二阶行列式：&lt;/p&gt;
&lt;p&gt;$$
\begin{vmatrix} a &amp;amp; b \\ c &amp;amp; d \end{vmatrix} = ad - bc
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：主对角线（左上到右下）相乘，减去副对角线相乘。二阶、三阶都可以用这种&amp;quot;对角线法则&amp;quot;快速算，考试最常考。&lt;/p&gt;
&lt;p&gt;三阶行列式（对角线法则）：&lt;/p&gt;
&lt;p&gt;$$
\begin{vmatrix} a &amp;amp; b &amp;amp; c \\ d &amp;amp; e &amp;amp; f \\ g &amp;amp; h &amp;amp; i \end{vmatrix} = aei + bfg + cdh - ceg - bdi - afh
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：三条&amp;quot;主对角线方向&amp;quot;的乘积取正号，三条&amp;quot;副对角线方向&amp;quot;的乘积取负号。&lt;strong&gt;注意：对角线法则只对二阶、三阶有效，四阶以上不能这么算&lt;/strong&gt;（详见避坑技巧）。&lt;/p&gt;
&lt;p&gt;$n$ 阶行列式的一般定义（了解即可）：&lt;/p&gt;
&lt;p&gt;$$
\det(A) = \sum_{(j_1 j_2 \cdots j_n)} (-1)^{\tau(j_1 j_2 \cdots j_n)} a_{1j_1} a_{2j_2} \cdots a_{nj_n}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：每行各取一个元素、且列互不重复，乘起来再按列排列的逆序数 $\tau$ 决定正负号，把所有这样的项加起来。这个定义考试很少直接用来算题，但它能帮你理解行列式性质为什么成立。&lt;/p&gt;
&lt;h3 id=&#34;22-行列式的常用性质&#34;&gt;2.2 行列式的常用性质&lt;/h3&gt;
&lt;p&gt;算高阶行列式几乎不靠定义，而是靠&lt;strong&gt;性质化简&lt;/strong&gt;。最常用的几条：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;性质&lt;/th&gt;
					&lt;th&gt;内容&lt;/th&gt;
					&lt;th&gt;记忆口诀&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;转置不变&lt;/td&gt;
					&lt;td&gt;$\lvert A^T \rvert = \lvert A \rvert$&lt;/td&gt;
					&lt;td&gt;行列地位平等&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;换行（列）变号&lt;/td&gt;
					&lt;td&gt;交换两行，行列式变号&lt;/td&gt;
					&lt;td&gt;换一次，翻一次号&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;提公因子&lt;/td&gt;
					&lt;td&gt;某行乘以 $k$，行列式乘以 $k$&lt;/td&gt;
					&lt;td&gt;一行提一个 $k$&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;倍加不变&lt;/td&gt;
					&lt;td&gt;某行的 $k$ 倍加到另一行，值不变&lt;/td&gt;
					&lt;td&gt;化简主力&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;零行得零&lt;/td&gt;
					&lt;td&gt;某行全为 0，行列式为 0&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;两行成比例&lt;/td&gt;
					&lt;td&gt;两行成比例，行列式为 0&lt;/td&gt;
					&lt;td&gt;含&amp;quot;两行相同&amp;quot;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;还有两个和矩阵运算相关的公式，选择题常考：&lt;/p&gt;
&lt;p&gt;$$
|AB| = |A|\cdot|B|, \qquad |kA| = k^n |A| \quad (A \text{ 为 } n \text{ 阶方阵})
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：行列式对乘法&amp;quot;分配&amp;quot;；但数乘矩阵时，$k$ 乘的是每一行，$n$ 行每行提一个 $k$，所以是 $k^n$ 而不是 $k$。第二个公式是选择题高频陷阱。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;特别注意&lt;/strong&gt;：$|A + B| \neq |A| + |B|$，行列式对加法没有分配律。&lt;/p&gt;
&lt;h3 id=&#34;23-按行列展开&#34;&gt;2.3 按行（列）展开&lt;/h3&gt;
&lt;p&gt;定义代数余子式：去掉第 $i$ 行第 $j$ 列后剩下的 $n-1$ 阶行列式记为 $M_{ij}$（余子式），再乘上符号：&lt;/p&gt;
&lt;p&gt;$$
A_{ij} = (-1)^{i+j} M_{ij}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：代数余子式就是&amp;quot;划掉一行一列后的小行列式&amp;quot;，再按位置贴上正负号，符号呈棋盘格分布，左上角为正。&lt;/p&gt;
&lt;p&gt;按第 $i$ 行展开定理：&lt;/p&gt;
&lt;p&gt;$$
\det(A) = a_{i1}A_{i1} + a_{i2}A_{i2} + \cdots + a_{in}A_{in}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：一个 $n$ 阶行列式可以拆成 $n$ 个 $n-1$ 阶行列式来算。&lt;strong&gt;实战技巧&lt;/strong&gt;：选零元素最多的那一行（列）展开，或者先用&amp;quot;倍加不变&amp;quot;把某一行造出多个零再展开——这是手算四阶以上行列式的标准套路。&lt;/p&gt;
&lt;h3 id=&#34;24-应用场景行列式在现实中干什么&#34;&gt;2.4 应用场景：行列式在现实中干什么&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;用到什么&lt;/th&gt;
					&lt;th&gt;解决什么问题&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;判断系统是否有唯一解&lt;/td&gt;
					&lt;td&gt;$\lvert A \rvert \neq 0$ 等价于 $A$ 可逆、$Ax=b$ 唯一解&lt;/td&gt;
					&lt;td&gt;结构力学里刚度矩阵可逆，桥梁/建筑的形变才有确定解；电路方程组同理&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;计算机图形学与几何&lt;/td&gt;
					&lt;td&gt;二阶行列式 = 平行四边形有向面积，三阶 = 平行六面体有向体积&lt;/td&gt;
					&lt;td&gt;判断三角形朝向（正面/背面剔除）、求多边形面积&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数值计算与物理&lt;/td&gt;
					&lt;td&gt;行列式 = 线性变换对面积/体积的缩放比&lt;/td&gt;
					&lt;td&gt;积分换元的雅可比行列式、有限元分析中单元是否退化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;数据分析&lt;/td&gt;
					&lt;td&gt;$\lvert A \rvert = 0$ 说明各列线性相关&lt;/td&gt;
					&lt;td&gt;快速发现特征冗余：某列指标能由其他列算出，删掉不损失信息&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话记住：&lt;strong&gt;行列式是&amp;quot;可逆性&amp;quot;的检测仪，也是&amp;quot;体积缩放比&amp;quot;的度量&lt;/strong&gt;。后面求逆矩阵、求特征值，都要靠它把&amp;quot;矩阵问题&amp;quot;降级成&amp;quot;一个数是不是零&amp;quot;的问题。&lt;/p&gt;
&lt;h2 id=&#34;三矩阵全课的主角&#34;&gt;三、矩阵：全课的主角&lt;/h2&gt;
&lt;h3 id=&#34;31-矩阵运算&#34;&gt;3.1 矩阵运算&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;加减&lt;/strong&gt;：同型矩阵对应元素相加减；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数乘&lt;/strong&gt;：$k$ 乘每个元素；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;乘法&lt;/strong&gt;：$A$ 是 $m \times s$，$B$ 是 $s \times n$，则 $AB$ 是 $m \times n$，且&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;$$
(AB)_{ij} = \sum_{k=1}^{s} a_{ik} b_{kj}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：$AB$ 的第 $i$ 行第 $j$ 列元素，等于 $A$ 的第 $i$ 行和 $B$ 的第 $j$ 列&amp;quot;对应相乘再相加&amp;quot;。能乘的前提是&lt;strong&gt;左边的列数 = 右边的行数&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;矩阵乘法有三个和数的乘法不一样的&amp;quot;脾气&amp;quot;，务必牢记：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;数的乘法&lt;/th&gt;
					&lt;th&gt;矩阵乘法&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;$ab = ba$&lt;/td&gt;
					&lt;td&gt;一般 $AB \neq BA$（不满足交换律）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$ab = 0 \Rightarrow a=0$ 或 $b=0$&lt;/td&gt;
					&lt;td&gt;$AB = O$ 推不出 $A=O$ 或 $B=O$&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$ab = ac, a \neq 0 \Rightarrow b = c$&lt;/td&gt;
					&lt;td&gt;消去律一般不成立&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;转置运算的常用公式：&lt;/p&gt;
&lt;p&gt;$$
(A^T)^T = A, \quad (AB)^T = B^T A^T
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：乘积的转置要&lt;strong&gt;倒序&lt;/strong&gt;，这个&amp;quot;倒序&amp;quot;规律和下面逆矩阵的公式长得一样，一起记。&lt;/p&gt;
&lt;h3 id=&#34;32-逆矩阵&#34;&gt;3.2 逆矩阵&lt;/h3&gt;
&lt;p&gt;定义：若 $AB = BA = E$（单位矩阵），则称 $A$ 可逆，$B$ 记为 $A^{-1}$。&lt;/p&gt;
&lt;p&gt;可逆的充要条件：&lt;/p&gt;
&lt;p&gt;$$
A \text{ 可逆} \iff |A| \neq 0
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：行列式不为零是矩阵可逆的&amp;quot;通行证&amp;quot;。这也是为什么第一章要学行列式——它就是为这里准备的判别工具。&lt;/p&gt;
&lt;p&gt;伴随矩阵求逆公式：&lt;/p&gt;
&lt;p&gt;$$
A^{-1} = \frac{1}{|A|} A^{*}
$$&lt;/p&gt;
&lt;p&gt;其中 $A^{*}$ 是伴随矩阵，由代数余子式&lt;strong&gt;转置排列&lt;/strong&gt;而成：第 $i$ 行第 $j$ 列放的是 $A_{ji}$。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：这个公式理论证明和抽象题里常用（比如问 $A^{*}$ 的性质），但手算具体矩阵的逆一般不用它，而用下面的初等行变换法。&lt;/p&gt;
&lt;p&gt;常用性质（都带&amp;quot;倒序&amp;quot;特征）：&lt;/p&gt;
&lt;p&gt;$$
(A^{-1})^{-1} = A, \quad (AB)^{-1} = B^{-1}A^{-1}, \quad (A^T)^{-1} = (A^{-1})^T
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：这组公式是解&amp;quot;矩阵方程&amp;quot;（如 $AXB = C$，求 $X = A^{-1}CB^{-1}$）的标配工具，也是证明题里的常客。记住口诀：&lt;strong&gt;穿脱鞋袜要倒序&lt;/strong&gt;——先穿袜子后穿鞋，脱的时候就得先脱鞋后脱袜，矩阵的逆和转置同理。&lt;/p&gt;
&lt;h3 id=&#34;33-初等变换线性代数的瑞士军刀&#34;&gt;3.3 初等变换：线性代数的&amp;quot;瑞士军刀&amp;quot;&lt;/h3&gt;
&lt;p&gt;三种初等行变换：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;交换两行（记 $r_i \leftrightarrow r_j$）；&lt;/li&gt;
&lt;li&gt;某行乘以非零数 $k$（记 $k r_i$）；&lt;/li&gt;
&lt;li&gt;某行的 $k$ 倍加到另一行（记 $r_i + k r_j$）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：这三种操作对应解方程组时&amp;quot;换方程顺序、方程两边同乘一个数、两个方程相加减&amp;quot;，所以它们不改变方程组的解。&lt;/p&gt;
&lt;p&gt;初等行变换法求逆：&lt;/p&gt;
&lt;p&gt;$$
(A \mid E) \xrightarrow{\text{初等行变换}} (E \mid A^{-1})
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：把 $A$ 和单位矩阵左右拼起来，只对整个&amp;quot;大矩阵&amp;quot;做行变换；当左边变成 $E$ 时，右边自动就是 $A^{-1}$。这是求逆矩阵的&lt;strong&gt;首选方法&lt;/strong&gt;，比伴随矩阵法快得多，也不容易错。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;历史故事：&amp;ldquo;矩阵&amp;quot;这个词是人造出来的。&lt;/strong&gt; 1850 年，英国数学家西尔维斯特（James Joseph Sylvester）为了描述&amp;quot;行列式中各阶子式所来自的那张数表&amp;rdquo;，首次使用了 matrix 一词——它在拉丁语中原意是&amp;quot;母体&amp;quot;，取的就是&amp;quot;行列式由它孕育而生&amp;quot;的意思。八年后的 1858 年，他的挚友兼长期合作者凯莱（Arthur Cayley）发表《矩阵论研究报告》（A Memoir on the Theory of Matrices），第一次系统地定义了矩阵的加法、乘法与逆运算，矩阵从此从&amp;quot;行列式的附属记号&amp;quot;升格为独立的研究对象。凯莱当时主要把它当作整理代数方程组的速记法，大概想不到一百多年后，矩阵会成为整个计算科学的通用语言。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;34-应用场景矩阵乘法就是批量变换&#34;&gt;3.4 应用场景：矩阵乘法就是&amp;quot;批量变换&amp;quot;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;用到什么&lt;/th&gt;
					&lt;th&gt;解决什么问题&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;计算机图形学&lt;/td&gt;
					&lt;td&gt;旋转、缩放、投影矩阵；齐次坐标把平移也并入矩阵乘法&lt;/td&gt;
					&lt;td&gt;游戏和动画里每个物体每个姿态都是一次矩阵乘法；GPU 每秒执行数十亿次矩阵乘法，3D 画面就是这么来的&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;马尔可夫链&lt;/td&gt;
					&lt;td&gt;状态转移矩阵 $P$，$p_{t+1} = P^{T} p_t$&lt;/td&gt;
					&lt;td&gt;预测市场份额、天气变化、网页浏览路径的演化；$P$ 的幂 $P^n$ 给出 $n$ 步之后的状态分布（这里就用上了对角化算幂）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;神经网络&lt;/td&gt;
					&lt;td&gt;每一层都是 $y = Wx + b$&lt;/td&gt;
					&lt;td&gt;深度学习本质是&amp;quot;海量矩阵乘法 + 非线性激活&amp;quot;，训练框架和 GPU 硬件都围绕矩阵乘法优化&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;密码学&lt;/td&gt;
					&lt;td&gt;可逆矩阵 $A$ 与 $A^{-1}$&lt;/td&gt;
					&lt;td&gt;古典希尔密码（Hill Cipher）用矩阵乘法加密、用逆矩阵解密，是&amp;quot;可逆&amp;quot;概念最直观的应用&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以看到：&lt;strong&gt;矩阵乘法是&amp;quot;对一大批数据同时施加同一个变换&amp;quot;的记号&lt;/strong&gt;。这也是为什么工程界离不开它——现实中的变换从来不是一个数一个数地处理，而是一整个向量、一整个图像地批量处理。&lt;/p&gt;
&lt;h2 id=&#34;四线性方程组与秩解的判定&#34;&gt;四、线性方程组与秩：解的判定&lt;/h2&gt;
&lt;h3 id=&#34;41-高斯消元法&#34;&gt;4.1 高斯消元法&lt;/h3&gt;
&lt;p&gt;解方程组 $Ax = b$ 的标准流程：把增广矩阵 $\bar{A} = (A \mid b)$ 用&lt;strong&gt;初等行变换&lt;/strong&gt;化成阶梯形（最好化成行最简形），然后回代求解。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[&amp;#34;写出增广矩阵 Ā = (A∣b)&amp;#34;] --&amp;gt; B[&amp;#34;初等行变换化为阶梯形&amp;#34;]
    B --&amp;gt; C{&amp;#34;比较 r(A) 与 r(Ā)&amp;#34;}
    C --&amp;gt;|&amp;#34;r(A) ≠ r(Ā)&amp;#34;| D[&amp;#34;无解&amp;#34;]
    C --&amp;gt;|&amp;#34;r(A) = r(Ā) = n&amp;#34;| E[&amp;#34;唯一解&amp;lt;br/&amp;gt;回代求出&amp;#34;]
    C --&amp;gt;|&amp;#34;r(A) = r(Ā) ＜ n&amp;#34;| F[&amp;#34;无穷多解&amp;lt;br/&amp;gt;设自由未知量&amp;lt;br/&amp;gt;写通解&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;历史故事：消元法，中国人早用了近两千年。&lt;/strong&gt; 成书于汉代的《九章算术》第八章&amp;quot;方程&amp;quot;，记载了用算筹摆出线性方程组的系数、逐列消元求解的&amp;quot;直除法&amp;quot;，本质上就是今天的高斯消元；魏晋时期的刘徽在公元 263 年为它作注时，还给出了更快捷的&amp;quot;互乘相消法&amp;quot;。同一章还首次系统引入了负数及其运算法则（&amp;ldquo;正负术&amp;rdquo;）。直到 19 世纪初，高斯在天文观测的最小二乘计算中系统地使用消元法，西方学界才以他的名字命名了这套算法——按时间算，《九章算术》的&amp;quot;方程术&amp;quot;早了约两千年。所以学这一节时，你其实是在复习一门非常古老的计算手艺。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;42-秩有效方程的个数&#34;&gt;4.2 秩：有效方程的个数&lt;/h3&gt;
&lt;p&gt;矩阵的秩 $r(A)$：$A$ 中非零子式的最高阶数，也等于阶梯形矩阵中非零行的个数。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：秩就是&amp;quot;真正起作用的方程（或向量）有几个&amp;quot;。表面上 3 个方程，如果有一个能被另外两个推出来，它就是&amp;quot;废话方程&amp;quot;，秩只有 2。&lt;/p&gt;
&lt;h3 id=&#34;43-解的判定定理必背&#34;&gt;4.3 解的判定定理（必背）&lt;/h3&gt;
&lt;p&gt;设 $A$ 是 $m \times n$ 矩阵，方程组 $Ax = b$：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;条件&lt;/th&gt;
					&lt;th&gt;结论&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;$r(A) \neq r(\bar{A})$&lt;/td&gt;
					&lt;td&gt;无解&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$r(A) = r(\bar{A}) = n$&lt;/td&gt;
					&lt;td&gt;唯一解&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;$r(A) = r(\bar{A}) &amp;lt; n$&lt;/td&gt;
					&lt;td&gt;无穷多解，通解含 $n - r(A)$ 个自由未知量&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：增广矩阵的秩比系数矩阵多 1，说明出现了&amp;quot;$0 = 1$&amp;ldquo;这种矛盾方程，所以无解；秩等于未知数个数 $n$，每个未知数都被&amp;quot;锁死&amp;rdquo;，解唯一；秩小于 $n$，就有 $n - r(A)$ 个未知数可以随便取，解自然无穷多。&lt;/p&gt;
&lt;p&gt;齐次方程组 $Ax = 0$ 的特例（永远有零解，所以只关心有没有非零解）：&lt;/p&gt;
&lt;p&gt;$$
Ax = 0 \text{ 有非零解} \iff r(A) &amp;lt; n
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：$n$ 个未知数、有效方程少于 $n$ 个，&amp;ldquo;锁不住&amp;quot;所有未知数，就有非零解。特别地，方程个数少于未知数个数（$m &amp;lt; n$）的齐次方程组必有非零解。&lt;/p&gt;
&lt;h3 id=&#34;44-应用场景方程组是从约束反推答案的机器&#34;&gt;4.4 应用场景：方程组是&amp;quot;从约束反推答案&amp;quot;的机器&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;用到什么&lt;/th&gt;
					&lt;th&gt;解决什么问题&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;最小二乘拟合&lt;/td&gt;
					&lt;td&gt;数据点比未知数多时 $Ax=b$ 无解，改解正规方程 $A^TAx = A^Tb$&lt;/td&gt;
					&lt;td&gt;给一堆带噪声的测量数据配一条&amp;quot;误差平方和最小&amp;quot;的直线/曲线——实验数据处理的标配&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;机器学习线性回归&lt;/td&gt;
					&lt;td&gt;正规方程 $\hat{x} = (A^TA)^{-1}A^Tb$&lt;/td&gt;
					&lt;td&gt;由房价、面积、地段等特征直接解出最优权重，是很多人学的第一个机器学习模型&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;电路分析&lt;/td&gt;
					&lt;td&gt;基尔霍夫定律列出节点电流、回路电压方程组&lt;/td&gt;
					&lt;td&gt;求复杂电路中每条支路的电流，电路仿真软件每天都在做&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;经济与社会科学&lt;/td&gt;
					&lt;td&gt;投入产出模型（列昂惕夫模型）就是大型线性方程组&lt;/td&gt;
					&lt;td&gt;分析各行业之间的供需依赖：钢铁增产会拉动多少煤炭、电力需求&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;注意一个反差：&lt;strong&gt;现实中更常见的不是&amp;quot;恰好有唯一解&amp;rdquo;，而是&amp;quot;方程太多、无解&amp;quot;&lt;/strong&gt;（数据有噪声）。这时候&amp;quot;无解&amp;quot;不是终点，而是改用最小二乘找&amp;quot;最接近的解&amp;quot;的起点——秩的理论依然负责告诉你这个替代问题有没有唯一答案。&lt;/p&gt;
&lt;h2 id=&#34;五向量组线性相关与无关&#34;&gt;五、向量组：线性相关与无关&lt;/h2&gt;
&lt;h3 id=&#34;51-核心定义&#34;&gt;5.1 核心定义&lt;/h3&gt;
&lt;p&gt;线性组合：$\beta = k_1\alpha_1 + k_2\alpha_2 + \cdots + k_s\alpha_s$，称 $\beta$ 可由向量组 $\alpha_1, \dots, \alpha_s$ 线性表示。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：能不能用这组向量&amp;quot;调配&amp;quot;出目标向量，等价于一个线性方程组有没有解——向量问题背后还是方程组。&lt;/p&gt;
&lt;p&gt;线性相关与线性无关：&lt;/p&gt;
&lt;p&gt;$$
\text{存在不全为零的 } k_1, \dots, k_s \text{ 使 } k_1\alpha_1 + \cdots + k_s\alpha_s = 0 \iff \{\alpha_i\} \text{ 线性相关}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;线性相关&lt;/strong&gt;：这组向量里有&amp;quot;多余的&amp;quot;，至少有一个能被其他向量表示出来；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;线性无关&lt;/strong&gt;：只有全取零系数才能凑出零向量，说明每个向量都&amp;quot;不可替代&amp;quot;，谁也表示不了谁。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;判定方法：把向量按列拼成矩阵 $A = (\alpha_1, \dots, \alpha_s)$，则&lt;/p&gt;
&lt;p&gt;$$
\{\alpha_1, \dots, \alpha_s\} \text{ 线性无关} \iff r(A) = s \iff Ax = 0 \text{ 只有零解}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：向量个数 $s$ 个、秩也是 $s$ 个，说明没有一个是多余的。又一次回到了秩——这就是&amp;quot;向量组&amp;quot;这章的本质。&lt;/p&gt;
&lt;h3 id=&#34;52-极大无关组与向量组的秩&#34;&gt;5.2 极大无关组与向量组的秩&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;极大线性无关组&lt;/strong&gt;：从向量组里挑出的&amp;quot;最精简代表团&amp;quot;——它们彼此线性无关，且组里任何向量都能由它们表示。代表团中向量的个数就是这个向量组的&lt;strong&gt;秩&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;一个重要结论：&lt;/p&gt;
&lt;p&gt;$$
\text{矩阵的秩} = \text{行向量组的秩（行秩）} = \text{列向量组的秩（列秩）}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：三种秩其实是一回事。所以求向量组的秩、找极大无关组，都可以统一用&amp;quot;拼成矩阵做行变换、数非零行&amp;quot;这一招搞定。&lt;/p&gt;
&lt;div class=&#34;code-block&#34;&gt;
    &lt;button class=&#34;code-copy&#34; type=&#34;button&#34; hidden aria-label=&#34;Copy code to clipboard&#34;&gt;
      &lt;span class=&#34;code-copy-label&#34; aria-hidden=&#34;true&#34;&gt;Copy&lt;/span&gt;
    &lt;/button&gt;
    &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;flowchart TD
    A[向量组问题] --&amp;gt; B[按列拼成矩阵 A]
    B --&amp;gt; C[初等行变换&amp;lt;br/&amp;gt;化为阶梯形]
    C --&amp;gt; D[非零行数 = 秩]
    C --&amp;gt; E[主元所在列对应的原向量&amp;lt;br/&amp;gt;构成极大无关组]
    D --&amp;gt; F{秩 = 向量个数?}
    F --&amp;gt;|是| G[线性无关]
    F --&amp;gt;|否| H[线性相关]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：注意&amp;quot;主元所在列&amp;quot;要对应回&lt;strong&gt;原矩阵&lt;/strong&gt;的列向量，因为行变换会改变列向量本身，但不改变列向量之间的线性关系——这是初等行变换最妙的性质。&lt;/p&gt;
&lt;h3 id=&#34;53-应用场景线性无关就是信息不重复&#34;&gt;5.3 应用场景：线性无关就是&amp;quot;信息不重复&amp;quot;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;用到什么&lt;/th&gt;
					&lt;th&gt;解决什么问题&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;特征工程与数据清洗&lt;/td&gt;
					&lt;td&gt;列向量线性相关 ⟺ 特征冗余&lt;/td&gt;
					&lt;td&gt;某列数据能由其他列算出（如&amp;quot;总价 = 单价 × 数量&amp;quot;同时入模），删掉它既不损失信息，还能避免多重共线性导致的回归系数不稳定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;主成分分析（PCA）的思想&lt;/td&gt;
					&lt;td&gt;极大无关组&lt;/td&gt;
					&lt;td&gt;从一堆相关变量里挑出&amp;quot;最精简代表团&amp;quot;，用少数几个新变量代表原始信息的绝大部分——第六章会正式遇到它&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;坐标系与基&lt;/td&gt;
					&lt;td&gt;$n$ 个线性无关向量可张成 $n$ 维空间&lt;/td&gt;
					&lt;td&gt;机器人学、3D 视觉里在不同坐标系间转换，本质就是换一组基重新表示同一个向量&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;信号处理&lt;/td&gt;
					&lt;td&gt;一组&amp;quot;基信号&amp;quot;（如不同频率的正弦波）线性无关&lt;/td&gt;
					&lt;td&gt;傅里叶分析的核心思想：任何信号都能唯一地分解为基信号的线性组合&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话记住：&lt;strong&gt;&amp;ldquo;线性无关&amp;rdquo;= 每个向量都带来新信息，&amp;ldquo;线性相关&amp;rdquo;= 有人说了废话&lt;/strong&gt;。这门课里找极大无关组的功夫，到了数据科学里就变身成特征选择和降维。&lt;/p&gt;
&lt;h2 id=&#34;六特征值与特征向量矩阵的伸缩方向&#34;&gt;六、特征值与特征向量：矩阵的&amp;quot;伸缩方向&amp;quot;&lt;/h2&gt;
&lt;h3 id=&#34;61-定义与求法&#34;&gt;6.1 定义与求法&lt;/h3&gt;
&lt;p&gt;定义：设 $A$ 为 $n$ 阶方阵，若存在数 $\lambda$ 和非零向量 $\alpha$，使得&lt;/p&gt;
&lt;p&gt;$$
A\alpha = \lambda\alpha
$$&lt;/p&gt;
&lt;p&gt;则称 $\lambda$ 为 $A$ 的特征值，$\alpha$ 为对应的特征向量。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：矩阵作用在一般向量上会&amp;quot;又转又缩&amp;quot;，但作用在特征向量方向上&lt;strong&gt;只伸缩不转向&lt;/strong&gt;，伸缩倍数就是特征值。这是整个特征值理论的几何直觉。&lt;/p&gt;
&lt;p&gt;求解两步走：&lt;/p&gt;
&lt;p&gt;第一步，解特征方程求特征值：&lt;/p&gt;
&lt;p&gt;$$
|\lambda E - A| = 0
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：由 $A\alpha = \lambda\alpha$ 移项得 $(\lambda E - A)\alpha = 0$，$\alpha \neq 0$ 意味着这个齐次方程组有非零解，所以系数行列式必须为零——又一次用上了第四章的结论。&lt;/p&gt;
&lt;p&gt;第二步，对每个 $\lambda_i$，解齐次方程组 $(\lambda_i E - A)x = 0$，其非零解就是对应特征向量。&lt;/p&gt;
&lt;p&gt;两个常用结论（选择和证明题常客）：&lt;/p&gt;
&lt;p&gt;$$
\lambda_1 + \lambda_2 + \cdots + \lambda_n = \operatorname{tr}(A), \qquad \lambda_1 \lambda_2 \cdots \lambda_n = |A|
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：特征值之和等于对角线元素之和（迹），特征值之积等于行列式。可用来快速验算求出的特征值对不对。&lt;/p&gt;
&lt;h3 id=&#34;62-相似对角化&#34;&gt;6.2 相似对角化&lt;/h3&gt;
&lt;p&gt;若存在可逆矩阵 $P$，使&lt;/p&gt;
&lt;p&gt;$$
P^{-1}AP = \Lambda = \operatorname{diag}(\lambda_1, \lambda_2, \dots, \lambda_n)
$$&lt;/p&gt;
&lt;p&gt;则称 $A$ 可相似对角化。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：换个&amp;quot;坐标系&amp;quot;（由特征向量拼成的 $P$），矩阵的作用就变成了纯粹的沿各坐标轴伸缩。对角化最大的用处是快速算幂：$A^n = P\Lambda^n P^{-1}$，对角矩阵的 $n$ 次幂就是对角线元素各取 $n$ 次幂。&lt;/p&gt;
&lt;p&gt;可对角化的充要条件：&lt;/p&gt;
&lt;p&gt;$$
A \text{ 可对角化} \iff A \text{ 有 } n \text{ 个线性无关的特征向量}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：关键是特征向量要&amp;quot;够用、且互不冗余&amp;quot;。$n$ 个互不相同的特征值一定对应 $n$ 个线性无关的特征向量（充分条件）；但特征值有重根时，要看每个 $k$ 重特征值能不能找出 $k$ 个线性无关的特征向量（几何重数 = 代数重数）。&lt;/p&gt;
&lt;p&gt;重要结论：&lt;strong&gt;实对称矩阵必可相似对角化&lt;/strong&gt;，而且不同特征值的特征向量&lt;strong&gt;相互正交&lt;/strong&gt;，可以用正交矩阵 $Q$ 实现 $Q^{-1}AQ = Q^TAQ = \Lambda$。这个结论直接通向下一章的二次型。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;历史故事：特征值是从仰望星空开始的。&lt;/strong&gt; 18 世纪，拉格朗日和拉普拉斯研究行星轨道的长期摄动——木星和土星的引力会不会让彼此的轨道慢慢漂移、太阳系长期是否稳定？这类问题被化成线性微分方程组后，系数矩阵导出的那个代数方程被拉普拉斯称为&amp;quot;长期方程&amp;quot;（équation séculaire）。这个方程的根，正是今天所说的特征值，根的符号决定轨道是长期稳定还是逐渐发散。后来柯西等人把这套思想抽象成一般的矩阵特征值理论，&amp;ldquo;eigenvalue&amp;quot;一词里的 eigen 来自德语&amp;quot;固有的、特征的&amp;rdquo;——矩阵与生俱来的那些伸缩方向。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;历史故事：凯莱-哈密顿定理。&lt;/strong&gt; 1858 年，凯莱在那篇矩阵论奠基论文中提出：每个方阵都&amp;quot;满足自己的特征方程&amp;quot;——把 $|\lambda E - A| = 0$ 展开得到的代数方程里，将 $\lambda$ 换成矩阵 $A$ 本身，等式依然成立。凯莱只动手验证了二阶、三阶的情形并断言一般结论成立，完整的一般性证明到 1878 年才由弗罗贝尼乌斯给出。这个定理很实用的一个推论：$A^{-1}$ 可以写成 $A$ 的多项式，求逆矩阵因此多了一条代数路径。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;63-应用场景特征值是矩阵的身份证&#34;&gt;6.3 应用场景：特征值是&amp;quot;矩阵的身份证&amp;quot;&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;用到什么&lt;/th&gt;
					&lt;th&gt;解决什么问题&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;搜索引擎 PageRank&lt;/td&gt;
					&lt;td&gt;网页链接矩阵的特征向量&lt;/td&gt;
					&lt;td&gt;1998 年谷歌创始人佩奇（Larry Page）和布林提出：把全网链接关系看成巨型矩阵，其主特征向量（特征值 1 对应的特征向量）的每个分量就是对应网页的重要性得分。这是谷歌的起家技术，也是&amp;quot;特征向量改变世界的&amp;quot;最著名的例子&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;PCA 降维与数据科学&lt;/td&gt;
					&lt;td&gt;协方差矩阵的特征值分解&lt;/td&gt;
					&lt;td&gt;特征向量 = 数据方差最大的方向（主成分），特征值 = 该方向上的方差大小；只保留最大的几个特征值对应的方向，就能用少数维度保留绝大部分信息——人脸识别、数据压缩的常用手段&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;图像压缩与 SVD&lt;/td&gt;
					&lt;td&gt;奇异值分解 $A = U\Sigma V^T$（特征值分解的推广）&lt;/td&gt;
					&lt;td&gt;把图像看成矩阵，只保留前 $k$ 个最大的奇异值及对应向量，就能用远小于原图的数据量还原出人眼几乎看不出差别的图像&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;振动与稳定性分析&lt;/td&gt;
					&lt;td&gt;$A^n = P\Lambda^n P^{-1}$，特征值的大小&lt;/td&gt;
					&lt;td&gt;机械振动频率、桥梁共振分析、动力系统是否稳定，都看特征值：模大于 1 的会发散，小于 1 的会衰减&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;为什么特征值这么万能？因为它回答的是一个最本质的问题：&lt;strong&gt;这个变换反复作用下去，哪些方向会留下来、放大还是衰减&lt;/strong&gt;。推荐算法、物理稳定性、数据压缩，问的都是同一件事。&lt;/p&gt;
&lt;h2 id=&#34;七二次型特征值理论的应用&#34;&gt;七、二次型：特征值理论的应用&lt;/h2&gt;
&lt;h3 id=&#34;71-二次型与矩阵表示&#34;&gt;7.1 二次型与矩阵表示&lt;/h3&gt;
&lt;p&gt;$n$ 元二次型都可以写成矩阵形式：&lt;/p&gt;
&lt;p&gt;$$
f(x_1, \dots, x_n) = x^T A x, \quad A = A^T
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：交叉项 $2a_{ij}x_ix_j$ 的系数拆成两半，对称地放进矩阵的 $(i,j)$ 和 $(j,i)$ 位置，所以二次型的矩阵一定是&lt;strong&gt;对称矩阵&lt;/strong&gt;。这就接上了&amp;quot;实对称矩阵必可对角化&amp;quot;的结论。&lt;/p&gt;
&lt;h3 id=&#34;72-化标准形&#34;&gt;7.2 化标准形&lt;/h3&gt;
&lt;p&gt;通过可逆线性变换 $x = Cy$（特别是正交变换 $x = Qy$），可以把二次型化为只含平方项的标准形：&lt;/p&gt;
&lt;p&gt;$$
f = \lambda_1 y_1^2 + \lambda_2 y_2^2 + \cdots + \lambda_n y_n^2
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：用正交变换化标准形时，平方项的系数&lt;strong&gt;恰好就是矩阵 $A$ 的特征值&lt;/strong&gt;。所以&amp;quot;二次型化标准形&amp;quot;的本质就是&amp;quot;求对称矩阵的特征值并构造特征向量拼成正交矩阵&amp;quot;——第六章的活儿换个马甲又出现一次。&lt;/p&gt;
&lt;h3 id=&#34;73-正定性判定&#34;&gt;7.3 正定性判定&lt;/h3&gt;
&lt;p&gt;定义：若对任意 $x \neq 0$ 都有 $x^TAx &amp;gt; 0$，称二次型（及矩阵 $A$）正定。&lt;/p&gt;
&lt;p&gt;常用判别法（实对称矩阵 $A$）：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;判别法&lt;/th&gt;
					&lt;th&gt;内容&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;定义法&lt;/td&gt;
					&lt;td&gt;任意 $x \neq 0$，$x^TAx &amp;gt; 0$&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;特征值法&lt;/td&gt;
					&lt;td&gt;$A$ 的全部特征值 $&amp;gt; 0$&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;顺序主子式法（Sylvester 准则）&lt;/td&gt;
					&lt;td&gt;各阶顺序主子式全 $&amp;gt; 0$&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;顺序主子式即左上角 $1$ 阶、$2$ 阶、$\dots$、$n$ 阶的子行列式：&lt;/p&gt;
&lt;p&gt;$$
D_1 = a_{11} &amp;gt; 0, \quad D_2 = \begin{vmatrix} a_{11} &amp;amp; a_{12} \\ a_{21} &amp;amp; a_{22} \end{vmatrix} &amp;gt; 0, \quad \dots, \quad D_n = |A| &amp;gt; 0
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;白话解释&lt;/strong&gt;：手算具体矩阵的正定性，首选 Sylvester 准则——从左上角开始逐阶算行列式，全部严格大于零即正定。注意必须是&lt;strong&gt;严格大于&lt;/strong&gt;，全&amp;quot;非负&amp;quot;只能得到半正定。&lt;/p&gt;
&lt;h3 id=&#34;74-应用场景正定性是谷底还是山顶的判据&#34;&gt;7.4 应用场景：正定性是&amp;quot;谷底还是山顶&amp;quot;的判据&lt;/h3&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;场景&lt;/th&gt;
					&lt;th&gt;用到什么&lt;/th&gt;
					&lt;th&gt;解决什么问题&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;多元函数优化&lt;/td&gt;
					&lt;td&gt;Hessian 矩阵（二阶导数矩阵）的正定性&lt;/td&gt;
					&lt;td&gt;判断极值点性质：Hessian 正定 → 严格极小值，负定 → 严格极大值，不定 → 鞍点。机器学习里分析损失函数形状、牛顿法优化全靠它&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;机器学习&lt;/td&gt;
					&lt;td&gt;最小二乘/线性回归的损失是二次型&lt;/td&gt;
					&lt;td&gt;损失函数 $L(w) = \lVert Xw - y \rVert^2$ 是正定二次型，所以它是碗状的、有唯一最小值——这保证了正规方程解的最优性&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;物理学&lt;/td&gt;
					&lt;td&gt;动能、势能常写成二次型&lt;/td&gt;
					&lt;td&gt;势能二次型正定 ⟺ 平衡位置稳定（系统在&amp;quot;碗底&amp;quot;），振动理论中的简正模分析&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;统计学&lt;/td&gt;
					&lt;td&gt;多元正态分布密度含 $(x-\mu)^T\Sigma^{-1}(x-\mu)$&lt;/td&gt;
					&lt;td&gt;协方差矩阵正定保证分布形态是&amp;quot;椭球形等高线&amp;quot;，马氏距离、置信椭球的理论基础&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一句话记住：&lt;strong&gt;二次型研究的是&amp;quot;碗的形状&amp;quot;——正定的二次型就是一个标准的碗，有唯一的底&lt;/strong&gt;。凡是涉及&amp;quot;最小值&amp;quot;的问题（优化、拟合、能量），最后几乎都要回到这个判断。&lt;/p&gt;
&lt;h2 id=&#34;八避坑技巧新人最容易犯的-9-个错误&#34;&gt;八、避坑技巧：新人最容易犯的 9 个错误&lt;/h2&gt;
&lt;h3 id=&#34;坑-1把行列式和矩阵当成一回事&#34;&gt;坑 1：把行列式和矩阵当成一回事&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;ldquo;行列式就是方矩阵，两者差不多。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：矩阵是一张数表，行列式是方阵对应的一个&lt;strong&gt;数&lt;/strong&gt;。两者连符号都不同：矩阵用方括号/圆括号，行列式用竖线。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：$\begin{pmatrix} 1 &amp;amp; 2 \\ 3 &amp;amp; 4 \end{pmatrix}$ 是一张表；$\begin{vmatrix} 1 &amp;amp; 2 \\ 3 &amp;amp; 4 \end{vmatrix} = -2$ 是一个数。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-2以为矩阵乘法可以交换&#34;&gt;坑 2：以为矩阵乘法可以交换&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;quot;$AB = BA$，反正乘法都能交换。&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：矩阵乘法一般不满足交换律，甚至 $AB$ 能算时 $BA$ 可能根本没有定义（维数对不上）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：$A = \begin{pmatrix} 1 &amp;amp; 1 \\ 0 &amp;amp; 1 \end{pmatrix}$，$B = \begin{pmatrix} 1 &amp;amp; 0 \\ 1 &amp;amp; 1 \end{pmatrix}$，算一下：$AB = \begin{pmatrix} 2 &amp;amp; 1 \\ 1 &amp;amp; 1 \end{pmatrix}$，而 $BA = \begin{pmatrix} 1 &amp;amp; 1 \\ 1 &amp;amp; 2 \end{pmatrix}$，并不相等。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-3由-ab--o-推出-a--o-或-b--o&#34;&gt;坑 3：由 $AB = O$ 推出 $A = O$ 或 $B = O$&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;ldquo;乘积是零矩阵，那至少有一个是零矩阵。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：矩阵乘法里&amp;quot;零因子&amp;quot;大量存在，$AB = O$ 推不出任何一方为零。只有当 $A$ 可逆时，才能两边左乘 $A^{-1}$ 推出 $B = O$。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：$A = \begin{pmatrix} 1 &amp;amp; 0 \\ 0 &amp;amp; 0 \end{pmatrix}$，$B = \begin{pmatrix} 0 &amp;amp; 0 \\ 0 &amp;amp; 1 \end{pmatrix}$，两者都非零，但 $AB = O$。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-4对四阶以上行列式用对角线法则&#34;&gt;坑 4：对四阶以上行列式用&amp;quot;对角线法则&amp;quot;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;ldquo;主对角线乘积减副对角线乘积，几阶都这么算。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：对角线法则只适用于&lt;strong&gt;二阶和三阶&lt;/strong&gt;。四阶行列式按定义有 $4! = 24$ 项，对角线法则只给出 8 项，必然漏项。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：四阶行列式应先用&amp;quot;倍加不变&amp;quot;造零，再按行展开；直接画对角线必错。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-5把行列式的变换规则套到方程组矩阵等价上&#34;&gt;坑 5：把行列式的变换规则套到方程组/矩阵等价上&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;ldquo;解方程组时对增广矩阵做列变换也没关系。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：解方程组只允许&lt;strong&gt;初等行变换&lt;/strong&gt;（列变换会打乱未知数的对应关系）；而化简行列式时行、列变换都可以用，但换行要变号、倍乘要提因子——两套规则不能混用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：求逆矩阵 $(A \mid E) \to (E \mid A^{-1})$ 全程只能行变换，做了列变换结果就错了。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-6以为-ka--kaa--b--a--b&#34;&gt;坑 6：以为 $|kA| = k|A|$、$|A + B| = |A| + |B|$&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;quot;$2A$ 的行列式就是 $|A|$ 的 2 倍&amp;quot;，&amp;quot;$|A+B| = |A| + |B|$&amp;quot;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：数乘矩阵是乘到&lt;strong&gt;每一行&lt;/strong&gt;，$n$ 阶时 $|kA| = k^n |A|$；行列式对加法没有分配律，$|A + B|$ 一般没法拆。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：$A = E_2$（二阶单位阵），$|2A| = 4$，但 $2|A| = 2$；$|E + E| = 4 \neq |E| + |E| = 2$。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-7把线性相关理解成每个向量都能被其余表示&#34;&gt;坑 7：把&amp;quot;线性相关&amp;quot;理解成&amp;quot;每个向量都能被其余表示&amp;quot;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;ldquo;线性相关就是组里每个向量都能由其他向量线性表示。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：只需要&lt;strong&gt;存在某一个&lt;/strong&gt;向量能被其余表示即可，不要求每个都行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：$\alpha_1 = (1, 0)$，$\alpha_2 = (2, 0)$，$\alpha_3 = (0, 1)$ 线性相关（$\alpha_2 = 2\alpha_1$），但 $\alpha_3$ 并不能由 $\alpha_1, \alpha_2$ 表示。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-8以为有-n-个特征值就一定能对角化&#34;&gt;坑 8：以为&amp;quot;有 $n$ 个特征值就一定能对角化&amp;quot;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;quot;$n$ 阶矩阵求出 $n$ 个特征值（含重根），就能对角化。&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：可对角化的充要条件是有 $n$ 个&lt;strong&gt;线性无关的特征向量&lt;/strong&gt;。特征值互不相同是充分条件；有重根时必须检查每个重根对应的线性无关特征向量个数是否等于其重数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：$A = \begin{pmatrix} 1 &amp;amp; 1 \\ 0 &amp;amp; 1 \end{pmatrix}$ 有二重特征值 $1$，但 $(E - A)x = 0$ 的解空间只有一维，凑不齐 2 个线性无关特征向量，故不可对角化。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;坑-9用顺序主子式非负判断正定&#34;&gt;坑 9：用&amp;quot;顺序主子式非负&amp;quot;判断正定&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;错误说法&lt;/strong&gt;：&amp;ldquo;各阶顺序主子式都 $\geq 0$，所以矩阵正定。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正确理解&lt;/strong&gt;：正定要求各阶顺序主子式&lt;strong&gt;严格大于 0&lt;/strong&gt;；&amp;ldquo;全部 $\geq 0$&amp;ldquo;连半正定都不能保证（半正定要求的是&lt;strong&gt;所有&lt;/strong&gt;主子式非负，不只是顺序主子式）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;例子&lt;/strong&gt;：$A = \begin{pmatrix} 1 &amp;amp; 0 \\ 0 &amp;amp; 0 \end{pmatrix}$ 的顺序主子式为 $1 \geq 0$、$0 \geq 0$，但取 $x = (0, 1)^T$ 时 $x^TAx = 0$，它只是半正定，不是正定。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;九学习建议与资源&#34;&gt;九、学习建议与资源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;学习顺序&lt;/strong&gt;：严格按&amp;quot;行列式 → 矩阵 → 方程组 → 向量组 → 特征值 → 二次型&amp;quot;的顺序走，不要跳章。每一章的工具都是为下一章准备的：行列式服务于可逆判定和特征方程，秩服务于解的判定和向量组，特征值服务于对角化和二次型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建立几何直觉&lt;/strong&gt;：强烈推荐 3Blue1Brown 的《线性代数的本质》系列视频（B 站有中文字幕），把矩阵看成&amp;quot;空间变换&amp;rdquo;、行列式看成&amp;quot;面积/体积的缩放比&amp;rdquo;、特征向量看成&amp;quot;变换中保持方向不变的轴&amp;quot;，很多抽象定理会一下子变得直观。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;教材与习题&lt;/strong&gt;：国内考研/期末主流是同济版《线性代数》，例题难度适中；想做难题和证明题可以看李尚志或丘维声的教材。每章至少亲手算 10 道题，尤其要把&amp;quot;初等行变换&amp;quot;练到不出错——它是求逆、求秩、解方程组、找极大无关组、求特征向量的共同基本功。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检验自己的三个问题&lt;/strong&gt;：学到一半时自问——秩到底是什么？为什么 $|A| \neq 0$ 等价于可逆、唯一解、列满秩、特征值全非零这一串结论？二次型化标准形为什么又回到了特征值？能把这条逻辑链讲清楚，这门课就算真正入门了。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;历史故事：把线性代数&amp;quot;讲活&amp;quot;的人。&lt;/strong&gt; MIT 教授吉尔伯特·斯特朗（Gilbert Strang）从教六十余年，他主讲的线性代数课程 18.06 是 MIT OpenCourseWare 在 2002 年首批上线的课程之一，全球观看量以千万计。他主张&amp;quot;先讲四个基本子空间和几何图像，再讲行列式计算&amp;quot;，这个教学顺序重塑了全世界线性代数课的讲法；他写的《线性代数导论》（Introduction to Linear Algebra）也成为全球使用最广的教材之一。前面推荐的 3Blue1Brown 那种&amp;quot;几何直觉优先&amp;quot;的风格，正是这一教学理念的延续。如果觉得同济教材太&amp;quot;干&amp;quot;，斯特朗的公开课录像是最值得补课的资源。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;线性代数是大学数学里&amp;quot;越往后越有用&amp;quot;的一门课：图形学、机器学习、搜索引擎、数据分析，处处都是矩阵。入门时觉得抽象是正常的——坚持把几何图像和代数计算对照起来看，第二次回头复习时会豁然开朗。&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
