☰
高级人工智能期末复习:决策树、反向传播与贝叶斯网络手算套路
2026/10/16 12:44:25 网站建设 项目流程

在高校人工智能类课程的收官阶段,最磨人的往往不是某个具体的知识点,而是面对一门覆盖搜索、推理、机器学习、深度学习、概率图模型等多条主线的课程,你根本不知道期末那张卷子会从哪个角落出题。“高级人工智能”这门课尤其如此——它顶着“高级”两个字,但MOOC平台上的习题和期末考试往往考得又细又杂,既有需要手算的经典算法题,又有需要辨析概念的客观题,稍不留神就会在阴沟里翻船。

这篇内容是我刷完某平台“高级人工智能”课程全部章节、啃完历年期末试题之后沉淀下来的复习笔记和答题套路。我尽量不堆砌空话,直接讲清楚这门课期末到底在考什么、哪些地方最容易丢分、手算题怎么一步步做不跳步、概念题怎么从出题人视角去排除干扰项。适合正在准备该课程考试、MOOC结课测验,或者想系统梳理AI核心知识框架的同学参考。

1. 备考思路:先摸清这门课的出题逻辑,再动手刷题

1.1 这门课的知识版图与本学期的命题风向

“高级人工智能”虽然各个学校、各个平台的教学大纲有差异,但主干脉络基本一致,大致可以划分为五条线:

  • 搜索与博弈:从盲目搜索到启发式搜索,再到对抗搜索(极小极大、Alpha-Beta剪枝)。
  • 逻辑推理与知识表示:一阶逻辑、归结原理、产生式系统、语义网络等。
  • 机器学习经典算法:决策树、朴素贝叶斯、SVM(支持向量机)、聚类、集成学习。
  • 深度学习入门:神经网络结构、反向传播、CNN/RNN的基本概念与计算。
  • 概率图模型与其他进阶主题:贝叶斯网络、马尔可夫模型、强化学习基础等。

从我刷过的几套MOOC期末题来看,命题风格非常“均衡”:大约三成是概念辨析题,四成是计算推导题(比如手写决策树分裂条件、手算贝叶斯后验概率、手动模拟Alpha-Beta剪枝过程),剩下两成是结合场景的简答题(比如给你一个搜索问题让你设计启发式函数),还有一成可能涉及开放性论述。这意味着如果你只背概念不看计算,分数是会很难看的。

1.2 题库与往年试卷的使用策略:不要做一题丢一题

很多同学拿到MOOC习题集就开始按顺序刷,做完对答案,错了就看一眼解析,然后翻下一篇。这种做法在“高级人工智能”这门课上效率极低,因为大部分题目的考点是重叠的,你第一遍刷错的知识点如果不主动归纳,刷到第三套题还是会错。

我的建议是准备一个“考点-错题”对照表,每做完一套题,就把错题对应的考点记下来,比如“模糊了A*算法的可采纳性条件”“决策树信息增益算到一半对数底数搞混”等等。考前三天只看这张表,比重新刷十套题管用得多。另外,MOOC的题库往往有随机抽题机制,同一道题换个数字、换个场景就会变样子,所以千万不要背答案,要背推导过程。

1.3 按“高频考点权重”分配复习时间,而不是按章节页数分配

复习时间永远是稀缺的。按照考试出题密度,我给各板块的时间分配建议是这样的:搜索与博弈占20%复习时间,机器学习基础占30%,深度学习占20%,逻辑推理占15%,概率图模型与杂项占15%。为什么机器学习占比最重?因为这一块既能出概念题(比如“Bagging和Boosting的区别”),又能出计算题(比如“给定数据集计算基尼系数”),还能出简答题(比如“如何解决过拟合”),出题人的操作空间最大。

相比之下,逻辑推理里的归结原理虽然难,但题型相对固定,基本就是给你一组子句让你推导空子句,掌握了模板之后拿分反而容易。

2. 核心考点拆解:哪些知识点年年考、哪些是送分陷阱

2.1 搜索与博弈:A*、可采纳性与Alpha-Beta剪枝的解题套路

搜索部分几乎是必考的计算题来源。A*算法最重要、也最容易被出题人拿来挖坑的考点有两个:一是评估函数f(n) = g(n) + h(n)中g(n)必须是实际代价,h(n)必须是可采纳的(即永远不大于真实代价);二是OPEN表的处理顺序会直接影响搜索扩展节点的顺序,但不会影响最终路径的代价。

考试里最常见的错误是把h(n)当成随意估计。比如题目给出一个八数码问题,有人为了图方便把启发函数设为“不在目标位置的数字个数”,这其实是一个可采纳的启发函数,因为每个不在位的数字至少需要移动一次;但如果把启发函数设计成“每个数字到目标位置的曼哈顿距离之和再乘以2”,那这个启发函数就不可采纳了,A*就退化成了不一定能找到最优解的状态。这种地方,出题人特别喜欢伪装成“让你选择一个合适的启发函数”的送分题,实际在考你对可采纳性的理解。

Alpha-Beta剪枝的手算模拟也是高频题。解题的关键动作是先画搜索树,标出MAX层和MIN层,然后从左到右进行深度优先遍历。剪枝规则只有一句话:在MIN层,如果某个子节点的值已经小于或等于当前已知的MAX层下界(α值),就可以剪掉后面的兄弟节点;在MAX层,如果某个子节点的值已经大于或等于当前已知的MIN层上界(β值),就可以剪掉。很多人背了这句话但做题还是错,原因在于顺序很关键——必须是深度优先、从左到右,而且每到一个节点都要先更新当前的α、β区间再判断是否剪枝。建议考前至少手算两道完整题目,把α、β的传递路径捋顺。

2.2 机器学习经典算法:信息增益、基尼系数与朴素贝叶斯的计算细节

决策树部分的信息增益计算,是期末考试性价比极高的一道大题,因为它套路固定:给你一个小数据集,让你算某个属性的信息增益,然后选分裂属性。这里有几个特别容易翻车的细节:

  • 熵的计算中log的底数,很多教材用2,如果题面没说明,默认用2,信息增益的单位是比特(bit)。如果题目明确说用自然对数,那就用ln,不要混用。
  • 约定0 * log(0) = 0,这是数学上的规定,考试时必须写出来,否则计算过程不完整。
  • 信息增益 = 分裂前的熵 - 分裂后各子集熵的加权平均,这个“加权”用的是子集的样本数占比,而不是某个固定权重。

基尼系数的计算相对简单,但容易被小样本数据坑到。比如一个只有三五个样本的二分类数据集,基尼系数算出来常常是0.44、0.32这种很别扭的数,如果验算发现两个属性的基尼系数差得极小,也别慌,就按计算结果选小的那个作为分裂属性。

朴素贝叶斯在考试中通常以“给定训练数据,预测新样本类别”的形式出现。做这类题一定要检查一个前提:题目给的是先验概率和条件概率,还是原始数据让你自己估计。如果是原始数据,记得用拉普拉斯平滑(Laplace smoothing)处理零概率问题——除非题目明确说不平滑,否则当某个特征值在训练集中没出现过时,直接概率为零会让整个连乘结果归零,这在真实场景中非常常见,也是必考点。

2.3 深度学习与反向传播:从神经元计算到链式法则

深度学习部分的题往往不算太难,但范围很广。常见的题型包括:给定一个简单神经网络(一两层、三五个神经元),让你手算一个前向传播的输出;或者给定损失函数,让你手推一次反向传播的梯度更新值。

前向传播的关键是别漏掉激活函数。常见的做法是先算加权和 ( z = w \cdot x + b ),再套激活函数 ( a = \sigma(z) ),如果题目给的激活函数是Sigmoid,那么sigmoid函数的导数有一个很讨巧的形式:( \sigma'(z) = \sigma(z)(1 - \sigma(z)) ),这个在反向传播手算时能省掉大量时间。

反向传播最容易出错的地方是“维度匹配”和“链式法则的中间变量”。我的答题习惯是每一步都画出计算图中的节点和边,给每个中间变量起好名字(比如z1、a1、z2、a2),然后用链式法则从输出端往回逐层拆解。这样看起来慢,但正确率很高。另一个容易被忽略的细节是偏置项b的梯度,它等于该层误差的求和,而不是逐元素对应,很多同学在算梯度时把b当作权重w一样处理,导致更新公式写错。

2.4 概率图模型与逻辑推理:贝叶斯网络和归结原理的模板化解法

贝叶斯网络相关题目大多数是“给定网络结构和条件概率表,求某个联合概率或后验概率”。解题思路其实非常机械:先把联合概率按照网络结构展开成条件概率的乘积,然后把已知数值带入,最后如果不满足条件就问什么条件,用贝叶斯公式做分母归一化。要注意网络中的“独立关系”往往被出题人用来制造干扰项,比如明明两个变量在给定第三个变量时条件独立,题目却故意给了一堆不相关的概率让你绕弯路。

归结原理题目也有固定套路:先把待证明的结论取反,化成子句集,然后反复利用归结规则找互补文字对,直到推出空子句。考试中常见的失分点是在化为子句集时,量词消去步骤做错。特别是“存在量词”需要引入Skolem函数或常量,很多人把顺序搞反,导致后面整个推导过程无效。我的建议是考前专门用两道典型题把“前束范式→Skolem化→子句集”的流程抄写三遍,形成肌肉记忆。

3. 实操演练:两道高失分率题目的完整手算与避坑记录

3.1 手算模拟:基于信息增益的决策树属性选择过程

下面用一个微型数据集完整走一遍流程,这是考试中最典型的一类大题。

假设训练数据有14个样本,目标变量是“是否适合外出运动”,特征有两个:天气(晴、阴、雨)和风力(强、弱)。已知四个统计值:

  • 总样本中“适合”占9个,“不适合”占5个。
  • 天气为“晴”的样本中有2个适合、3个不适合。
  • 天气为“阴”的样本中4个全部适合。
  • 天气为“雨”的样本中3个适合、2个不适合。
  • 风力为“强”的样本中3个适合、3个不适合。
  • 风力为“弱”的样本中6个适合、2个不适合。

第一步,计算分裂前的经验熵。总熵为:

[ H(D) = -\frac{9}{14}\log_2\frac{9}{14} - \frac{5}{14}\log_2\frac{5}{14} \approx 0.940 \text{ bit} ]

第二步,按“天气”属性分裂。计算每个子集的熵:

  • 晴:5个样本,2正3负,熵为 ( -\frac{2}{5}\log_2\frac{2}{5} - \frac{3}{5}\log_2\frac{3}{5} \approx 0.971 )
  • 阴:4个样本,4正0负,熵为 0
  • 雨:5个样本,3正2负,熵为 ( -\frac{3}{5}\log_2\frac{3}{5} - \frac{2}{5}\log_2\frac{2}{5} \approx 0.971 )

分裂后条件熵为:

[ H(D|天气) = \frac{5}{14} \times 0.971 + \frac{4}{14} \times 0 + \frac{5}{14} \times 0.971 \approx 0.694 ]

信息增益:

[ Gain(D, 天气) = 0.940 - 0.694 = 0.246 ]

第三步,按“风力”属性分裂:

  • 强:6个样本,3正3负,熵为1.0
  • 弱:8个样本,6正2负,熵为 ( -\frac{6}{8}\log_2\frac{6}{8} - \frac{2}{8}\log_2\frac{2}{8} \approx 0.811 )

分裂后条件熵:

[ H(D|风力) = \frac{6}{14} \times 1.0 + \frac{8}{14} \times 0.811 \approx 0.892 ]

信息增益:

[ Gain(D, 风力) = 0.940 - 0.892 = 0.048 ]

因为天气属性的信息增益更大,所以第一个分裂属性选择“天气”。这道题在考场上平均耗时不会超过8分钟,但几乎每年都有同学在“熵的对数底数”或“加权系数”上出错。我的习惯是在草稿纸上先写清楚“权重 = 子集样本数 / 总样本数”,再代入计算,避免心算出错。

3.2 从零手推一轮反向传播:变量命名与维度检查是成败关键

第二个高频失分题型是反向传播。假设有一个最简单的小网络:输入 ( x = 1 ),第一层权重 ( w_1 = 0.5 ),偏置 ( b_1 = 0 ),激活函数为Sigmoid;第二层权重 ( w_2 = -0.8 ),偏置 ( b_2 = 0.2 ),输出层不使用激活函数,损失函数为平方误差,真实标签 ( y = 1 ),学习率 ( \eta = 0.1 )。要求更新一次 ( w_2 ) 和 ( b_2 )。

前向传播:

  • 第一层加权和 ( z_1 = w_1 \times x + b_1 = 0.5 \times 1 + 0 = 0.5 )
  • 激活输出 ( a_1 = \sigma(z_1) = \frac{1}{1 + e^{-0.5}} \approx 0.6225 )
  • 第二层输出 ( \hat{y} = w_2 \times a_1 + b_2 = -0.8 \times 0.6225 + 0.2 = -0.298 )

损失:

[ L = \frac{1}{2}(y - \hat{y})^2 = \frac{1}{2}(1 - (-0.298))^2 \approx 0.842 ]

反向传播,先算输出层误差:

[ \delta_2 = \frac{\partial L}{\partial \hat{y}} = \hat{y} - y = -0.298 - 1 = -1.298 ]

(这里注意,因为损失函数是 ( \frac{1}{2} ) 的平方误差,导数正好是 ( \hat{y} - y ),不用再乘2。)

所以:

[ \frac{\partial L}{\partial w_2} = \delta_2 \times a_1 = -1.298 \times 0.6225 \approx -0.808 ]

[ \frac{\partial L}{\partial b_2} = \delta_2 = -1.298 ]

更新:

[ w_2^{\text{new}} = w_2 - \eta \times \frac{\partial L}{\partial w_2} = -0.8 - 0.1 \times (-0.808) = -0.719 ]

[ b_2^{\text{new}} = b_2 - \eta \times \frac{\partial L}{\partial b_2} = 0.2 - 0.1 \times (-1.298) = 0.3298 ]

如果题目要求继续更新 ( w_1 ),则需要用到链式法则:

[ \frac{\partial L}{\partial w_1} = \frac{\partial L}{\partial \hat{y}} \times \frac{\partial \hat{y}}{\partial a_1} \times \frac{\partial a_1}{\partial z_1} \times \frac{\partial z_1}{\partial w_1} ]

其中 ( \frac{\partial \hat{y}}{\partial a_1} = w_2 = -0.8 ),( \frac{\partial a_1}{\partial z_1} = a_1(1 - a_1) \approx 0.6225 \times 0.3775 \approx 0.2350 ),( \frac{\partial z_1}{\partial w_1} = x = 1 )。

所以:

[ \frac{\partial L}{\partial w_1} \approx (-1.298) \times (-0.8) \times 0.2350 \times 1 \approx 0.244 ]

我在这里特别强调,写清楚每个中间变量及其维度,既能防止自己算到后面忘记前面的结果,也方便考试时检查。很多同学把 ( \delta_2 ) 算出来后,直接把它当作 ( \delta_1 ),一路往前乘,最后梯度符号完全反掉。反向传播的误差是逐层“传播”的,每一层都要用自己的激活函数导数和本层输入来过渡,千万不要跳步。

4. 概念辨析与简答题:出题人视角下的高频陷阱

4.1 过拟合、欠拟合与模型容量的边界,怎么答才不丢分

简答题里“过拟合与欠拟合的区别及解决方案”几乎是必考题,但很多同学拿不到满分,原因是答案太笼统。答题时建议分点列出:

  • 过拟合的表现是训练误差低、验证误差高;欠拟合则是训练误差和验证误差都高。
  • 过拟合的解决方案包括:增加训练数据、正则化(L1/L2)、Dropout、早停法、降低模型复杂度。
  • 欠拟合的解决方案包括:增加模型复杂度、增加特征、减少正则化强度、训练更长时间。

如果题目给出具体场景(比如“训练集只有200张图片,模型是深层CNN”),一定要结合场景作答,直接指出“数据量过少而模型参数过多,容易导致过拟合,应采用数据增强、迁移学习或选用更简单的模型”。这种结合场景的回答会被判卷人视为有分析能力,而不仅仅是背知识点。

4.2 容易混淆的术语对比:这五组考频最高

“高级人工智能”期末概念题最喜欢把长得很像、容易混淆的术语放在一起考,我整理了五组高频对比,考前务必做到能用自己的话解释清楚:

  • Bagging与Boosting:Bagging是并行训练多个弱学习器然后投票/平均,降低方差;Boosting是串行训练,每个新学习器重点关注之前被分错的样本,降低偏差。
  • 生成模型与判别模型:生成模型学习联合概率分布 ( P(X,Y) ),像朴素贝叶斯、隐马尔可夫模型;判别模型直接学习条件概率 ( P(Y|X) ) 或决策边界,像逻辑回归、SVM、神经网络。
  • 强人工智能与弱人工智能:弱人工智能只擅长特定任务(下棋、识别图片),强人工智能具备通用认知能力,能够像人一样解决任意智力问题,目前尚未实现。
  • 有监督学习与无监督学习:前者需要标注好的 ( (X,Y) ) 对,后者只有 ( X ),目标是发现结构,如聚类、降维。
  • 梯度下降与随机梯度下降:梯度下降每次用全量数据计算梯度,稳定但慢;随机梯度下降每次用一个样本估算梯度,快但有噪声,常配合学习率衰减使用。

4.3 复杂问题怎么用“分点-术语-例子”三段式拿稳分数

开放性简答题(比如“谈谈你对可解释人工智能的理解”)往往是很多人最头疼的,因为不知道该写多少、写多深。我总结了一个通用的三段式答题模板,保证拿到平均分以上:

  • 第一段:给出定义或背景,用一两句话说明这个问题为什么重要。
  • 第二段:分点展开,每点都要有一个专业术语或核心概念支撑。比如谈可解释性,可以提“事后解释”和“事前解释”的区别,提LIME、SHAP这类常见工具,提“解释的忠实性”与“解释的可理解性”之间的权衡。
  • 第三段:给出一个具体例子或场景,比如“在医疗影像辅助诊断中,医生不仅需要知道模型判断为阳性,还需要知道模型关注了图像中哪个区域”,让答案落地。

5. 考前72小时冲刺:从刷题模式切换到拿分模式

5.1 最后三天只看三样东西:公式卡片、错题清单、推导过程

考前三天不建议再大量刷新题,而是转入“止损模式”。我自己的做法是准备三份材料:

  • 公式卡片:把熵、信息增益、基尼系数、贝叶斯公式、Sigmoid导数、A*评估函数、Alpha-Beta剪枝条件、反向传播链式法则等公式写在小卡片上,每天早饭、睡前各过一遍。
  • 错题清单:按章节归纳之前做错的题目,重点看那些“思路对但细节错”的题目,比如把“信息增益选最大”记成“选最小”,这类错误最可惜。
  • 推导过程:把决策树属性选择、反向传播更新、贝叶斯网络推断这三类计算题的完整推导过程默写一遍,做到不看笔记也能从头写到尾。

5.2 考场上最容易犯的五个低级错误

结合我在多轮模拟和实际考试中的观察,低级失分往往集中在以下五个地方:

  • 没有看题目对数的底数要求,想当然用log2,结果和标准答案差一个常数倍。
  • 决策树计算信息增益时,忘记乘子集的样本占比权重。
  • Alpha-Beta剪枝手算时,没有按深度优先从左到右的顺序推进,导致剪枝位置判断错误。
  • 反向传播更新参数时,把减号写成了加号(注意参数更新是朝负梯度方向)。
  • 朴素贝叶斯遇到零概率时没有做平滑,导致整个连乘结果归零。

这些错误没有一个是真的“不会做”,全是审题不细或计算习惯不好导致的。我的建议是每道计算题做完后,用“量纲/数量级”快速检验一遍:比如信息增益是一个不大于分裂前熵的非负数,如果算出来是负数或大于1,大概率算错了;反向传播更新的参数变化幅度通常不大,如果一次更新后参数跳了好几倍,也说明梯度计算可能有问题。

5.3 记忆技巧:把抽象公式翻译成生活场景

很多同学觉得公式记不住,是因为在死记符号。我习惯把核心算法翻译成场景故事:

  • 信息增益就是在问“按这个属性切一刀,能把数据分得有多纯”。
  • 贝叶斯公式就是在问“看到某个证据后,我对某个假设的信念更新了多少”。
  • 反向传播就是“从输出端的错误出发,一层层把责任分摊回每个参数”。
  • Alpha-Beta剪枝就是“当我已经知道当前选择不可能是最优时,没必要再看剩下的选项”。

一旦公式和直觉挂上钩,考场上一时半会想不起符号时,可以从场景反推,往往能救回一道大题。

6. 常见问题速查:考前答疑环节的独家笔记

6.1 计算量太大做不完,怎么分配做题顺序

不少同学反映“高级人工智能”期末卷子计算量大,时间不够用。我的建议是开考后先把所有题目快速扫一遍,标记出哪些是“看一眼就能答”的概念题,哪些是“需要10分钟起步”的计算大题。先花20分钟解决掉所有概念题和简单计算题,把基础分拿到手,再集中火力攻克大题。

如果某道计算题做到一半发现卡壳,果断跳过,不要恋战。大题往往有前置分的设置,比如决策树那题即使最后信息增益算错,前面的熵和条件熵计算步骤也是能拿分的,所以一定要把步骤写完整,哪怕最终答案不确定。

6.2 遇到没见过的开放题,怎么避免交白卷

“高级人工智能”考试偶尔会有一道结合前沿热点的论述题,比如“谈谈大语言模型对传统AI研究范式的影响”。这类题没有标准答案,但也不是乱写就能得分。

我的做法是套用“是什么-为什么-怎么样”的框架:先给一个定义或背景说明,再分析它能解决什么问题、带来什么挑战,最后结合一个具体应用场景收尾。即使你对这个话题了解不深,只要能用上学过的术语(比如“预训练”“微调”“涌现能力”“对齐问题”“算力成本”等),把逻辑捋顺,就能拿到大部分基础分。最忌讳的是只写两三句话或者直接写“不了解”,这样一分都拿不到。

6.3 平时做题正确率高,一上考场就手忙脚乱怎么办

如果你平时刷题正确率不错,但模拟考或正式考试时总感觉时间紧、脑壳懵,多半是缺乏“限时训练”。考前至少安排两套完整试卷,严格按考试时间来做,中间不翻书、不暂停,模拟真实考场节奏。我第一次模拟考时同样被计算量打乱节奏,后面连续做了三套限时题,才逐步找到了适合自己的“概念题速答+计算题分步写”的节奏,正式考场上的发挥明显稳定很多。

写在最后

“高级人工智能”这门课的期末考试,与其说是在考智商,不如说是在考熟练度和细致程度。搜索、决策树、朴素贝叶斯、反向传播这些计算题,只要平时动手推过三五遍,考场上几乎就是肌肉记忆;概念辨析题靠的是平时学习时多问一句“这两个东西到底差在哪”。我自己复习过程中踩过最大的坑就是早期只刷题不总结,导致同一个坑反复掉,后来改成“错题归因-考点归类-针对性练模板”三步走,效率才真正提上来。距离考试还有时间的话,别只顾着看新知识,把做过的题吃透、把推导过程写顺,比什么都重要。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询