人工智能这门课的期末考试,跟高数、数据结构那种“背公式加刷题型”的考试不太一样。它最大的特点是概念多、跨度大、计算题的套路又相对固定。你可能花了两周把《人工智能导论》翻了两遍,合上书还是说不清 A* 的启发式函数为什么必须可采纳,也讲不明白朴素贝叶斯里那个“朴素”到底朴素在哪。更麻烦的是,这门课往往同时混着符号主义的搜索与逻辑、连接主义的神经网络、还有统计学习里的概率与评价指标,三者语言体系完全不同。这篇内容就是围绕人工智能期末考试刷题这条主线,把考点地图、高频题型、带完整过程的计算题、以及我自己踩过的坑一次性摊开讲清楚。适合两类人:一类是考前一周想精准突击的,另一类是想借考试这个机会把人工智能基础真正串成一条线的人。刷题不是背答案,而是用题目去反向校准你的理解,这一点想通了,效率会完全不一样。
1. 先搞清楚这门考试到底在考什么
1.1 从课程大纲反推真实的考点分布
大多数人工智能基础或人工智能导论课程,章节顺序高度相似:智能体、搜索与问题求解、博弈、知识表示与推理、不确定性推理、机器学习基础、神经网络与深度学习入门,最后挂一到两章应用与伦理。但章节顺序不等于考试权重。我做过一个粗略统计,把我见过的十几套期末卷按分值归类,规律非常明显:
| 模块 | 典型分值占比 | 题型偏好 |
|---|---|---|
| 搜索与博弈 | 20% 到 30% | 计算题、算法设计题 |
| 知识表示与逻辑推理 | 10% 到 15% | 简答、归结证明 |
| 概率与不确定推理 | 15% 到 20% | 贝叶斯计算、贝叶斯网络 |
| 机器学习基础 | 20% 左右 | 概念辨析、指标计算 |
| 神经网络与深度学习 | 15% 到 20% | 卷积尺寸计算、反向传播 |
| 智能体、伦理与前沿 | 5% 到 10% | 名词解释、论述题 |
这张表的用法很简单:如果复习时间只剩三天,先保证搜索、机器学习、概率这三块的计算题能闭着眼做;神经网络部分先拿下卷积输出尺寸和反向传播的基本推导,这两个几乎是定点爆破;伦理和前沿章节只用半天,把常见名词和一两段论述框架背下来就够了。很多人本末倒置,花大量时间在深度学习的花哨概念上,结果丢了搜索题的稳定分,这是最不划算的。
1.2 别急着刷题:先搭一张能自洽的知识地图
我见过太多人刷题的方式是“打开题库,从第一题往下做,不会就翻答案”。这种做法在做前三套卷子时会给你一种虚假的充实感,因为你记住的是题目的长相,不是问题背后的结构。正确的顺序是先用半天时间画一张知识地图。
我个人习惯把整门课拆成三条主线。第一条是符号主义主线,核心是“把问题写成状态空间,再用搜索或推理去解”,贯穿其中的是 BFS、DFS、一致代价搜索、A*、极小极大、α-β剪枝、一阶逻辑、归结原理。第二条是连接主义主线,核心是“用可微的参数化函数去拟合映射”,包括感知机、多层网络、激活函数、反向传播、卷积与池化。第三条是统计学习主线,核心是“在不确定性下做最优决策”,包括贝叶斯公式、朴素贝叶斯、贝叶斯网络、隐马尔可夫模型、马尔可夫决策过程、Q-learning。
三条主线之间并非毫无关系。A* 里的启发式函数,本质上是在用先验知识降低搜索的不确定性;贝叶斯网络里的条件独立性假设,和神经网络里的权重共享,都是为了在有限数据下减少要估计的参数。把这些横向联系想通,简答题和论述题就不会写得干巴巴。
提示:知识地图不要照抄教材目录,要用自己的话写因果链。比如不要写“A* 算法”,要写“A* = 一致代价搜索 + 启发式排序,前提是 h 可采纳,否则可能不最优”。能写出后半句,才算真懂。
1.3 我自己用过的考前七天复习时间表
这套节奏我在两门不同的人工智能课上都验证过,适合基础一般、时间紧张的情况:
| 时间 | 任务 | 产出物 |
|---|---|---|
| D-7 | 通读目录+画三条主线地图 | 一页 A4 知识地图 |
| D-6 | 搜索与博弈专题,做 15 道计算题 | 搜索题错题清单 |
| D-5 | 概率与贝叶斯专题,做 12 道计算题 | 贝叶斯公式手写卡片 |
| D-4 | 机器学习基础,整理评价指标与过拟合 | 指标计算对照表 |
| D-3 | 神经网络,卷积尺寸+反向传播各刷 10 题 | 公式默写本 |
| D-2 | 完整掐时间做两套真题 | 时间分配记录 |
| D-1 | 只看错题本和知识地图,不做新题 | 一页速查表 |
关键在 D-1 那天绝对不做新题。新题会制造焦虑,而错题本和知识地图才是你真正能带走的东西。
2. 高频考点逐个拆:从搜索算法到神经网络
2.1 搜索类:状态空间、A* 与启发式的可采纳性
搜索题的核心其实只有一个问题:你怎么在解空间里找一条路,还尽量少走冤枉路。BFS 用队列,按层扩展,能找到步数最少的解;DFS 用栈,一条路走到黑,省内存但可能陷进深分支;一致代价搜索按路径代价 g 排序,适合边权不等的情况;A* 在一致代价基础上加启发式 h,用 f = g + h 排序。
A* 有两个必须记住的性质。第一是可采纳性:对任意节点 n,h(n) 都不能高估到目标的真实最小代价,也就是 h(n) ≤ h*(n)。这保证了 A* 不会因为启发式的误导而错过最优解。第二是一致性,也叫单调性:h(n) ≤ c(n, n') + h(n'),其中 c 是边的真实代价。一致性比可采纳性更强,满足一致性时,节点第一次被扩展就拿到了最优 g 值,不需要重复开放。
举个必须会手算的例子。设节点 S、A、B、C、G,启发式估值 h(S)=7、h(A)=6、h(B)=4、h(C)=2、h(G)=0,边和代价为 S→A=1、S→B=4、A→B=1、A→C=2、C→G=3、B→G=8。按 A* 展开:
| 步骤 | 开放表(节点: f值) | 扩展节点 | 说明 |
|---|---|---|---|
| 1 | S:7 | S | g(S)=0,f=0+7 |
| 2 | A:7, B:8 | A | g(A)=1,f=1+6=7;g(B)=4,f=8 |
| 3 | B:6, C:5 | C | 经 A 到 B 只需 g=2,f=2+4=6,B 被更新 |
| 4 | B:6, G:6 | G | g(C)=3,f=3+2=5;g(G)=3+3=6,f=6 |
最终最优路径是 S→A→C→G,总代价 6。这里有个细节容易丢分:B 节点的 f 值被更新过一次。考试里如果让你写出完整的开放表和封闭表,忘记记录这次更新基本会被扣分。另外当 B:6 和 G:6 同分时,先扩展谁取决于你用的是哪种平局打破规则,一般把 G 当目标节点优先弹出即可,但你要在答案里说明“同分时优先检查目标节点”。
2.2 博弈与约束满足:α-β剪枝到底剪掉了什么
极小极大算法的逻辑是:在 MAX 层取子节点最大值,在 MIN 层取最小值,一路递归到叶节点评估值再回溯。它的时间复杂度是 O(b^d),b 是分支因子,d 是深度,实际根本算不完,所以需要 α-β剪枝。
α 是 MAX 层当前已知的最好选择,β 是 MIN 层当前已知的最好选择。剪枝条件可以这样记:在 MIN 节点上,如果某个子节点的值 ≤ α,就不用看后面的兄弟节点了;在 MAX 节点上,如果某个子节点的值 ≥ β,同样可以停。原因很直白,MIN 已经有一个不超过 α 的选项了,MAX 绝不会选它,后面的兄弟再评估也是白费。
考试里常见两种问法。一种是给你一棵二叉博弈树,让你标出被剪掉的枝;另一种是问“剪枝后的结果和最坏情况下的搜索节点数”。对于第二种,标准答案是:理想排序下,α-β剪枝把时间复杂度从 O(b^d) 降到 O(b^(d/2)),也就是同样时间能搜两倍深度。这个结论务必背下来。
约束满足问题(CSP)部分,重点在于回溯搜索加约束传播。变量、值域、约束三元组要会写;前向检验(forward checking)是在给变量赋值后,立刻删掉邻居变量值域里被违反的取值;弧一致性(AC-3)则是反复检查二元约束,删到不动点。
2.3 知识表示与推理:一阶逻辑与归结反驳法
这部分看着抽象,但考试套路极其固定。你要掌握的把戏是:把自然语言翻译成一阶逻辑公式,然后用归结法证明结论。
归结反驳法的四个步骤,我建议当成口诀背:否定结论、化子句集、消去互补对、得到空子句。化子句集的顺序是:消去蕴含符号、内移否定词、重命名变量避免冲突、消去存在量词(Skolem 化)、消去全称量词、化成合取范式、拆成子句。
举个经典简单例子。前提:所有人都是会死的,苏格拉底是人。结论:苏格拉底会死。翻译成:∀x (Human(x) → Mortal(x)),Human(Socrates)。否定结论得 ¬Mortal(Socrates)。化子句集后得到两个子句 {¬Human(x) ∨ Mortal(x)} 和 {Human(Socrates)},加上否定结论 {¬Mortal(Socrates)}。用 x/Socrates 归结前两个得 {Mortal(Socrates)},再和第三个归结,得到空子句,证明完毕。
注意:Skolem 化和重命名这两步最容易出错。存在量词被消去时,如果它前面还有全称量词,Skolem 函数必须带上那些全称变量,写成 f(x) 而不是常量 f。这一步写错,后面的归结全废。
2.4 概率与不确定推理:贝叶斯公式与朴素贝叶斯
贝叶斯公式 P(H|E) = P(E|H)·P(H) / P(E) 是所有概率题的地基。考试里最高频的是朴素贝叶斯分类,而“朴素”两个字指的是假设所有特征在给定类别下条件独立。这个假设在现实中几乎不成立,但它极大简化了计算,效果还常常不错。
给一道典型题。垃圾邮件分类,先验 P(垃圾)=0.4,P(正常)=0.6。已知词语出现在垃圾邮件中的概率 P(中奖|垃圾)=0.8、P(发票|垃圾)=0.7;出现在正常邮件中的概率 P(中奖|正常)=0.05、P(发票|正常)=0.1。现在有封邮件同时包含“中奖”和“发票”,判断类别。
按朴素贝叶斯,因为要连乘多个小概率,实际计算中一律取对数,避免下溢:
| 类别 | 计算式 | 得分(对数) | 归一化后概率 |
|---|---|---|---|
| 垃圾 | 0.4 × 0.8 × 0.7 | ln(0.224) ≈ -1.496 | 约 0.987 |
| 正常 | 0.6 × 0.05 × 0.1 | ln(0.003) ≈ -5.809 | 约 0.013 |
结论判为垃圾邮件。这里有个踩分点:归一化那一步不能省。很多同学只写出“垃圾得分 0.224 大于正常 0.003,所以是垃圾”,过程对但容易被判不完整,因为题目如果要求“给出后验概率”,你必须除以两者之和。
贝叶斯网络部分,重点掌握三件事:条件独立性怎么写、联合概率怎么分解(P(x1,...,xn) = ∏ P(xi | parents(xi)))、以及简单网络的枚举推理。隐马尔可夫模型则记住前向算法的递推式 αt(j) = [Σi α(t-1)(i)·aij]·bj(ot),以及 Viterbi 算法就是把这个求和换成取最大。
2.5 机器学习基础:过拟合、正则化与评价指标
机器学习这一章的选择题密度最高,而且陷阱很多。第一个高频陷阱是“训练集准确率高就一定模型好吗”——显然不对。第二个是“增加模型复杂度一定能提升泛化能力”——也不对。判断过拟合的信号是训练误差持续下降而验证误差开始上升,解决办法包括增加数据、降低模型复杂度、L1/L2 正则化、Dropout、早停。
评价指标的计算题几乎是必考。给一个混淆矩阵:TP=80,FP=20,FN=10,TN=90。
| 指标 | 公式 | 计算 | 结果 |
|---|---|---|---|
| 准确率 Accuracy | (TP+TN)/总数 | (80+90)/200 | 0.85 |
| 精确率 Precision | TP/(TP+FP) | 80/100 | 0.80 |
| 召回率 Recall | TP/(TP+FN) | 80/90 | 0.889 |
| F1 | 2PR/(P+R) | 2×0.8×0.889/(0.8+0.889) | 0.842 |
这里必须理解为什么要有精确率和召回率两个指标。准确率在不平衡数据上会骗人:一个把所有样本都判为负类的模型,在正类只占 5% 的数据上准确率也能有 95%,但它一个正类都没抓到。精确率关心的是“你说是正类的里面有多少真的是正类”,召回率关心的是“真正的正类里你抓到了多少”,两者此消彼长。
关于模型评估的公平性,试卷上也常出现关于“算法偏见”的简答题。技术层面的标准答案是:偏见可能来自训练数据的采样偏差、标注偏差,也可能来自模型对多数类别的优化倾向。常见缓解思路包括重采样、调整类别权重,以及引入公平性约束指标(如人口统计均等、机会均等等)。回答时把“数据来源”和“算法目标函数”两条因果链讲清楚就够分了。
2.6 神经网络:反向传播与卷积尺寸计算
卷积输出尺寸的计算公式只有一行,但每年都有人算错:
输出尺寸 = ⌊(W − F + 2P) / S⌋ + 1,其中 W 是输入尺寸,F 是卷积核大小,P 是填充,S 是步长。
代入两组常考数值验证一下。
| 输入 | 卷积核 | 步长 | 填充 | 输出尺寸 | 计算过程 |
|---|---|---|---|---|---|
| 32×32 | 5×5 | 1 | 0 | 28×28 | (32-5+0)/1+1=28 |
| 32×32 | 3×3 | 2 | 1 | 16×16 | ⌊(32-3+2)/2⌋+1=⌊15.5⌋+1=16 |
参数量也要会算。第一组若输出通道 64、输入通道 3,则参数量为 5×5×3×64 + 64 = 4864,后面的 64 是偏置项。最容易丢分的是偏置那一项,很多人只算权重。
反向传播的手算题,我推荐用“交叉熵 + Sigmoid”这个组合,因为梯度会化简得非常干净。设输入 x=1,权重 w=0.5,偏置 b=0,目标 y=1。前向得 z=0.5,ŷ=σ(0.5)=0.6225,损失 L=−ln(0.6225)=0.4741。用链式法则:
| 环节 | 计算 | 结果 |
|---|---|---|
| ∂L/∂ŷ | −1/ŷ | −1.6065 |
| ∂ŷ/∂z | ŷ(1−ŷ) | 0.2350 |
| ∂z/∂w | x | 1 |
| ∂L/∂w | 三者相乘 | −0.3775 |
取学习率 0.1,更新后 w = 0.5 − 0.1 × (−0.3775) = 0.5378。你可以用一个捷径验证:交叉熵配 Sigmoid 时,∂L/∂z 恰好等于 ŷ − y = −0.3775,再乘 x 就是 −0.3775,和上面完全一致。考试时若时间紧,直接用这个捷径,但推导过程最好还是写全,因为很多老师会看步骤给分。
2.7 强化学习与智能体:MDP 与 Q-learning 更新
马尔可夫决策过程五元组 ⟨S, A, P, R, γ⟩ 必须能默写。Q-learning 的更新公式是:
Q(s,a) ← Q(s,a) + α · [r + γ · max Q(s′,a′) − Q(s,a)]
代入一组数:当前 Q(s,a)=0.5,学习率 α=0.1,即时奖励 r=1,折扣因子 γ=0.9,下一状态的最大 Q 值为 2.0。则括号里是 1 + 0.9×2.0 − 0.5 = 2.3,更新后 Q = 0.5 + 0.1×2.3 = 0.73。注意这里用的是 max 而不是加权平均,因为 Q-learning 是离线策略算法,它假设下一步会采取最优动作,这一点和 SARSA 的区别是常见选择题考点。
3. 刷题篇:题型拆解与典型题精讲
3.1 选择题:最高频的十个概念陷阱
选择题不需要多,需要准。下面这些是我从多套卷子里反复见到的陷阱,我把正确选项的判定依据也写出来,方便你自己出题检验:
| 题目表述 | 正确答案倾向 | 判定依据 |
|---|---|---|
| A* 一定比 BFS 快 | 错 | 启发式质量差时 A* 可能扩展更多节点 |
| 深度优先搜索一定能找到最优解 | 错 | 只有边权全部相同且是首次到达时才有保证 |
| 感知机能表示 XOR | 错 | 单层感知机线性可分,XOR 不是线性可分 |
| 增加隐藏层一定能降低测试误差 | 错 | 可能过拟合 |
| 朴素贝叶斯的“朴素”指算法简单 | 错 | 指特征条件独立假设 |
| 决策树信息增益越大越好 | 对(ID3 准则) | 但增益可能偏向取值多的属性,故有增益率 |
| 精确率高时召回率一定低 | 错 | 两者无必然反比关系,只是常需权衡 |
| 卷积层参数量与输入尺寸无关 | 对 | 参数量只与核大小和通道数有关 |
| 反向传播是优化算法 | 错 | 它是求梯度的方法,优化靠梯度下降等 |
| 强人工智能已在某些任务上实现 | 错 | 现有系统属专用智能 |
这张表建议自己再做一遍,把每行的“判定依据”遮住复述出来。能复述,才算真的掌握,而不是记住答案字母。
3.2 填空题与名词解释:踩分点到底在哪
名词解释的通用模板是“定义 + 关键机制 + 一个边界条件”。只写定义通常只能拿一半分。拿“启发式搜索”举例,一份能拿满分的答案大概是这样的:启发式搜索是在状态空间搜索中引入启发函数 h(n) 来估计节点 n 到目标的代价,并按 f(n)=g(n)+h(n) 排序扩展,从而在保证最优性(h 可采纳)的前提下减少扩展节点数;若 h 不可采纳,搜索可能返回次优解。
再看“过拟合”:模型在训练集上表现很好,但在验证集或测试集上表现明显变差的现象,本质是模型学到了训练数据中的噪声与偶然模式;常见缓解手段包括增加训练数据、降低模型复杂度、正则化和早停。这里的“本质”和“缓解手段”就是区分满分和及格的地方。
填空题则要注意单位和符号。熵的单位是比特,条件是 log 以 2 为底;信息增益的单位同样是比特;卷积输出尺寸要写成 ⌊·⌋+1 的形式,别漏掉向下取整。
3.3 计算题精讲:信息增益的完整过程
信息增益是决策树部分的必考题,而且计算量不小。我用经典的 14 天打球数据集来说明完整流程。
根节点的类别分布是“打球 9 天、不打球 5 天”,所以:
Entropy(S) = −(9/14)·log₂(9/14) − (5/14)·log₂(5/14) ≈ 0.940 比特。
接着对四个属性分别计算条件熵和信息增益:
| 属性 | 各取值的正负分布 | 加权条件熵 | 信息增益 |
|---|---|---|---|
| 天气 | 晴(2正3负)、阴(4正0负)、雨(3正2负) | 0.694 | 0.246 |
| 温度 | 热(2正2负)、温(4正2负)、凉(3正1负) | 0.911 | 0.029 |
| 湿度 | 高(3正4负)、正常(6正1负) | 0.788 | 0.151 |
| 风力 | 弱(6正2负)、强(3正3负) | 0.892 | 0.048 |
计算细节以小项为例:晴天的熵是 −(2/5)log₂(0.4) − (3/5)log₂(0.6) ≈ 0.971,阴天熵为 0,雨天熵同样约 0.971,加权得 (5/14)×0.971 + (4/14)×0 + (5/14)×0.971 ≈ 0.694。四个属性里天气的信息增益最大,所以根节点选天气。
提示:log₂(0.6) ≈ −0.737,log₂(0.4) ≈ −1.322,这两个数值建议直接背下来。考场上没有计算器时,靠它们能省下大量时间。
3.4 简答题与论述题:怎么写才不像背答案
论述题的评分逻辑跟计算题完全不同,老师看的是你有没有形成自己的分析框架。我总结了一个四段式结构:先给结论,再讲原理,然后举一个具体场景,最后说清适用边界。
以“人工智能的偏见问题”为例。先给结论:偏见主要来自数据与算法两个层面的耦合。原理部分讲:数据层面存在采样偏差和标注偏差,模型会放大训练集中已有的统计规律;算法层面,目标函数通常只优化整体准确率,少数群体的误差不会被惩罚。具体场景可以用招聘筛选或图像识别的例子来说明样本分布不均导致的系统性误差。边界部分要说明:完全消除偏见在技术上不现实,工程上的目标是量化并约束它,比如监控分组指标、引入公平性约束。
再以“三类智能的层次关系”这类题为例,标准框架是:生物智能是自然演化的产物,具备自主意识与适应性;人工智能是人类设计的系统,在特定任务上模仿或超越人类表现,但缺乏通用意识;计算智能强调受自然启发的计算方法,如进化计算、蚁群算法、模糊计算。回答时把三者的核心机制和边界各写一句,比堆砌定义有效得多。
3.5 设计题与编程题:手写 A* 和朴素贝叶斯
有些课程会出算法实现题,这时候千万别写伪代码糊弄,写一段能跑的 Python 更稳。A* 的核心实现如下:
import heapq def a_star(graph, h, start, goal): # graph: {node: [(neighbor, cost), ...]} # h: 启发式估值字典,要求可采纳 open_heap = [(h[start], 0, start, [start])] best_g = {start: 0} while open_heap: f, g, node, path = heapq.heappop(open_heap) if node == goal: return path, g for nxt, cost in graph.get(node, []): ng = g + cost if ng < best_g.get(nxt, float('inf')): best_g[nxt] = ng heapq.heappush(open_heap, (ng + h[nxt], ng, nxt, path + [nxt])) return None, float('inf')这里有两个细节值得在答案里点出来:一是best_g的存在是为了处理重复开放的问题,只有更优的 g 值才入堆;二是堆里存了完整路径,方便直接返回,如果只关心代价可以把路径换成父节点指针。
朴素贝叶斯实现要注意取对数:
import math def nb_predict(priors, cond, doc): # priors: {类别: 先验概率} # cond: {类别: {词: 条件概率}} scores = {} for c, p in priors.items(): s = math.log(p) for w in doc: s += math.log(cond[c].get(w, 1e-6)) # 拉普拉斯平滑的近似写法 scores[c] = s return max(scores, key=scores.get), scores那个1e-6就是未登录词的处理思路,严格来说应该做拉普拉斯平滑,把概率写成 (count + 1)/(total + 词表大小),考试里如果能写出这个公式,是很明显的加分项。
4. 常见问题与排查技巧实录
4.1 复习期卡点速查表
下面这些问题我几乎每次复习都会遇到,整理成表方便对照排查:
| 现象 | 真实原因 | 对策 |
|---|---|---|
| A* 手算总是对不上答案 | 忘记更新已开放节点的 g 值 | 每次扩展后回查开放表,标记更新 |
| 信息增益算出来是负数 | 条件熵算成大数或漏了加权 | 检查每项是否乘以该分支样本占比 |
| 卷积输出尺寸算错 | 忘记向下取整或漏加填充 | 套公式后先算括号内,再取整再加一 |
| 反向传播梯度符号搞反 | 混淆了损失对权重与对激活的方向 | 用 ŷ − y 的捷径做交叉验证 |
| 名词解释写不满 | 只写定义没写机制和边界 | 强制使用“定义+机制+边界”三段式 |
| 贝叶斯后验概率大于1 | 忘记归一化 | 分子除以所有类别分子之和 |
| 混淆精确率与召回率 | 没分清分母含义 | 记住精确率分母是“预测为正”,召回率分母是“实际为正” |
4.2 考场上的时间分配与答题顺序
这门课最大的风险不是不会,而是时间不够。我的分配原则是:开考先花两分钟扫一遍全卷,把计算量大的题目标出来;接着用最快速度做完所有选择题和填空题,这部分通常占总分四成左右,而且不需要深度思考;然后集中火力做计算题,每题给自己设一个时间上限,超时就先跳过;最后回头做简答和论述,因为论述题可以边写边想,时间利用率最高。
有一个技巧我屡试不爽:论述题先写小标题再填内容。哪怕内容还没想全,先把“数据层面”“算法层面”“工程约束”这三个小标题写上,答题纸的观感和逻辑分立刻不一样,而且写着写着思路会被结构带着走。
4.3 三种“伪掌握”的识别方法
第一种是“看答案觉得懂”。判断方法很简单:合上答案,用空白纸从零把过程写一遍,不许看任何提示。写得出来才算会。
第二种是“公式会背但不会用”。判断方法是换一个数据重新算一遍。比如你背熟了卷积公式,就拿 224×224、7×7、步长 2、填充 3 算一次,算完对一下 (224+6-7)/2+1 = 112.5,向下取整 112 再加 1 得 113。能算对,说明你真的懂取整发生在哪一步。
第三种是“概念能复述但连不起来”。判断方法是让同学随机抽两个概念,你当场说出它们的关系。能说出“A* 的启发式一致性比可采纳性更强,因为它额外约束了相邻节点的估值差”,就说明你的知识是网状的,而不是一堆孤立的卡片。
5. 资料、工具与错题本的搭配用法
5.1 错题本到底该怎么记
大部分人记错题的方式是抄题抄答案,效率极低。我的做法是只记三样东西:错因、正确思路的关键一步、以及一个自测问题。比如错了一道 A* 题,我不抄整道题,只写:“错因:没更新 B 的 g 值;关键一步:扩展 A 后要回查开放表;自测:如果 h 不可采纳,A* 还最优吗?”最后那个问题逼着我回去看理论,比抄十道题都有用。
错题本还要定期做减法。考前一天如果错题本还是厚厚一沓,说明你在复习期只做加法不做消化。正确状态是:考前三天开始,每过一遍就把已经彻底掌握的条目划掉,最后只剩半页纸。
5.2 用代码验证概念,胜过反复看教材
有些概念光靠读是读不通的,比如 Q-learning 的收敛过程、A* 在不同启发式下的扩展节点数差异、朴素贝叶斯在特征相关时的性能退化。这些用十几行代码跑一遍,理解深度完全不一样。
我特别推荐用代码验证 A* 的启发式质量。你可以自己造一个网格地图,把 h 分别设成曼哈顿距离(可采纳、一致)、欧氏距离(可采纳、一致)、以及一个放大十倍的错误启发式,然后统计三种情况下扩展的节点数。你会发现:正确启发式扩展的节点数明显少于其他两种,而错误启发式虽然看起来“搜得更快”,但返回的路径代价更大。这个实验做一次,可采纳性那段的考点你就再也不会忘了。
5.3 前沿话题的准备策略
试卷上通常有几道关于前沿应用的分值不高但白送的题,比如具身智能的数据质量要求、生成式模型的应用场景、人工智能训练师的能力构成。这些题不需要深挖,但需要几个能站得住的表述。以具身智能的数据集质量为例,可以答的维度包括:数据的真实性和采集一致性、场景覆盖度与任务多样性、时序连贯性与动作标注的准确性、以及标注规范的一致程度。每个维度一句话,就足够构成一个有层次的答案。
再比如关于人工智能学习路径这类偏开放的题,可以按“数学基础(线性代数、概率统计、微积分)→ 编程与框架 → 经典算法(搜索、机器学习)→ 深度学习 → 领域应用”的顺序展开,同时强调每个阶段的验证方式,比如数学阶段靠手推公式验证,算法阶段靠复现经典数据集验证。这样的回答比单纯罗列技术名词更有说服力。
我个人在复习这门课时最大的体会是,考前最后一天千万不要去碰那些你从来没搞懂过的难点。那些点你花两小时大概率还是半懂,但这两小时足够你把已经会的计算题再默写三遍,把简答题的框架再理顺一遍。人工智能期末考试的分数分布很集中,基础题和中等题占了七成以上,与其追逐那道 10 分的压轴设计题,不如确保那 70 分一分不丢。另外一个小技巧:进考场前把知识地图上那三条主线在脑子里默念一遍,它会帮你在一道题卡住时迅速定位到对应的知识区块,而不是慌乱地翻找记忆。