恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
AI核心课程刷题笔记:搜索策略、贝叶斯推断与梯度下降手算指南
首页
资讯中心
/
AI核心课程刷题笔记:搜索策略、贝叶斯推断与梯度下降手算指南
AI核心课程刷题笔记:搜索策略、贝叶斯推断与梯度下降手算指南
发布时间:2026/10/16 7:22:41
刷完某高校《高级人工智能原理与技术》的前5章我最大的感受是这门MOOC课程看起来是“视频课后题”的组合但真正的考验全藏在计算题里。搜索那一章会要求你手画搜索树、写Open表的变化贝叶斯部分会从先验和似然开始把后验概率一步步算出来到第5章又会让你手推一轮梯度下降的方向。很多同学在第一次刷题时习惯性地“看懂就算完成”结果一到自测就发现自己对公式的适用条件完全没概念。这篇笔记就是把1到5章那些值得反复琢磨的题按主题拆开讲一讲每类题的解题思路和踩坑记录顺带分享一套我用来复盘的学习流程。无论你是准备考试还是想把AI理论基础补扎实参考这份整理应该比重新翻一遍视频高效得多。1. 这门课的“1到5章”到底在讲什么先画地图再刷题在线课程和纸质教材有个明显区别视频是按知识点切的但课后习题往往是跨知识点的综合体。如果没有一个章节地图做题时很容易被“这题到底考的是哪段公式”卡住。我在这里把自己整理的章节框架写出来后面所有习题分析都基于这个框架展开。第一到第五章的内容大概是这样的章节核心主题课后习题常见类型我丢过分的地方第1章人工智能绪论、智能Agent概念辨析、判断题Agent类型与环境属性混在一起第2章搜索策略、博弈搜索状态空间图手算、搜索树展开、A*与α-β剪枝路径代价累加漏值、启发函数有效性判断第3章知识表示、逻辑推理语义网络读图、产生式规则正反向推理反向推理时把规则前提顺序搞反第4章不确定性与概率推理贝叶斯公式计算、条件独立判断、朴素贝叶斯分类分母归一化漏项第5章机器学习与神经网络基础损失函数计算、梯度下降手算、过拟合分析偏导方向写反这张表是刷完第一遍之后才补的。回头看我发现的第一个问题就是自己的刷题顺序不对。许多人习惯顺着视频顺序一节一节往后做但我更建议先翻一遍每章题目的类型再回来看视频。原因很简单视频讲的是“输入到输出”的推导而题目考的是“给定一个不完整条件让你补全推导路径”两种思维方向并不完全一致。带着题目去听课你会更容易抓住老师讲某个公式时究竟想解决什么。再说说这门课为什么叫“高级”。它和入门导论的最大差别不在于概念更多而在于每一项技术都被提升到了“可计算、可推导”的层面。搜索不只要背出“宽度优先遍历”要能手动维护Open表和Closed表贝叶斯不只要写出公式要能把一个实际检测场景中的先验、似然和归一化因子完整展开。这种“必须落到笔尖”的难度才是让很多人觉得刷题吃力的根本原因。所以这篇笔记里我会把计算类题目的每一步拆开尽量做到你拿着纸笔就能跟着走一遍。2. 搜索类习题状态空间、搜索树和启发函数的手算要点搜索这一章是前5章计算量比较集中的地方。课后题很少考“请说明A*算法的思想”而是直接给你一张带权的有向图让你写出算法的展开过程。手算能力在这一章几乎等于得分能力。2.1 拿到一道搜索题先分三件事我的习惯是拿到搜索题之后先做三件事。第一明确状态是什么初始节点和目标节点分别长什么样第二明确动作集合和代价函数是每走一步代价为1还是不同边上带不同权重第三明确题目要求的是图搜索还是树搜索。第三点特别容易被忽略但恰恰最影响答案。举个例子假设题目给出一个小型有向图S - A 代价2 S - B 代价5 A - C 代价1 B - C 代价2 C - T 代价3如果用一致代价搜索那么维护Open表时必须始终按累计代价g(n)从小到大排序。展开过程大概是从S出发Open表放入A(g2)、B(g5)弹出A把C放入Open表C的累计代价为213此时Open表是B(g5)、C(g3)弹出C把T放入Open表T的代价为336弹出T得到解路径S→A→C→T这里就有个常见错误有人会把S→B的代价5和S→A→C的代价3搞混因为他们记住了“B在第一次扩展时的值”却忘了后续节点的累计代价会持续变化。所以要养成一个习惯每次把节点放进Open表时顺手写成“节点(代价)”的格式比如C(3)避免后面排序时还要回头查。另一个高频坑是图搜索与树搜索的差异。图搜索会维护Closed表已经展开过的节点不会再次进入Open表而树搜索则可能允许重复节点。题目若明确说“使用图搜索”第二遍遇到同一节点时必须跳过。很多同学按照树搜索的思路把所有路径都展开导致最后多出好几个重复节点答案自然对不上。2.2 判断启发函数可采纳性我的笨办法很稳A*算法相关题目的经典问法是给定了一个启发函数h问它是否可采纳。可采纳的定义是h(n)不大于从节点n到目标的真实最短路径代价。这个定义单独看不难难的是题目往往不会直接给出真实代价而是给你一组启发值让你自己判断。我的做法是先把图上每个节点到目标的真实最短代价用类似最短路的思路标出来然后逐个节点比对h值。还是用刚才那张图从T往前推T到T是0C到T是3A到T是134B到T是235S到T可以通过A或B走最短是2136。如果题目给的h值表是h(S)5、h(A)4、h(B)4、h(C)3、h(T)0那么判断结果就是所有节点的h值都不大于真实代价因此可采纳。注意A点的h(A)4恰好等于真实代价这是允许的只要不超过就满足可采纳条件。还有一类题会给出两个启发函数h1和h2问哪个更好。判断标准是在都可采纳的前提下h值更大的那个更接近真实代价搜索效率更高。这里最容易犯的错误是看到哪个数大就选哪个而忽略了前提条件——如果更大的那个已经高估了真实代价它就不再可采纳谈不上“更好”。所以这类题的完整答题顺序应该是先分别判断可采纳性再比较支配关系最后才下结论。2.3 手写搜索过程时我推荐的表格格式搜索过程手算之所以容易丢分主要是因为过程长、节点多写着写着就乱了。经过几次教训我在草稿纸上固定用一种四列表格节点编号、父节点、g(n)、h(n)。如果题目要求A*就再加一列f(n)g(n)h(n)。这个格式的价值在于你能随时回头检查某个节点是由哪个节点扩展而来累计代价是多少。考试时老师看过程分节点之间的父子关系写清楚即使最后数值出了小差错至少步骤的得分还能保住。如果是Open表排序题还可以在表格下方单独写一行“当前Open表C(3), B(5)”这样阅卷者一眼就能看到你的排序依据。3. 知识表示与逻辑推理别急着背规则先学会“画”结构和“追”目标第3章概念上不算难但课后题一旦从“填空选择”跳到“设计一个知识表示方案”很多人就开始发懵。我遇到的题目主要有两类一类是给一张语义网络要求回答问题另一类是给几条产生式规则要求做正向或反向推理。3.1 语义网络题先分清“类节点”和“实例节点”语义网络通常由节点和弧线组成节点表示概念或对象弧线表示关系常见的有is-a、has-part、can等。答题时先找题目问的那个节点然后顺着关系弧线走。如果问“某只宠物是否会飞”就要先判断它是某个类别的实例再沿is-a找到类节点继而看类节点是否有can-fly属性。最容易出错的是属性继承的判断。默认情况下子类可以继承父类的属性实例也可以继承自己所属类的属性但如果题目在某个节点上用单独弧线注明了例外那么这个例外要优先于继承规则。比如“鸟类会飞”是一个默认属性但“企鹅不会飞”是例外在语义网络中必须显式标注不能从“企鹅是鸟类”直接推出“企鹅会飞”。这里我的做题口诀是先找路径再判例外。路径决定推理方向例外决定最终结论。只看路径不例外会掉进出题人的陷阱只背例外不看路径又可能在多级继承时弄不清哪些属性有效。3.2 产生式系统的正向推理与反向推理写法要完整产生式系统题目很经典一般会给几条规则和一组事实让你推出某个结论。比如下面这种简化规则规则1如果 有毛 那么 是哺乳动物 规则2如果 是哺乳动物 且 有蹄 那么 是偶蹄类 规则3如果 是偶蹄类 且 反刍 那么 是反刍动物事实集开始时只有“有毛”“有蹄”“反刍”。正向推理就是从事实出发不断匹配规则先由“有毛”触发规则1加入“是哺乳动物”再由“是哺乳动物”和“有蹄”触发规则2加入“是偶蹄类”最后由“是偶蹄类”和“反刍”触发规则3推出目标“反刍动物”。反向推理则是从目标出发。假如目标就是“反刍动物”那就找能推出它的规则3规则3的前提是“是偶蹄类”和“反刍”其中“反刍”已在事实集里所以继续把“是偶蹄类”作为子目标去找规则2规则2前提里“是哺乳动物”不在事实集继续寻找规则1规则1前提“有毛”在事实集推理结束。我在这类题上栽过跟头原因是只写了“触发的规则”省略了“匹配失败的规则”。比如反向推理时规则2第一次匹配需要“是哺乳动物”此时事实集里还没有如果我不写“该前提缺失继续搜索”阅卷老师就看不到推理链的完整逻辑。所以现在我会在解答里明确列出“当前目标→候选规则→前提是否满足”即使某条规则不满足也要写一句“因事实集中缺少XX规则XX不触发”。这个过程看似啰嗦却能避免自己在检查时遗漏关键中间状态得分也稳定许多。4. 贝叶斯与不确定性推理归一化这步是生命线第4章的不确定推理很多人挂在“公式写得出来数字却算不对”上。贝叶斯公式本身不复杂问题出在应用场景中各种条件概率的符号特别容易让人拎不清。4.1 一道经典检测题的完整手算题目样式大同小异某项检测灵敏度是90%特异性是95%人群患病率是1%。现在有个人检测结果为阳性问真实患病的概率是多少。先把符号理清楚先验患病概率P(D)0.01未患病概率P(not D)0.99。灵敏度代表P(Pos|D)0.90特异性代表未患病且检测为阴性的比例是0.95所以P(Pos|not D)0.05。计算过程分三步分子P(Pos|D)×P(D)0.90×0.010.009分母证据概率P(Pos)0.90×0.010.05×0.990.0090.04950.0585后验P(D|Pos)0.009/0.0585≈0.154最终答案约15.4%而不是90%。很多初学者会直接把灵敏度当成答案错在把“已知患病条件下检测阳性”和“已知阳性条件下患病”搞混了。前者是似然后者才是后验后者必须考虑群体的先验比例所以在患病率很低时阳性结果对应的真实患病概率会被压得比较低。做这类题我习惯用一句口诀先算分子再算分母最后归一化。分子是“类条件概率×先验”分母是“所有能产生该证据的概率之和”。分母一旦漏了某一项答案必然偏大或偏小因为贝叶斯定理的本质就是重新分配概率质量。4.2 条件独立与贝叶斯网络基元题第4章还经常考查“给定一个简单的贝叶斯网络计算条件概率”。比如一个三节点网络A→B→C即B的取值受A影响C的取值受B影响而A和C之间没有直接边。假设题目给出P(B1|A0)0.2P(B1|A1)0.8 P(C1|B0)0.1P(C1|B1)0.9 P(A1)0.5要你求P(C1)。这就要用到全概率公式先算P(B1)P(B1|A0)×P(A0)P(B1|A1)×P(A1)0.2×0.50.8×0.50.5再算P(C1)P(C1|B0)×P(B0)P(C1|B1)×P(B1)0.1×0.50.9×0.50.5这里有个隐藏考点C只和B直接相关所以计算C时不能跨过B去用A的概率。很多同学的错误是直接写成P(C1|A1)之类忽略了中间节点的桥梁作用。题目若问“A和C是否独立”正确的回答是“在给定B的条件下A和C条件独立但无条件时A和C不一定独立”。这个差异几乎每年都会出现值得单独标注在笔记里。4.3 朴素贝叶斯分类题的展开方式朴素贝叶斯分类题往往会给你一个小规模训练集让你判断一条新文本属于“垃圾邮件”还是“正常邮件”。做题流程是先算类别先验再对每个特征词计算条件概率最后用乘积公式比较两个类别的未归一化后验。这里要特别注意“朴素”二字的含义模型假设在给定类别后每个特征是相互独立的。正是因为有了这个假设概率乘积才成立。如果训练集中某个词在某类下从未出现条件概率会变成0乘积也被拉成0这就是所谓的“零概率问题”。解决方法通常是拉普拉斯平滑分子加α分母加α乘以类别数。alpha取1时就是常见的加1平滑。这类题目最常考的不是复杂计算而是你有没有意识到“独立性假设和零概率平滑为什么同时出现”。把这两点写清楚分数就拿到了。5. 机器学习与神经网络基础计算题才是分水岭进入第5章概念题数量明显变多但真正拉开差距的还是计算。我在课后题里反复见到的计算类型主要是三个损失与梯度、模型复杂度判断、前向传播。5.1 梯度下降手算从损失到参数更新的一轮完整流程题目通常会给出一个简单线性模型ywxb一个样本要求用均方误差做一轮梯度下降。假设样本是x1真实标签y0初始w0.5b0学习率η0.1。先做前向计算预测值ŷ0.5×100.5损失L(ŷ-y)^20.25。接着求梯度。均方误差对w的偏导是2×(ŷ-y)×x代入数值2×0.5×11对b的偏导是2×(ŷ-y)×1代入数值2×0.51。参数更新一步w0.5-0.1×10.4b0-0.1×1-0.1再做一次前向ŷ0.4×1(-0.1)0.3损失变为0.09确实下降了。这类题的高频错误有三个一是均方误差的损失定义里要不要除以样本数N题目如果写明“均方误差”最好带上1/N但若只说“损失函数为平方误差”就不除二是对w和b求偏导时记得x是特征值b的梯度只是误差项乘以1三是学习率符号写反一旦写成正号参数就会往损失增大的方向跑。这些细枝末节多刷两三道就能形成肌肉记忆。5.2 过拟合的“看图说话”与正则化题过拟合题常配一张训练误差和验证误差曲线。训练误差一直下降验证误差下降到某个点后开始回升那个拐点就是过拟合开始的临界位置。答题时除了指出拐点还要说明可以采取的措施数据扩增、正则化、早停、交叉验证、降低模型复杂度等。这里有个表述上的坑不要笼统地说“越复杂的模型越容易过拟合”。模型复杂度必须放到数据和训练策略的语境里讨论一个参数量大的模型如果配了充足数据和有效正则化也不一定过拟合。题目若问“正则化惩罚项为什么能缓解过拟合”可以从“惩罚大权重让模型趋于平滑”的角度回答而不是只背“降低复杂度”四个字。5.3 神经网络前向传播与激活函数第5章的神经网络题通常还停留在基础层面比如判断感知机能否解决异或问题或者给一个两层小网络手算一次前向传播。手算前向传播时我建议严格按“输入→权重→加偏置→过激活函数→输出”五步走每一步都写清楚标签可以有效防止过程分流失。我的踩坑记录里有一条很典型把激活函数误当成参与权重更新的函数。激活函数只负责做非线性映射不直接决定梯度更新后的形状。等到反向传播时激活函数的导数要以链式法则乘进梯度里这一步经常被漏掉。我就曾因为没写sigmoid的导数项导致整道反向传播题答案偏了一截。为了不再犯我给自己的笔记加了一行前向传播写“通过激活函数”反向传播写“乘上激活函数的导数值”两者永远成对出现。6. 我的一套“三天一轮”复盘法笔记写到这里再分享一个我用来消化1到5章的复习流程。这个方法不一定适合所有人但对我个人很有效因为它没有停留在“看懂”层面而是逼着大脑做检索。第一天我会不看任何资料把每章的课后题按记忆先写一遍能写多少写多少。这个过程通常会“惨败”但正好暴露记忆空隙。第二天我带着第一天没写出来的题目去回看对应视频只看相关的小段然后把错题重做一遍要求每道题的推理过程完整写到纸面。第三天合上所有材料用一张白纸把每章内容压缩成半页提纲写不出来的部分就是需要再巩固的部分。这个方法本质上是利用了“检索练习”的机制。抽题逼自己回忆回忆失败后再重新学习记忆留存率会显著高于单纯翻三遍笔记。对于那些需要手算的章节我还会刻意在第三天把计算题重新算一遍而不是看一眼答案就算过。我还习惯在每章末尾整理一份易错清单每一条都尽量短。比如图搜索维护Closed表不重复展开已扩展节点贝叶斯归一化分母不能漏项灵敏度不是后验概率条件独立是有条件的别把无关系当独立梯度更新方向要沿负梯度学习率符号别写反考试前只翻这份清单比临时翻全书管用得多。以上是我个人刷完第1到5章后的完整笔记和复盘记录后面刷到值得展开的章节我再来接着更新。