秋招 AI 方向 —— 华为机考

发布于:2025-09-01 ⋅ 阅读:(22) ⋅ 点赞:(0)

2025 年 8 月 27 日 算法岗笔试题的 15 道单选题 + 5 道多选题 + 2 道机器学习编程题

题目及答案

单选题

  1. 下面这段代码执行的功能是什么?

    function forward(x, W, b):
        logits = Wx+b
        exp_values = exp(logits)
    	return exp_values / sum(exp_values)
    

    A A A. 全连接层 + S i g m o i d Sigmoid Sigmoid 激活

    B B B. 全连接层 + 全局池化操作

    C C C. 全连接层 + S o f t m a x Softmax Softmax 激活

    D D D. 全连接层 + 均值池化操作

    答案: C C C,实现的是全连接(线性变换)之后接 S o f t m a x Softmax Softmax 激活,把 l o g i t s logits logits 转成一组概率。

  2. T r a n s f o r m e r Transformer Transformer 中位置编码的主要作用是?

    A A A. 归一化输入

    B B B. 引入序列顺序信息

    C C C. 增加非线性

    D D D. 减少计算量

    答案: B B B,自注意力不含位置信息,位置编码用于给模型注入序列顺序。

  3. 线性方程组 4 x + y = 6 x + 3 y = 3 4x+y = 6x+3y=3 4x+y=6x+3y=3 初始解 ( x 0 , y 0 ) = ( 0 , 0 ) (x_0, y_0)=(0,0) (x0,y0)=(0,0),进行一次 J a v o b i Javobi Javobi 迭代后, ( x 1 , y 1 ) (x_1, y_1) (x1,y1) 是:

    A A A. ( 0 , 0 ) (0, 0) (0,0)

    B B B. ( 2 , 0.5 ) (2, 0.5) (2,0.5)

    C C C. ( 1 , 1 ) (1, 1) (1,1)

    D D D. ( 1.5 , 1 ) (1.5, 1) (1.5,1)

    答案: D D D,详见下文 Jacobi 迭代

  4. 关于大模型的"幻觉”( H a l l u c i n a t i o n Hallucination Hallucination)现象,下列说法错误的是

    A A A. 模糊或复杂的提示词输入可能导致幻觉

    B B B. 指模型生成看似合理但与事实不符的内容

    C C C. 增加训练数据的多样性可以完全消除幻觉

    D D D. 检索增强生成技术可缓解幻觉问题

    答案: C C C,训练多样性只能降低但不能“完全消除”幻觉。

  5. 已知矩阵 A A A 3 3 3 阶不可逆矩阵, α 1 , α 2 \alpha_1, \alpha_2 α1,α2是齐次线性方程组 A x = 0 Ax=0 Ax=0 的基础解系, α 3 \alpha_3 α3 是矩阵 A A A 属于特征值 λ = 2 \lambda = 2 λ=2 的特征向量,则不是矩阵特征向量的是:

    A A A. α 1 + 2 α 2 \alpha_1 + 2 \alpha_2 α1+2α2

    B B B. − 5 α 3 -5 \alpha_3 5α3

    C C C. 3 α 1 − 4 α 2 3 \alpha_1 - 4 \alpha_2 3α14α2

    D D D. 2 α 1 + α 3 2 \alpha_1 + \alpha_3 2α1+α3

    答案: D D D,详见下文 特征值和特征向量

  6. K m e a n s Kmeans Kmeans 算法(采用欧式距离)中,存在 4 4 4 个簇,簇 C 1 C_1 C1 的中心为 [ 1 , 1 ] [1, 1] [1,1],簇 C 2 C_2 C2 的中心为 [ 1 , − 1 ] [1, -1] [1,1],簇 C 3 C_3 C3 的中心为 [ − 1 , − 1 ] [-1, -1] [1,1],簇 C 4 C_4 C4 的中心为 [ − 1 , 1 ] [-1, 1] [1,1],则样本 [ 2 , − 2 ] [2, -2] [2,2] 属于:

    A A A. 簇 C 3 C_3 C3

    B B B. 簇 C 1 C_1 C1

    C C C. 簇 C 2 C_2 C2

    D D D. 簇 C 4 C_4 C4

    答案: C C C,计算到各中心的欧式(平方)距离,到 C 2 C_2 C2 的距离为 2, 最小。

  7. 矩阵 A = [ 1 2 3 4 5 6 7 8 9 ] A = \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} A= 147258369 的零空间维度是?

    A A A. 1 1 1

    B B B. 2 2 2

    C C C. 0 0 0

    D D D. 3 3 3

    答案: A A A,矩阵 A A A 的秩为 r a n k ( A ) = 2 rank(A) = 2 rank(A)=2,第三行与前两行相关,零空间维数为 3 − 2 = 1 3-2=1 32=1。详见下文 矩阵的秩

  8. 对于一个 n × n n \times n n×n 的实对称矩阵 A A A,以下哪个说法是正确的?

    A A A. A A A 的特征值一定都是实数

    B B B. A A A 的奇异值一定都是复数

    C C C. A A A 不能进行 Q R QR QR 分解

    D D D. A A A 一定可以进行 L U LU LU 分解

    答案: A A A,详见下文 实对称矩阵LU 分解和 QR 分解

  9. 关于奇异值分解( S V D SVD SVD),以下说法错误的是:

    A A A. 奇异值矩阵 ∑ \sum 的对角元素非负且按降序排列

    B B B. S V D SVD SVD 适用于任意 m × n m \times n m×n 矩阵

    C C C. 左奇异向量是 A A T A A^T AAT 的特征向量

    D D D. S V D SVD SVD 唯一确定,即分解结果 U , ∑ , V U, \sum, V U,,V 唯一

    答案: D D D,详见下文 SVD 分解

  10. 若某项目有 n n n 位选手,每两人之间都要进行一次对战(即总共进行 ( n 2 ) \binom{n}{2} (2n) 场比赛),最终按胜场数排名,胜场数最高的前 m m m 人晋级决赛,第 m m m 名若出现胜场数并列,则需进行加赛,因此不能保证晋级。请问,一个选手最少需要赢几场才能确保晋级? ⌈ ∗ ⌉ \lceil * \rceil 表示向上取整

    A A A. ⌈ ( 2 n − m − 1 ) 2 ⌉ \lceil\frac{(2n-m-1)}{2}\rceil 2(2nm1)

    B B B. ⌈ ( m − 1 ) 2 ⌉ \lceil\frac{(m-1)}{2}\rceil 2(m1)

    C C C. ⌈ ( m − 1 ) + ( n − 1 ) + 1 m − n + 1 ⌉ \left\lceil \frac{(m-1)+(n-1)+1}{m-n+1} \right\rceil mn+1(m1)+(n1)+1

    D D D. ⌈ ( m − 1 ) n m ⌉ \left\lceil \frac{(m-1)n}{m} \right\rceil m(m1)n

    答案: D D D。晋级需确保胜场数大于剩余 n − m n-m nm 人可能胜场,公式推导得 ⌈ ( m − 1 ) n m ⌉ \left\lceil \frac{(m-1)n}{m} \right\rceil m(m1)n

  11. 任何一个连续型随机变量的概率密度中 ϕ ( x ) \phi(x) ϕ(x) 一定满足

    A A A. 在定义域内单调不减

    B B B. ϕ ( x ) ≥ 1 \phi(x) \geq 1 ϕ(x)1

    C C C. 0 ≤ ϕ ( x ) ≤ 1 0 \leq \phi(x) \leq 1 0ϕ(x)1

    D D D. ∫ − ∞ + ∞ ϕ ( x )   d x = 1 \int_{-\infty}^{+\infty} \phi(x)\, dx = 1 +ϕ(x)dx=1

    答案: D D D。概率密度函数要求非负且积分为 1。

  12. 在支持向量机( S V M SVM SVM)中,假设你正在处理一个非线性可分的数据集,并选择了径向基函数( R B F RBF RBF)作为核函数。如果调整参数 C C C (正则化参数)和 γ \gamma γ (核系数)的值,以下哪一项最准确地描述了这两个参数对模型复杂度和泛化能力的影响?

    A A A. 减小 C C C 增加正则化强度,使模型更简单;减小 γ \gamma γ 使决策边界更加平滑,但可能导致欠拟合

    B B B. 减小 C C C 减少正则化强度,使模型更复杂;减小 γ \gamma γ 使决策边界更加灵活,但可能导致过拟合

    C C C. 增大 C C C 减少正则化强度,使模型更复杂;增大 γ \gamma γ 使决策边界更加灵活,但可能导致过拟合

    D D D. 增大 C C C 增加正则化强度,使模型更简单;增大 γ \gamma γ 使决策边界更加平滑,但可能导致欠拟合

    答案: C C C,增大 C C C → \rightarrow 减弱正则 → \rightarrow 模型更复杂;增大 γ \gamma γ → \rightarrow 边界更灵活;均增加过拟合风险。详见 支持向量机

  13. T o k e n i z e r Tokenizer Tokenizer 的核心作用是什么?

    A A A. 把文本翻译成中文

    B B B. 把文本变成浮点向量

    C C C. 把文本翻译成英文

    D D D. 把文本变成整数序列

    答案: D D D

  14. A A A B B B 为随机事件,且 P ( A ) = 0.5 P(A)=0.5 P(A)=0.5 P ( B ) = 0.6 P(B)=0.6 P(B)=0.6 P ( B ∣ A ) = 0.8 P(B|A)=0.8 P(BA)=0.8,则 P ( B ∪ A ) = P(B \cup A) = P(BA)=

    A A A. 0.7 0.7 0.7

    B B B. 1.1 1.1 1.1

    C C C. 0.3 0.3 0.3

    D D D. 0.8 0.8 0.8

    答案: A A A。容斥原理(加法规则),基本公式为: P ( B ∪ A ) = P ( A ) + P ( B ) − P ( A ∩ B ) P(B \cup A) = P(A) + P(B) - P(A \cap B) P(BA)=P(A)+P(B)P(AB),又由条件概率, P ( A ∩ B ) = P ( B ∣ A ) P ( A ) P(A\cap B) = P(B|A)P(A) P(AB)=P(BA)P(A),可得 0.5 + 0.6 − 0.8 ⋅ 0.5 = 0.7 0.5 + 0.6 - 0.8 \cdot 0.5 = 0.7 0.5+0.60.80.5=0.7

  15. 设总体 X X X 的概率分布为 P ( X = 1 ) = 1 − θ 2 P(X=1)=\frac{1-\theta}{2} P(X=1)=21θ P ( X = 2 ) = P ( X = 3 ) = 1 + θ 4 P(X=2)=P(X=3)=\frac{1+\theta}{4} P(X=2)=P(X=3)=41+θ,利用来自总体的样本值 2 , 2 , 1 , 3 , 1 , 3 , 1 , 2 2,2,1,3,1,3,1,2 2,2,1,3,1,3,1,2,可得 θ \theta θ 的最大似然估计值为

    A A A. 1 / 2 1/2 1/2

    B B B. 3 / 5 3/5 3/5

    C C C. 1 / 4 1/4 1/4

    D D D. 2 / 5 2/5 2/5

    答案: C C C

多选题

  1. 对线性方程组: { 5 x + y = 2 x + 3 y = 4 \begin{cases} 5x + y = 2 \\ x + 3y = 4 \end{cases} {5x+y=2x+3y=4 使用高斯-赛德尔迭代法,初始值 ( x ( 0 ) , y ( 0 ) ) = ( 0 , 0 ) (x^{(0)}, y^{(0)}) = (0, 0) (x(0),y(0))=(0,0)。下列结果正确的是?

    A A A. 经过两步迭代: x ( 2 ) = 0.08 , y ( 2 ) = 1.28 x^{(2)} = 0.08, y^{(2)} = 1.28 x(2)=0.08,y(2)=1.28

    B B B. x ( 1 ) = 0.4 x^{(1)} = 0.4 x(1)=0.4

    C C C. 迭代矩阵的谱半径 ρ ( B G s ) > 1 \rho (B_{Gs}) > 1 ρ(BGs)>1,方法发散

    D D D. y ( 1 ) = 1.2 y^{(1)} = 1.2 y(1)=1.2

    答案: B B B D D D,详见下文 Gauss–Seidel 迭代

  2. 你想使用朴素贝叶斯分类器来过滤垃圾邮件。该模型的核心是贝叶斯公式 P ( class ∣ features ) ∝ P ( features ∣ class ) ∗ P ( class ) P(\text{class}|\text{features}) \propto P(\text{features}|\text{class}) * P(\text{class}) P(classfeatures)P(featuresclass)P(class)。为了让这个模型有效工作,你需要从训练数据中估计哪些概率值?

    A A A.在给定类别下,每个特征(例如,每个单词)出现的条件概率 P ( 单词 ∣ 类别 ) P(单词|类别) P(单词类别)

    B B B. 每个类别的先验概率 P ( 类别 ) P(类别) P(类别),例如 P ( 垃圾邮件 ) P(垃圾邮件) P(垃圾邮件) P ( 正常邮件 ) P(正常邮件) P(正常邮件)

    C C C. 特征之间的联合概率 P ( 单词 1 , 单词 2 ∣ 类别 ) P(单词1,单词2|类别) P(单词1,单词2∣类别)

    D D D. 每个特征的边缘概率 P ( 单词 ) P(单词) P(单词)

    答案: A A A B B B,详见下文 朴素贝叶斯

  3. 在卷积神经网络(CNN)中,以下操作属于线性变换的是:

    A A A. 卷积操作

    B B B. 激活函数 R e L U ReLU ReLU

    C C C. 全连接层

    D D D. 池化操作

    答案: A A A C C C,激活函数本来就是为了引入非线性的,最大池化显然也是非线性的。详见下文 卷积、池化、全连接层和激活函数

  4. 下面关于决策树、 X G B o o s t XGBoost XGBoost 算法的说法,正确的有?

    A A A. X G B o o s t XGBoost XGBoost 不支持正则化机制,无法控制树的复杂度,因此在高维稀疏数据上容易过拟合。

    B B B. 决策树通过最小化节点不纯度进行分裂,因此深度越大,训练误差越小,模型泛化性能也越好。

    C C C. X G B o o s t XGBoost XGBoost 在每轮迭代中对损失函数进行二阶泰勒展开,利用梯度和 H e s s i a n Hessian Hessian 信息构建新弱学习器,提升收敛速度与预测精度。

    D D D. 基尼不纯度用于衡量节点中样本的类别纯度,其值越大表示样本类别越混杂,常用于分类树的分裂标准。

    答案: C C C D D D,详见下文 XGBoost 算法

  5. 一位工程师正在为一个包含大量专业术语(如医疗、法律文书)的知识库构建一个 R A G RAG RAG(检索增强生成)系统。在设计和调试文本处理与检索流程时,他得出了一系列结论。请判断下列结论中,哪些是准确的?

    A A A. 一个标准的 R A G RAG RAG 系统在处理用户请求时,其信息流是:先将用户的文本查询转换为一个查询向量,用此向量在数据库中检索出最相似的若干个文档块的向量,然后将这些文档块的原始文本(而非它们的向量)与原始查询一同作为上下文,提供给大语言模型( L L M LLM LLM)生成最终答案。

    B B B. 在进行文档切分( C h u n k i n g Chunking Chunking)时,选择一个极小的、固定的切分尺寸(如 32 32 32 t o k e n token token)是最佳策略,因为它能最大化每个文本块( c h u n k chunk chunk)的语义集中度,从而确保向量检索的精准性。

    C C C. 使用一个在通用网络文本上预训练的 T o k e n i z e r Tokenizer Tokenizer 处理这些专业文档时,许多专业术语会被切分成多个通用子词( s u b − w o r d sub-word subword)。这种切分会“稀释"原术语的特定义,可能导致其生成的 E m b e d d i n g Embedding Embedding 向量质量下降。

    D D D. 为了优化线上服务的推理速度和成本,可以采用一个强大的重量级模型来离线处理所有文档并生 E m b e d d i n g Embedding Embedding,同时在线上使用一个轻量级模型来实时编码用户的查询( Q u e r y Query Query),只要这两个模型都属于同一系列(如都是 B E R T BERT BERT 的变体)即可。

    答案: A A A C C C
    A A A 正确: R A G RAG RAG 流程为查询向量化检索文本后送 L L M LLM LLM C C C 正确:通用 t o k e n i z e r tokenizer tokenizer 切分专业术语会稀释语义; B B B 错误:块过小破坏上下文; D D D 错误:离线在线模型需一致确保向量空间对齐。详见 检索增强生成:RAG

机器学习编程题

1. 标签样本数量

题目内容

K N N KNN KNN 算法的核心思想是,如果一个样本在特征空间中的 K K K 个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。请按照下面的步理,实现 K N N KNN KNN 算法。

K N N KNN KNN 算法说明:

计算待分类点到其他样本点的距离;

通过距离进行排序,选择距离最小的 K K K 个点;提取这 K K K 个临近点的类别,根据少数服从多数的原则,将 占比最多的那个标签 赋值给 待分类样本点的 l a b e l label label

本题说明:

1、给定数据集中,默认每一类标签都存在数据,不存在某类型数量为 0 0 0 的场景;

2、为消除不同特征权重问题,给出数据均已做好归一化处理,并保留两位小数;

3、出现并列第一的情形时,取并列第一的样本中,最近邻居的标签返回;

4、距离函数定义为: d x , y = ∑ i = 1 n ( x i − y i ) 2 d_{x,y} = \sqrt{\sum_{i=1}^n(x_i-y_i)^2} dx,y=i=1n(xiyi)2

输入描述

1 1 1 行: k m n s kmns kmns k k k 代表每次计算时选取的最近邻居个数(不大于 20 20 20 ), m m m 代表样本数量(不大于 200 200 200 ), n n n 代表样本维度(不包括标签,不大于 5 5 5 ), s s s 代表类别个数(不大于 5 5 5);

2 2 2 行:待分类样本。

3 3 3 行 ~ 第 m + 2 m+2 m+2 行: m m m 个样本,每一行 n + 1 n+1 n+1 列,最后一列为类别标签 l a b e l label label

输出描述

输出待分类样本的类别标签及距离最小的 K K K 个点中的该标签样本数量。

样例1

输入:

3 10 2 3
0.81 0.64
0.19 0.2 1.0
0.18 0.14 0.0
0.76 0.58 1.0
0.4 0.16 1.0
0.98 0.85 0.0
0.42 0.97 1.0
0.75 0.26 1.0
0.24 0.06 1.0
0.97 0.8 0.0
0.21 0.1 2.0

输出:

0 2

说明

1 1 1 行输入说明输入了 m = 10 m=10 m=10 个样本,每个样本有 n = 2 n=2 n=2 个维度的数据(去除最后一列标签),共有 s = 3 s=3 s=3 种类别;

2 2 2 行输入待分类样本的 n n n 维数据;

从第 3 3 3 行到第 12 12 12 行的前两列数据为输入的 m = 10 m=10 m=10 个样本,每个样本有 n = 2 n=2 n=2 个维度的数据 + 最后一列的标签数据;

待分类样本 [ 0.81 , 0.64 ] [0.81, 0.64] [0.81,0.64] 最近的前 k = 3 k=3 k=3 个邻居分别为: [ 0.76 , 0.58 ] , [ 0.98 , 0.85 ] , [ 0.97 , 0.8 ] [0.76, 0.58],[0.98, 0.85], [0.97,0.8] [0.76,0.58],[0.98,0.85],[0.97,0.8],分别有 2 2 2 0 0 0 号标签和 1 1 1 1 1 1 号标签, 0 0 0 号标签占多,返回 0 0 0 以及标签 0 0 0 的样本数量 2 2 2

样例2

输入:

6 10 2 4
0.78 0.63
0.57 0.07 1.0
0.5 0.13 1.0
0.83 0.07 3.0
0.27 0.87 3.0
0.81 0.44 2.0
0.21 0.73 3.0
0.45 0.91 1.0
0.12 0.22 2.0
0.25 0.48 0.0
0.54 0.87 1.0

输出:

1 2

说明

本样例的距离最小的 6 6 6 个样本中,标签 1 1 1 和标签 3 3 3 出现次数都是 2 2 2 次,并列第一;虽然 [ 0.8 , 0.44 ] [0.8,0.44] [0.8,0.44] 距离样本最近,但其标签 2 2 2 不是出现最多的,排除在下一轮统计样本中此时需要从标签 1 1 1 和标签 3 3 3 中的样本中,选取距离最近的 [ 0.54 , 0.87 ] [0.54,0.87] [0.54,0.87] 的标签 1 1 1 作为返回值,并同时返回标签 1 1 1 的样本数量 2 2 2

解题思路

2. F1 值最优的决策树剪枝

知识点

线性代数

特征值和特征向量

3Blue1Brown 特征向量与特征值

比如下面这个 二维空间中的线性变换,把 i i i 基向量变换到 ( 3 , 0 ) (3, 0) (3,0),把 j j j 基向量变换到 ( 1 , 2 ) (1, 2) (1,2),如果用矩阵来表示该线性变换,它的列就是这两个变换后的基向量,
在这里插入图片描述
大部分向量在变换中都离开了 其张成的空间,即该向量所在的直线,不过 某些向量在变换中的确留在了其张成的空间,意味着 矩阵对它的作用仅仅是拉伸或压缩而已,如同一个标量。

例如, i i i 基向量变成了原来的 3 倍,仍留在 x x x 轴上, x x x 轴上的任何其他向量都只是被拉伸为原来的 3 倍;还有一个 ( − 1 , 1 ) (-1, 1) (1,1),它在变换中也留在自己张成的空间里,最终被拉伸为 2 倍。
在这里插入图片描述

这些特殊向量(留在它们张成的空间),就被称为变换的 特征向量,每个特征向量对应的其在变换中拉伸或压缩比例的值,叫做该特征向量的 特征值

考虑一个 三维空间中的旋转,如果你能找到这个旋转的 特征向量,也就是留在它张成的空间里的向量,那么你找到的就是 旋转轴

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
当且仅当 矩阵所代表的变换将空间压缩到更低的维度时,才会存在一个非零向量,使得矩阵和它的乘积为零向量,而 空间压缩对应的就是矩阵的行列式为零

在这里插入图片描述 在这里插入图片描述

  • 同一特征值对应的特征向量任意非零线性组合 仍然是 该特征值的特征向量(构成该特征值的特征子空间)。
  • 不同特征值对应的特征向量 之间一般 线性无关,且它们的 非平凡线性组合通常不是特征向量(除非组合恰好退化成某一特征子空间内的向量)。

本题中,已知 α 1 , α 2 \alpha_1,\alpha_2 α1,α2 是齐次方程 A x = 0 A x=0 Ax=0 的基础解系,说明 A α 1 = 0 ,    A α 2 = 0 A\alpha_1=0,\;A\alpha_2=0 Aα1=0,Aα2=0。所以 α 1 , α 2 \alpha_1,\alpha_2 α1,α2 都是对应特征值 λ = 0 \lambda=0 λ=0 的特征向量,且任意非零线性组合(例如 α 1 + 2 α 2 \alpha_1+2\alpha_2 α1+2α2 3 α 1 − 4 α 2 3\alpha_1-4\alpha_2 3α14α2)仍然是特征值 0 的特征向量。

已知 α 3 \alpha_3 α3 是对应特征值 λ = 2 \lambda=2 λ=2 的特征向量,所以任意非零标量倍数(例如 − 5 α 3 -5\alpha_3 5α3)仍是特征向量。

检查 D D D v = 2 α 1 + α 3 v=2\alpha_1+\alpha_3 v=2α1+α3 A v = 2 A α 1 + A α 3 = 2 ⋅ 0 + 2 α 3 = 2 α 3 . A v = 2A\alpha_1 + A\alpha_3 = 2\cdot 0 + 2\alpha_3 = 2\alpha_3. Av=2Aα1+Aα3=20+2α3=2α3. v v v 是某个特征值 θ \theta θ 对应的特征向量,则需满足 A v = θ v = θ ( 2 α 1 + α 3 ) A v = \theta v = \theta(2\alpha_1+\alpha_3) Av=θv=θ(2α1+α3)。比较两边得到
2 α 3 = 2 θ α 1 + θ α 3 . 2\alpha_3 = 2\theta\alpha_1 + \theta\alpha_3. 2α3=2θα1+θα3.

由于 α 1 \alpha_1 α1(属于 eigenspace λ = 0 \lambda=0 λ=0)与 α 3 \alpha_3 α3(属于 eigenspace λ = 2 \lambda=2 λ=2)是线性无关的(不同特征值对应的特征向量线性无关),上式在 α 1 , α 3 \alpha_1,\alpha_3 α1,α3 基下等价于两个标量方程:
2 θ = 0 , θ = 2 , 2\theta = 0,\qquad \theta = 2, 2θ=0,θ=2,

不可能同时成立。因此 2 α 1 + α 3 2\alpha_1+\alpha_3 2α1+α3 不是任何特征值的特征向量(除非它是零向量,但明显不是)。

特征值 VS 奇异值

  • 特征值 / 特征向量(eigen):告诉有没有 固定方向(不改变方向、只被缩放或反向)的向量,以及对应的缩放因子 λ \lambda λ。适合分析 把某些方向保持不变的变换(尤其对称矩阵很有用)。

    特征值 / 特征向量( A v = λ v Av=\lambda v Av=λv

    • 含义:存在方向 v v v(称特征向量),作用 A A A 后只把 v v v 缩放(或反向)为 λ v \lambda v λv
    • 特征值可以为负或复数(例如 旋转的特征值是复数 cos ⁡ θ ± i sin ⁡ θ \cos\theta\pm i\sin\theta cosθ±isinθ),不一定非负。
  • 奇异值 / 奇异向量(singular):告诉任意线性变换把 单位球 变成 椭球 时,椭球的半轴长度(非负),以及这些轴在输入/输出空间的方向。奇异值总是非负实数,对任意矩阵都存在。

    奇异值 / 奇异向量(SVD 的语境)

    • 定义:奇异值 σ i \sigma_i σi矩阵 A T A A^T A ATA 的非负特征值的平方根
      σ i = eigenvalue i ( A T A ) . \sigma_i = \sqrt{\text{eigenvalue}_i(A^T A)}. σi=eigenvaluei(ATA) .
      对应的右奇异向量 v i v_i vi A T A A^T A ATA 的特征向量,左奇异向量 u i u_i ui A A T A A^T AAT 的特征向量。
    • 存在性:对任意矩阵(方阵或非方阵、可逆或不可逆)都存在 SVD,因此 奇异值总有定义且为非负实数
    • 几何意义(最重要的直观):把单位球 { x : ∥ x ∥ = 1 } \{x:\|x\|=1\} {x:x=1} 在变换 A A A 下映成一个椭球。这个椭球的 半轴长度 就是奇异值 σ 1 ≥ σ 2 ≥ ⋯ \sigma_1\ge\sigma_2\ge\cdots σ1σ2
      • V V V 的列(右奇异向量)给出输入空间中被映为这些半轴方向的原始方向;
      • U U U 的列(左奇异向量)给出输出空间中椭球半轴的方向;
      • Σ \Sigma Σ 的对角元就是相应的伸缩长度(奇异值)。
    • 性质:奇异值非负;按大小排序,最大奇异值等于算子范数(spectral norm,最大放大倍数)。如果最小奇异值为 0,说明矩阵欠秩(不可逆)。

几何图像

  • 特征值/向量 = “哪条直线被直接拉长/缩短 不改变方向
  • 奇异值/向量 = “把单位圆(球)变成椭圆(椭球)奇异值是半轴长度,左右两个正交方向分别是输入与输出的主方向”。

矩阵的秩

3Blue1Brown 逆矩阵、列空间与零空间
当变换的结果是一条直线时,也就是说结果是一维的,称这个 变换的秩 为 1;如果变换后的向量落在一个二维平面上,称这个 变换的秩 为 2,所以说, 代表 变换后空间的维数

如果一个三维变换的行列式为零,并且 变换结果仍旧充满整个三维空间,那么它的秩为 3。

矩阵的列告诉了基向量变换后的位置,这些 变换后的基向量张成的空间 就是所有可能的变换结果,换句话说,列空间就是矩阵的列所张成的空间。所以秩的更精确的定义是列空间(或行空间)的维数,表示列向量(或行向量)中 线性无关向量的最大个数

当秩达到最大值时,意味着秩与列数相等,称之为 “满秩”。注意,零向量一定被包含在列空间中,因为线性变换必须保持原点位置不变
对一个满秩变换来说,唯一能在变换后落在原点的就是零向量自身,但对一个 非满秩的矩阵 来说,它 将空间压缩到一个更低的维度上

矩阵 A = [ 1 2 3 4 5 6 7 8 9 ] A=\begin{bmatrix}1&2&3\\[4pt]4&5&6\\[4pt]7&8&9\end{bmatrix} A= 147258369 ,对其做 初等行变换行最简阶梯形

  1. R 2 ← R 2 − 4 R 1 R_2\leftarrow R_2-4R_1 R2R24R1 R 3 ← R 3 − 7 R 1 R_3\leftarrow R_3-7R_1 R3R37R1
    [ 1 2 3 0 − 3 − 6 0 − 6 − 12 ] . \begin{bmatrix}1&2&3\\0&-3&-6\\0&-6&-12\end{bmatrix}. 1002363612 .
  2. R 3 ← R 3 − 2 R 2 R_3\leftarrow R_3-2R_2 R3R32R2
    [ 1 2 3 0 − 3 − 6 0 0 0 ] . \begin{bmatrix}1&2&3\\0&-3&-6\\0&0&0\end{bmatrix}. 100230360 .
  3. 将第2行除以 − 3 -3 3 R 2 ← R 2 / ( − 3 ) R_2\leftarrow R_2/(-3) R2R2/(3),得到
    [ 1 2 3 0 1 2 0 0 0 ] . \begin{bmatrix}1&2&3\\0&1&2\\0&0&0\end{bmatrix}. 100210320 .
  4. 用第2行消去第1行的第2列: R 1 ← R 1 − 2 R 2 R_1\leftarrow R_1-2R_2 R1R12R2,得到行最简阶梯形
    [ 1 0 − 1 0 1 2 0 0 0 ] . \begin{bmatrix}1&0&-1\\0&1&2\\0&0&0\end{bmatrix}. 100010120 .

从上面的行简化结果可以看出 主元(pivot)在第 1 列和第 2 列,共 2 个,所以矩阵的秩 rank ⁡ ( A ) = 2 \operatorname{rank}(A)=2 rank(A)=2

矩阵是 3 × 3 3\times3 3×3,由 秩-零空间维数定理(Rank–Nullity): rank ( A ) + nullity ( A ) = n = 3. \text{rank}(A)+\text{nullity}(A)=n=3. rank(A)+nullity(A)=n=3.

因此零空间(nullspace)的维度为 nullity ( A ) = 3 − 2 = 1. \text{nullity}(A)=3-2=1. nullity(A)=32=1.

可以顺便写出零空间的一个基:设 x = [ x 1 , x 2 , x 3 ] T x=[x_1,x_2,x_3]^T x=[x1,x2,x3]T 满足 A x = 0 Ax=0 Ax=0。由行约简得到方程组
x 1 − x 3 = 0 , x 2 + 2 x 3 = 0. x_1 - x_3 =0,\qquad x_2 + 2x_3 =0. x1x3=0,x2+2x3=0.
令自由变量 x 3 = t x_3=t x3=t,得到 x = t [ 1 − 2 1 ] . x = t\begin{bmatrix}1\\-2\\1\end{bmatrix}. x=t 121 . 所以零空间是一维,基向量可取 [ 1 , − 2 , 1 ] T [1,-2,1]^T [1,2,1]T

  • rank ( A ) = n \text{rank}(A)=n rank(A)=n(方阵满秩),则 A A A 可逆( det ⁡ ( A ) ≠ 0 \det(A)\neq0 det(A)=0);否则不可逆(本题 det ⁡ A = 0 \det A=0 detA=0)。
  • 线性方程组 A x = b Ax=b Ax=b 可解性的判定与秩有关:若 rank ⁡ ( A ) = rank ⁡ ( [ A    ∣    b ] ) \operatorname{rank}(A)=\operatorname{rank}([A\;|\;b]) rank(A)=rank([Ab]) 则有解;否则无解。解的自由度(自由变量个数)等于 n − rank ⁡ ( A ) n-\operatorname{rank}(A) nrank(A)

线性方程组的迭代解法(Jacobi)

Jacobi 迭代的思想:把 每个未知量用“其他未知量”的旧值表示 出来,然后 并行更新所有未知量

对于第 i i i 个未知量 x i x_i xi,要得到一个 显式的更新公式
x i ( k + 1 ) = (常数) + ∑ j ≠ i (系数) ⋅ x j ( k ) x_i^{(k+1)} = \text{(常数)} + \sum_{j\ne i} \text{(系数)}\cdot x_j^{(k)} xi(k+1)=(常数)+j=i(系数)xj(k)
为了得到这样的显式公式,必须把第 i i i 个方程 整理成“关于 x i x_i xi 的等式”(即把 x i x_i xi 单独放左边,右边只含常数和其他变量)。

本题中,第一个方程要写成 x = ⋯ x=\cdots x=,第二个写成 y = ⋯ y=\cdots y=。方程组是
{ 4 x + y = 6 , x + 3 y = 3. \begin{cases} 4x+y=6,\\ x+3y=3. \end{cases} {4x+y=6,x+3y=3.

对第一个方程“解出 x x x”,对第二个方程“解出 y y y”得到
x = 6 − y 4 , y = 3 − x 3 x=\frac{6-y}{4}, \quad y=\frac{3-x}{3} x=46y,y=33x

这就是 Jacobi 的 更新公式
x ( k + 1 ) = 6 − y ( k ) 4 , y ( k + 1 ) = 3 − x ( k ) 3 . x^{(k+1)}=\frac{6-y^{(k)}}{4},\qquad y^{(k+1)}=\frac{3-x^{(k)}}{3}. x(k+1)=46y(k),y(k+1)=33x(k).

注意 右边都用到的是上一轮的 x ( k ) , y ( k ) x^{(k)},y^{(k)} x(k),y(k)。这正是 Jacobi 并行更新的要点。

矩阵/通用形式:设 A x = b A\mathbf x=\mathbf b Ax=b。把 A A A 分解为对角 D D D、严格下三角 L L L、严格上三角 U U U A = D + L + U A=D+L+U A=D+L+U。Jacobi 迭代写成
x ( k + 1 ) = D − 1 ( b − ( L + U ) x ( k ) ) . \mathbf x^{(k+1)} = D^{-1}\bigl(\mathbf b - (L+U)\mathbf x^{(k)}\bigr). x(k+1)=D1(b(L+U)x(k)).
这也说明:每一步要用 D − 1 D^{-1} D1(即把对角元素取倒数)去“解出”每个分量 x i x_i xi,因此每个方程都被整理为“关于自身未知量”的显式表达式。
前提条件对角元素不能为 0(否则无法求 D − 1 D^{-1} D1);收敛性通常还需要一定条件(例如严格对角占优或谱半径 < 1)。

给定初始解 ( x ( 0 ) , y ( 0 ) ) = ( 0 , 0 ) (x^{(0)},y^{(0)})=(0,0) (x(0),y(0))=(0,0),代入得到一次迭代的值:

  • x ( 1 ) = 6 − y ( 0 ) 4 = 6 − 0 4 = 6 4 = 1.5. x^{(1)} = \dfrac{6 - y^{(0)}}{4} = \dfrac{6-0}{4} = \dfrac{6}{4} = 1.5. x(1)=46y(0)=460=46=1.5.
  • y ( 1 ) = 3 − x ( 0 ) 3 = 3 − 0 3 = 1. y^{(1)} = \dfrac{3 - x^{(0)}}{3} = \dfrac{3-0}{3} = 1. y(1)=33x(0)=330=1.

所以 ( x 1 , y 1 ) = ( 1.5 ,   1 ) (x_1,y_1)=(1.5,\,1) (x1,y1)=(1.5,1)

补充:与 Gauss–Seidel 的区别

  • Jacobi:计算 x ( k + 1 ) x^{(k+1)} x(k+1) y ( k + 1 ) y^{(k+1)} y(k+1) 时都只用上一次的值 x ( k ) , y ( k ) x^{(k)},y^{(k)} x(k),y(k)并行更新)。
  • Gauss–Seidel先用上一次值算出 x ( k + 1 ) x^{(k+1)} x(k+1),再马上用这个新的 x ( k + 1 ) x^{(k+1)} x(k+1) 去算 y ( k + 1 ) y^{(k+1)} y(k+1)顺序更新)。

在本例,如果用 Gauss–Seidel,从 ( 0 , 0 ) (0,0) (0,0) 一次迭代会得到 x ( 1 ) = 1.5 x^{(1)}=1.5 x(1)=1.5,然后 y ( 1 ) = ( 3 − 1.5 ) / 3 = 0.5 y^{(1)}=(3-1.5)/3=0.5 y(1)=(31.5)/3=0.5,结果为 ( 1.5 ,   0.5 ) (1.5,\,0.5) (1.5,0.5)

Jacobi 有用 因为它 简单、并行友好且对稀疏问题天然适配,虽然单独用时可能慢,但它是构造更复杂高效方法(如 multigrid、预条件 Krylov 方法)里的重要模块。

  • 求解 大型稀疏线性方程组 A x = b A \mathbf x=b Ax=b,尤其是来自 偏微分方程(PDE)离散化 的问题(如 Poisson、热传导、流体动力学等)。这些问题 矩阵很大、稀疏,直接解(LU)成本高且内存占用大,迭代法更合适。

  • 并行 / 分布式计算场景:Jacobi 的并行化开销小,适合在多核/多机上实现。

线性方程组的迭代解法(Gauss–Seidel)

考察点:需要会写 Gauss–Seidel 的逐分量更新公式、做几步迭代,并能判断迭代矩阵的谱半径或用对角占优等充分条件判断收敛性。

  1. 写出 Gauss–Seidel 的更新公式(按行顺序代入最新值):
    { x ( k + 1 ) = 2 − y ( k ) 5 , y ( k + 1 ) = 4 − x ( k + 1 ) 3 . \begin{cases} x^{(k+1)}=\dfrac{2-y^{(k)}}{5},\\[6pt] y^{(k+1)}=\dfrac{4-x^{(k+1)}}{3}. \end{cases} x(k+1)=52y(k),y(k+1)=34x(k+1).

  2. ( x ( 0 ) , y ( 0 ) ) = ( 0 , 0 ) (x^{(0)},y^{(0)})=(0,0) (x(0),y(0))=(0,0) 进行迭代:

    • 第一步:
      x ( 1 ) = 2 − 0 5 = 0.4 , y ( 1 ) = 4 − 0.4 3 = 3.6 3 = 1.2. x^{(1)}=\frac{2-0}{5}=0.4,\qquad y^{(1)}=\frac{4-0.4}{3}=\frac{3.6}{3}=1.2. x(1)=520=0.4,y(1)=340.4=33.6=1.2.

      所以 x ( 1 ) = 0.4 x^{(1)}=0.4 x(1)=0.4 B B B 正确), y ( 1 ) = 1.2 y^{(1)}=1.2 y(1)=1.2 D D D 正确)。

    • 第二步:
      x ( 2 ) = 2 − y ( 1 ) 5 = 2 − 1.2 5 = 0.8 5 = 0.16 , x^{(2)}=\frac{2-y^{(1)}}{5}=\frac{2-1.2}{5}=\frac{0.8}{5}=0.16, x(2)=52y(1)=521.2=50.8=0.16,

      y ( 2 ) = 4 − x ( 2 ) 3 = 4 − 0.16 3 = 1.28. y^{(2)}=\frac{4-x^{(2)}}{3}=\frac{4-0.16}{3}=1.28. y(2)=34x(2)=340.16=1.28.

      因此 A A A 中的 x ( 2 ) = 0.08 x^{(2)}=0.08 x(2)=0.08 是错误的。

  3. 收敛性(谱半径)判断:令 A = ( 5 1 1 3 ) A=\begin{pmatrix}5&1\\1&3\end{pmatrix} A=(5113)。Gauss–Seidel 的迭代矩阵是
    B G s = − ( D + L ) − 1 U B_{Gs}=-(D+L)^{-1}U BGs=(D+L)1U

    对本例可计算出(或注意到是上三角形式)
    B G s = ( 0 − 1 5 0 1 15 ) , B_{Gs}=\begin{pmatrix}0 & -\tfrac15\\[4pt]0 & \tfrac{1}{15}\end{pmatrix}, BGs=(0051151),

    特征值为 0 0 0 1 / 15 1/15 1/15,所以谱半径 ρ ( B G s ) = 1 / 15 < 1 \rho(B_{Gs})=1/15<1 ρ(BGs)=1/15<1。因此迭代收敛,选项 C( ρ > 1 \rho>1 ρ>1)错误。

    (另外也可用充分条件判断:矩阵对角占优,故 Gauss–Seidel 收敛。)

关于迭代矩阵,更具体的求解过程如下:

  1. 矩阵分解 A = D + L + U A=D+L+U A=D+L+U
    把矩阵 A = ( 5 1 1 3 ) A=\begin{pmatrix}5&1\\[2pt]1&3\end{pmatrix} A=(5113) 分成 对角、严格下三角和严格上三角 三部分:
    D = ( 5 0 0 3 ) , L = ( 0 0 1 0 ) , U = ( 0 1 0 0 ) . D=\begin{pmatrix}5&0\\[2pt]0&3\end{pmatrix},\quad L=\begin{pmatrix}0&0\\[2pt]1&0\end{pmatrix},\quad U=\begin{pmatrix}0&1\\[2pt]0&0\end{pmatrix}. D=(5003),L=(0100),U=(0010).
    Gauss–Seidel 的逐分量更新可写成矩阵形式
    ( D + L ) x ( k + 1 ) = − U x ( k ) + b , (D+L)x^{(k+1)} = -U x^{(k)} + b, (D+L)x(k+1)=Ux(k)+b,
    移项得到
    x ( k + 1 ) = − ( D + L ) − 1 U   x ( k ) + ( D + L ) − 1 b . x^{(k+1)} = -(D+L)^{-1}U\,x^{(k)} + (D+L)^{-1}b. x(k+1)=(D+L)1Ux(k)+(D+L)1b.
    因此迭代矩阵就是
    B G s = − ( D + L ) − 1 U . B_{Gs}=-(D+L)^{-1}U. BGs=(D+L)1U.
  2. 计算 ( D + L ) − 1 (D+L)^{-1} (D+L)1 B G s B_{Gs} BGs
    先写出 D + L D+L D+L
    D + L = ( 5 0 1 3 ) . D+L=\begin{pmatrix}5&0\\[2pt]1&3\end{pmatrix}. D+L=(5103).
    计算 D + L D+L D+L 矩阵的逆: ( 5 0 1 3 ) ( 1 0 0 1 ) = ( 1 0 1 3 ) ( 1 5 0 0 1 ) = ( 1 0 0 3 ) ( 1 5 0 − 1 5 1 ) = ( 1 0 0 1 ) ( 1 5 0 − 1 15 1 3 ) \begin{pmatrix}5&0\\[2pt]1&3\end{pmatrix}\begin{pmatrix}1&0\\[2pt]0&1\end{pmatrix} = \begin{pmatrix}1&0\\[2pt]1&3\end{pmatrix}\begin{pmatrix}\frac{1}{5}&0\\[2pt]0&1\end{pmatrix} = \begin{pmatrix}1&0\\[2pt]0&3\end{pmatrix}\begin{pmatrix}\frac{1}{5}&0\\[2pt]-\frac{1}{5}&1\end{pmatrix} = \begin{pmatrix}1&0\\[2pt]0&1\end{pmatrix}\begin{pmatrix}\frac{1}{5}&0\\[2pt]-\frac{1}{15}&\frac{1}{3}\end{pmatrix} (5103)(1001)=(1103)(51001)=(1003)(515101)=(1001)(51151031)
    B G s = − ( D + L ) − 1 U = ( 0 − 1 5 0 1 15 ) . B_{Gs}=-(D+L)^{-1}U= \begin{pmatrix}0&-\tfrac{1}{5}\\[2pt]0&\tfrac{1}{15}\end{pmatrix}. BGs=(D+L)1U=(0051151).
  3. 求特征值(谱半径)
    注意这个 B G s B_{Gs} BGs 是上三角矩阵(非零条目在对角线上和右上角),所以它的特征值就是对角线元素:
    λ 1 = 0 , λ 2 = 1 15 . \lambda_1 = 0,\qquad \lambda_2 = \frac{1}{15}. λ1=0,λ2=151.
    谱半径特征值绝对值的最大值
    ρ ( B G s ) = max ⁡ ( ∣ 0 ∣ , ∣ 1 / 15 ∣ ) = 1 15 < 1. \rho(B_{Gs})=\max(|0|,|1/15|)=\frac{1}{15}<1. ρ(BGs)=max(∣0∣,∣1/15∣)=151<1.
    结论:谱半径小于 1,Gauss–Seidel 方法对本例收敛。

LU 分解和 QR 分解

分解 形式 是否总存在 应用
LU P A = L U PA=LU PA=LU 不一定(必须允许行交换) 解线性方程组(快速求解)
QR A = Q R A=QR A=QR 对任意矩阵都存在 最小二乘问题,数值稳定计算

LU 分解(Lower–Upper Decomposition):把一个矩阵 A A A 分解成 下三角矩阵 L L L上三角矩阵 U U U 的乘积:
A = L U A = LU A=LU

有时为了保证分解存在,需要引入置换矩阵 P P P

P A = L U PA = LU PA=LU

这叫 带主元的 LU 分解

LU 分解其实就是把 高斯消元 的过程“打包”成一个分解:

  • 消元得到的系数记录在 L L L 里;
  • 最后得到的上三角结果就是 U U U

好处:解线性方程组 A x = b Ax=b Ax=b 时,不用每次都重新消元,可以用分解快速解
A x = b    ⇒    L U x = b    ⇒    L y = b    ⇒    U x = y Ax=b \;\Rightarrow\; LUx=b \;\Rightarrow\; Ly=b \;\Rightarrow\; Ux=y Ax=bLUx=bLy=bUx=y
两次三角方程求解即可(代价低很多)。

例如, A = [ 2 3 4 7 ] A=\begin{bmatrix}2 & 3 \\4 & 7\end{bmatrix} A=[2437]
做消元:用第 1 行消去第 2 行,系数是 4 / 2 = 2 4/2=2 4/2=2。于是:
L = [ 1 0 2 1 ] , U = [ 2 3 0 1 ] L = \begin{bmatrix} 1 & 0 \\ 2 & 1 \end{bmatrix}, \quad U = \begin{bmatrix} 2 & 3 \\ 0 & 1 \end{bmatrix} L=[1201],U=[2031]

QR 分解(Orthogonal–Upper Triangular Decomposition):把一个矩阵 A A A 分解为,
A = Q R A = QR A=QR
Q Q Q:正交矩阵(列向量正交且单位化,满足 Q ⊤ Q = I Q^\top Q = I QQ=I), R R R:上三角矩阵。

适用于任意矩阵(方阵/矩阵都可以)

QR 分解本质上是 对列向量做 Gram–Schmidt 正交化

  • A A A 的列向量变成一组正交单位向量(放在 Q Q Q 中);
  • 正交化过程中得到的投影系数就是 R R R

在几何意义上, Q Q Q 是旋转/反射(不会改变长度和角度), R R R 则包含缩放、组合的信息。

比如求解超定方程组(最小二乘问题):
min ⁡ x ∥ A x − b ∥ 2 \min_x \|Ax-b\|_2 xminAxb2
用 QR 分解可以变成简单的三角系统求解。数值稳定性比 LU 分解更好,所以在科学计算中很常用。

A = [ 1 1 1 − 1 ] A=\begin{bmatrix} 1 & 1 \\ 1 & -1 \\ \end{bmatrix} A=[1111]
对列向量做 Gram–Schmidt:

  • 第 1 列 [ 1 , 1 ] T [1,1]^T [1,1]T,归一化: 1 2 [ 1 , 1 ] T \tfrac{1}{\sqrt{2}}[1,1]^T 2 1[1,1]T
  • 第 2 列 [ 1 , − 1 ] T [1,-1]^T [1,1]T,与第 1 列正交(本来就正交),归一化: 1 2 [ 1 , − 1 ] T \tfrac{1}{\sqrt{2}}[1,-1]^T 2 1[1,1]T

于是:
Q = 1 2 [ 1 1 1 − 1 ] , R = [ 2 0 0 2 ] Q=\frac{1}{\sqrt{2}} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}, \quad R=\begin{bmatrix} \sqrt{2} & 0 \\ 0 & \sqrt{2} \end{bmatrix} Q=2 1[1111],R=[2 002 ]

SVD 分解

SVD 写为
A = U Σ V ⊤ , A=U\Sigma V^\top, A=UΣV,

其中 Σ = diag ⁡ ( σ 1 , σ 2 , …   ) \Sigma=\operatorname{diag}(\sigma_1,\sigma_2,\dots) Σ=diag(σ1,σ2,),通常要求 σ 1 ≥ σ 2 ≥ ⋯ ≥ 0 \sigma_1\ge\sigma_2\ge\cdots\ge0 σ1σ20。(约定奇异值矩阵 Σ \Sigma Σ 的对角元素非负且按降序排列,便于比较大小/截断)

  • 右奇异向量 v i v_i vi A T A A^T A ATA 的特征向量,满足
    A T A v i = σ i 2 v i . A^T A v_i = \sigma_i^2 v_i. ATAvi=σi2vi.
  • 左奇异向量 u i u_i ui A A T A A^T AAT 的特征向量,滿足
    A A T u i = σ i 2 u i . A A^T u_i = \sigma_i^2 u_i. AATui=σi2ui.

也可以从基本 SVD 等式推导:
A v i = σ i u i , A T u i = σ i v i . A v_i = \sigma_i u_i,\qquad A^T u_i = \sigma_i v_i. Avi=σiui,ATui=σivi.
把第二个式子代入第一个得到 A A T u i = σ i 2 u i A A^T u_i=\sigma_i^2 u_i AATui=σi2ui;同样得到 A T A v i = σ i 2 v i A^T A v_i=\sigma_i^2 v_i ATAvi=σi2vi

SVD 把任意变换分成“旋转 → 缩放 → 旋转”

任何矩阵 A A A 都可以写成 A = U Σ V ⊤ A=U\Sigma V^\top A=UΣV,其中 U , V U,V U,V 正交(旋转/反射), Σ \Sigma Σ 非负对角(缩放)。

  • 先用 V ⊤ V^\top V 把输入坐标系旋转到“奇异向量基”,再用 Σ \Sigma Σ 按坐标轴缩放(这些坐标轴就是椭球主轴),最后 U U U 把结果旋转到输出坐标系
  • 因此 SVD 给了最自然的几何分解任意线性变换 = 两次正交变换(旋转/反射)夹一个纯拉伸

例 1:纯缩放 A = ( 3 0 0 1 ) A=\begin{pmatrix}3&0\\0&1\end{pmatrix} A=(3001)

  • 特征值:3, 1(对应方向 e 1 , e 2 e_1,e_2 e1,e2),奇异值同为 3,1(因为 A 是对角且非负)。
  • 作用:把单位圆拉成半轴长度 3 与 1 的椭圆,主方向不变。

例 2:纯旋转 R = R ( θ ) R=R(\theta) R=R(θ)(如 θ = 90 ∘ \theta=90^\circ θ=90

  • 特征值:复数(没有实特征向量)
  • 奇异值:都等于 1(不改变长度)
  • 作用:把单位圆映为同样的单位圆,只改变方向。

例 3:一般矩阵
任何 A A A 的 SVD A = U Σ V ⊤ A=U\Sigma V^\top A=UΣV 说明 A A A 含有“旋转-拉伸-旋转”成分。如果把一个向量 x x x 投影在 V V V 基下,先缩放各分量(由 Σ \Sigma Σ 给出),再用 U U U 旋转回输出空间。

为什么在实际中常用奇异值(SVD)?

  • 总是存在(对任意矩阵),稳定且能处理 非方阵
  • 给出最优低秩近似(Eckart–Young 定理):截取前 k k k 个奇异值对应的分解,能得到最佳的秩- k k k 近似
  • 用于 数值稳定性分析(条件数 κ ( A ) = σ max ⁡ / σ min ⁡ \kappa(A)=\sigma_{\max}/\sigma_{\min} κ(A)=σmax/σmin)。
  • 在数据分析(PCA)、图像压缩、最小二乘、伪逆(Moore–Penrose)等都有广泛应用。

线性代数中的常见矩阵类型

  1. 对称矩阵 (Symmetric Matrix):矩阵等于它的转置。
    A = A ⊤ A = A^\top A=A
    特点是主对角线对称,
    [ 1 2 3 2 4 5 3 5 6 ] \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 5 \\ 3 & 5 & 6 \end{bmatrix} 123245356

  2. 实对称矩阵 (Real Symmetric Matrix):元素全是实数的对称矩阵。特征值一定是实数;可以正交对角化(存在正交矩阵 Q Q Q,使得 A = Q Λ Q ⊤ A = Q \Lambda Q^\top A=QΛQ)。

  3. 正交矩阵 (Orthogonal Matrix):列(行)向量两两正交且单位化,不改变向量长度
    Q ⊤ Q = I ⇔ Q − 1 = Q ⊤ Q^\top Q = I \quad \Leftrightarrow \quad Q^{-1} = Q^\top QQ=IQ1=Q
    表示旋转或反射变换,比如二维旋转矩阵:
    Q = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] Q = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} Q=[cosθsinθsinθcosθ]

  4. 正定矩阵 (Positive Definite Matrix):对任意非零向量 x x x
    x ⊤ A x > 0 x^\top A x > 0 xAx>0
    所有特征值都大于 0;常见于协方差矩阵、能量函数等。

  5. 半正定矩阵 (Positive Semi-Definite, PSD)
    x ⊤ A x ≥ 0 x^\top A x \geq 0 xAx0
    特征值 ≥ 0 \geq 0 0

  6. 对角矩阵 (Diagonal Matrix):主对角线以外全为 0。
    [ 1 0 0 0 4 0 0 0 7 ] \begin{bmatrix} 1 & 0 & 0 \\ 0 & 4 & 0 \\ 0 & 0 & 7 \end{bmatrix} 100040007

  7. 单位矩阵 (Identity Matrix):对角线全是 1,其余为 0。任何矩阵乘它不变。

  8. 零矩阵 (Zero Matrix):全部元素为 0。

  9. 上/下三角矩阵 (Triangular Matrix)上三角矩阵 的主对角线下方为 0;下三角矩阵 的主对角线上方为 0。

  10. 奇异矩阵 (Singular Matrix):行列式为 0,不可逆。

  11. 正交投影矩阵 (Projection Matrix):把向量投影到某个子空间。
    P 2 = P P^2 = P P2=P

  12. 幂等矩阵 (Idempotent Matrix)
    A 2 = A A^2 = A A2=A

  13. 酉矩阵 (Unitary Matrix):复数域上的“正交矩阵”,在复数向量空间中保持长度。
    U ∗ U = I U^\ast U = I UU=I

  14. 厄米矩阵 (Hermitian Matrix):复数域上的“对称矩阵”,转置并共轭,特征值一定是实数。
    A = A ∗ A = A^\ast A=A

实对称矩阵

把矩阵想成“把向量拉伸/压缩并旋转”的变换。对称矩阵 的特别之处是:它不会把伸长的方向“扭曲成复杂的相位”,它的“伸缩因子”是纯粹的实数(没有复数的“旋转+缩放”混合)。也就是说,对称变换可以被理解为 在一组正交方向上只做实数伸缩

对称 = “没有复相位”,所以特征值都是实数。

A A A 是实对称的,特征向量可以取正交,且 奇异值等于特征值的绝对值(因为 A T A = A 2 A^TA=A^2 ATA=A2 在对称情形下成立,所以 σ i = ∣ λ i ∣ \sigma_i=|\lambda_i| σi=λi)。

正交矩阵和旋转的关系?

对任意实向量 u u u,其欧几里得范数平方定义为内积自身: ∥ u ∥ 2 = u T u . \| u\|^2 = u^T u. u2=uTu.

正交矩阵 定义:一个 n × n n\times n n×n 的实矩阵 Q Q Q 若满足
Q ⊤ Q = Q Q ⊤ = I n , Q^\top Q = Q Q^\top = I_n, QQ=QQ=In,
就称为 正交矩阵。等价地, Q − 1 = Q ⊤ Q^{-1}=Q^\top Q1=Q

正交矩阵表示 “长度和角度都不变” 的线性变换——本质上是旋转反射(以及它们的组合)。把向量用 Q Q Q 变换后,向量的长度不变,任意两向量之间的内积也不变。

  • 正交矩阵 Q Q Q 满足 Q ⊤ Q = I Q^\top Q=I QQ=I。因此对任意向量 x x x ∥ Q x ∥ 2 = x ⊤ Q ⊤ Q x = x ⊤ x = ∥ x ∥ 2 \|Qx\|^2 = x^\top Q^\top Q x = x^\top x = \|x\|^2 Qx2=xQQx=xx=x2。→ 说明它保持长度,也保持夹角(因为内积不变)。这正是旋转(或反射)应有的性质。

旋转(在欧几里得空间)由 正交矩阵 Q Q Q 表示,满足 Q ⊤ Q = I Q^\top Q=I QQ=I det ⁡ Q = 1 \det Q = 1 detQ=1(若 det ⁡ = − 1 \det=-1 det=1 则是反射+旋转)。

  • 性质:旋转不改变向量长度( ∥ Q x ∥ = ∥ x ∥ \|Qx\|=\|x\| Qx=x),所以奇异值全是 1

  • 特征值:二维旋转角度 θ \theta θ 的矩阵
    R ( θ ) = ( cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ) R(\theta)=\begin{pmatrix}\cos\theta & -\sin\theta\\ \sin\theta & \cos\theta\end{pmatrix} R(θ)=(cosθsinθsinθcosθ)

    的特征值是 e ± i θ = cos ⁡ θ ± i sin ⁡ θ e^{\pm i\theta}=\cos\theta\pm i\sin\theta e±iθ=cosθ±isinθ —— 通常是复数,所以没有非零的实特征向量(除非 θ = 0 \theta=0 θ=0 π \pi π)。

几何上:旋转改变方向但不改变长度;特征向量要求“不改变方向”,因此旋转通常 没有实特征向量

概率论

朴素贝叶斯(Naive Bayes)

参考:Naive Bayes, Clearly ExplainedGaussian Naive Bayes, Clearly ExplainedBayes and Naive Bayes Classifier

朴素贝叶斯分类器用的是贝叶斯公式
P ( class ∣ features ) ∝ P ( features ∣ class )   P ( class ) . P(\text{class}\mid\text{features}) \propto P(\text{features}\mid\text{class})\,P(\text{class}). P(classfeatures)P(featuresclass)P(class).

  • P ( class ) P(\text{class}) P(class) 是类别先验(例如 P ( spam ) P(\text{spam}) P(spam) P ( Normal ) P(\text{Normal}) P(Normal)),必须从训练集估计。常用估计:
    P ^ ( class ) = # train docs in class # all train docs . \hat P(\text{class})=\frac{\#\text{train docs in class}}{\#\text{all train docs}}. P^(class)=#all train docs#train docs in class.

  • 对于 P ( features ∣ class ) P(\text{features}\mid\text{class}) P(featuresclass),朴素贝叶斯作条件独立假设,把联合条件概率分解为各特征的乘积:
    P ( features ∣ class ) = ∏ i P ( feature i ∣ class ) . P(\text{features}\mid\text{class})=\prod_i P(\text{feature}_i\mid\text{class}). P(featuresclass)=iP(featureiclass).

因此需要估计每个特征(例如每个单词)在该类别下出现的条件概率。常见估计(多项式朴素贝叶斯):
P ^ ( w ∣ c ) = count ( w  in class  c ) + α ∑ w ′ count ( w ′  in  c ) + α V , \hat P(w|c)=\frac{\text{count}(w\text{ in class }c)+\alpha}{\sum_{w'}\text{count}(w'\text{ in }c)+\alpha V}, P^(wc)=wcount(w in c)+αVcount(w in class c)+α,

其中 α \alpha α 为拉普拉斯平滑参数, V V V 为词表大小。

为什么联合概率 P ( word 1 , word 2 ∣ class ) P(\text{word}_1,\text{word}_2\mid\text{class}) P(word1,word2class))不是必须的?

朴素贝叶斯 恰恰是 通过条件独立假设把联合概率拆成各个 P ( word i ∣ class ) P(\text{word}_i\mid\text{class}) P(wordiclass) 的乘积。 如果你去估计二元或更高阶的联合概率(即放弃独立假设),模型会变得非常复杂、参数爆炸并且需要大量数据(或采用 n-gram、交互特征等替代方法)。但标准朴素贝叶斯不需要直接估计这些高阶联合分布。

为什么边缘概率 P ( word ) P(\text{word}) P(word) 不是必须的?

在比较不同类别的后验时:
P ( class ∣ features ) = P ( features ∣ class ) P ( class ) P ( features ) . P(\text{class}\mid\text{features})=\frac{P(\text{features}\mid\text{class})P(\text{class})}{P(\text{features})}. P(classfeatures)=P(features)P(featuresclass)P(class).

分母 P ( features ) P(\text{features}) P(features) 对所有类别相同,因此在做判别(选概率最大的类别)时可以忽略它(只用分子比较)。所以不必单独估计每个特征的边缘概率 P ( word ) P(\text{word}) P(word)。当然,如果想要 真正的归一化后验概率,可以通过
P ( features ) = ∑ c P ( features ∣ c ) P ( c ) P(\text{features})=\sum_{c} P(\text{features}\mid c)P(c) P(features)=cP(featuresc)P(c)

间接算出,但这不是训练时必须单独估计 P ( word ) P(\text{word}) P(word) 的理由。

  • 要避免零概率问题,常用拉普拉斯平滑 α > 0 \alpha>0 α>0)。
  • 有两种常见特征模型:多项式 NB(考虑词频)和伯努利 NB(考虑词是否出现)。估计公式略有不同,但核心都是估计 P ( word ∣ c l a s s ) P(\text{word}|class) P(wordclass) P ( c l a s s ) P(class) P(class)
  • 如果需要捕捉词间依赖,可引入 n-gram 或交互特征,但那就超出“朴素”贝叶斯的假设了。

AI

卷积、池化、全连接层和激活函数

线性算子 的定义是:对任意向量(或函数) x , y x,y x,y 和标量 a , b a,b a,b,有

T ( a x + b y ) = a T ( x ) + b T ( y ) . T(ax+by)=aT(x)+bT(y). T(ax+by)=aT(x)+bT(y).

  • 卷积满足这个性质:若 T T T 表示与固定核 k k k 的卷积,则
    T ( a x + b y ) = k ∗ ( a x + b y ) = a ( k ∗ x ) + b ( k ∗ y ) = a T ( x ) + b T ( y ) , T(ax+by)=k*(ax+by)=a(k*x)+b(k*y)=aT(x)+bT(y), T(ax+by)=k(ax+by)=a(kx)+b(ky)=aT(x)+bT(y),
    所以卷积是线性变换。

  • 全连接层 核心是矩阵乘法 y = W x y=W x y=Wx,这满足线性性(矩阵乘法是线性的)。实际神经网络里常在后面加上偏置 b b b,变为 y = W x + b y = W x + b y=Wx+b,这叫仿射变换(affine),严格来说含偏置时不是“线性”而是“仿射”。

    在考试语境中通常把“全连接层”视为线性变换(或把权重部分当作线性)。

  • ReLU ReLU ⁡ ( x ) = max ⁡ ( 0 , x ) \operatorname{ReLU}(x)=\max(0,x) ReLU(x)=max(0,x)

    检验加法性: ReLU ⁡ ( 1 ) = 1 ,   ReLU ⁡ ( − 1 ) = 0 \operatorname{ReLU}(1)=1,\ \operatorname{ReLU}(-1)=0 ReLU(1)=1, ReLU(1)=0,但 ReLU ⁡ ( 1 + ( − 1 ) ) = ReLU ⁡ ( 0 ) = 0 \operatorname{ReLU}(1+(-1))=\operatorname{ReLU}(0)=0 ReLU(1+(1))=ReLU(0)=0
    1 + 0 ≠ 0 1+0 \ne 0 1+0=0,因此不满足线性性,ReLU 是非线性(尽管它是分段线性的)。

  • 池化:常见的 max pooling 是非线性的(取最大值,不满足加法性),例如 max ⁡ ( 1 , 0 ) = 1 ,   max ⁡ ( − 1 , 0 ) = 0 \max(1,0)=1,\ \max(-1,0)=0 max(1,0)=1, max(1,0)=0 max ⁡ ( 1 + ( − 1 ) , 0 ) = max ⁡ ( 0 , 0 ) = 0 \max(1+(-1),0)=\max(0,0)=0 max(1+(1),0)=max(0,0)=0,不满足线性性。

    注意例外:如果题目中特指 average pooling(均值池化),那是线性的(平均是加权和/矩阵乘法的一种),但一般说“池化”在 CNN 语境中默认是 max pooling,所以视为非线性。

XGBoost 算法

XGBoost = GBDT + 二阶近似 + 正则化 + 工程优化

  • Boosting 思想:不是一次性训练一个很强的模型,而是逐步迭代训练很多“弱模型”(如浅树),每次 让新的模型去修正前一轮的误差,最后把它们加起来形成一个强模型。
  • XGBoost:是对 梯度提升树(GBDT) 的改进实现,特点是:
    1. 用二阶导数(梯度 + Hessian)提升优化精度;
    2. 加入正则化,控制树的复杂度,防止过拟合;
    3. 利用高效的工程优化(稀疏感知、分块并行、缓存等),速度快。

假设我们要学一个预测函数:

y ^ ( t ) ( x ) = ∑ k = 1 t f k ( x ) , f k ∈ F \hat y^{(t)}(x)=\sum_{k=1}^t f_k(x), \quad f_k \in \mathcal{F} y^(t)(x)=k=1tfk(x),fkF

其中每个 f k f_k fk 是一棵回归树(叶子节点有一个预测值)。

在这里插入图片描述

训练目标函数:
L = ∑ i l ( y i , y ^ i ) + ∑ k Ω ( f k ) \mathcal{L} = \sum_{i} l(y_i,\hat y_i) + \sum_k \Omega(f_k) L=il(yi,y^i)+kΩ(fk)

  • 第一项:损失函数(例如平方误差、逻辑损失等);
  • 第二项:正则化 Ω ( f ) = γ T + 1 2 λ ∑ j w j 2 \Omega(f)=\gamma T+\tfrac{1}{2}\lambda\sum_j w_j^2 Ω(f)=γT+21λjwj2惩罚树叶子数 T T T 和叶子权重 w j w_j wj 的大小,防止过拟合

在第 t t t 次迭代时,要加一个新树 f t f_t ft,但直接最优化很难。XGBoost 的关键 是:对损失函数做 二阶泰勒展开(近似):
L ( t ) ≈ ∑ i [ g i f t ( x i ) + 1 2 h i f t ( x i ) 2 ] + Ω ( f t ) , \mathcal{L}^{(t)} \approx \sum_i \big[g_i f_t(x_i) + \tfrac{1}{2} h_i f_t(x_i)^2 \big] + \Omega(f_t), L(t)i[gift(xi)+21hift(xi)2]+Ω(ft),

其中

  • g i = ∂ y ^ ( t − 1 ) l ( y i , y ^ i ( t − 1 ) ) g_i = \partial_{\hat y^{(t-1)}} l(y_i,\hat y^{(t-1)}_i) gi=y^(t1)l(yi,y^i(t1)) (一阶梯度);
  • h i = ∂ y ^ ( t − 1 ) 2 l ( y i , y ^ i ( t − 1 ) ) h_i = \partial^2_{\hat y^{(t-1)}} l(y_i,\hat y^{(t-1)}_i) hi=y^(t1)2l(yi,y^i(t1)) (二阶 Hessian)。

这样就把复杂的 损失最小化问题,化简成 只依赖梯度和二阶信息的优化问题

在这里插入图片描述

如何生长一棵树?

  • 训练时需要决定:在哪个特征、哪个阈值上分裂。
  • XGBoost 定义了一个 分裂增益函数(Gain),衡量分裂前后目标函数下降多少:
    G a i n = 1 2 [ G L 2 H L + λ + G R 2 H R + λ − ( G L + G R ) 2 H L + H R + λ ] − γ Gain = \frac{1}{2}\left[\frac{G_L^2}{H_L+\lambda} + \frac{G_R^2}{H_R+\lambda} - \frac{(G_L+G_R)^2}{H_L+H_R+\lambda}\right] - \gamma Gain=21[HL+λGL2+HR+λGR2HL+HR+λ(GL+GR)2]γ

其中 G G G H H H 是分裂后左右子树上的梯度和 Hessian 总和。

选择 Gain 最大的分裂方式,直到叶子数或深度达到限制

防止过拟合的机制

  • 正则化项 λ \lambda λ 控制叶子权重的平滑, γ \gamma γ 控制是否值得新开一个叶子;
  • Shrinkage(学习率):每轮只加一小步,避免过拟合;
  • 子采样:随机采样数据行、特征列,减少相关性;
  • 树深限制:避免树过深。

工程优化(为什么 XGBoost 特别快)

  • 稀疏感知:能自动处理缺失值、稀疏特征;
  • 并行化分裂搜索:不同特征的分裂点可以并行搜索;
  • Block 结构:数据按列存储,缓存友好;
  • 支持分布式训练。

网站公告

今日签到

点亮在社区的每一天
去签到