简介:这份百度人工智能经典考试试题文档面向备考AI课程考试、梳理知识框架的高校学生与求职者,围绕语义网络、推理、知识表示、机器学习、自然语言处理等核心板块组织内容,可用于考前自测、课堂复习与面试前的概念查漏。压缩包内为1个doc文件,约279KB,篇幅紧凑却覆盖选择题、填空题、简答计算题与应用题四种题型,并附有对应参考答案,从AI英文缩写、消解法证明、正向推理等基础判断,到不确定性分类、可信度CF运算、谓词公式子句集与MGU求解,再到语义网络建模和α-β剪枝,形成由概念到计算的递进练习。文档还对相关知识点做了归纳说明,便于对照题目回看定义与方法。目前已有1588人学习,适合希望用一份题量适中的试卷快速检验掌握程度、补齐薄弱环节的读者。
1. 一份老派的人工智能经典考试题,藏着整套 AI 骨架
第一次翻到这份人工智能经典考试题的人,往往会有两种反应:一种是“这些名词我好像都见过”,另一种是“真让我解释,一个也说不清”。这很正常。今天大家谈 AI,聊的是模型、参数、算力,而这类老试题问的却是另一套东西——知识怎么存、结论怎么推、搜索怎么剪枝。它们不新,但它们是骨架。搞懂这套骨架,再回头看今天那些热闹的词,你会发现自己不再是“听个响”,而是能指出某个说法到底站在哪根骨头上。这篇就把这份资料里反复出现的几个核心概念,一个一个拆开讲透。
2. 知识表示:机器拿什么“记住”一条常识
人和人之间传递知识,靠一句话就够了:“老李是大李的父亲,大李是小李的父亲。”可机器拿到这句话,既不知道“父亲”是个什么东西,也不知道这句话能推出什么。所以人工智能领域有一门基础功课叫知识表示——把人类脑子里的常识,翻译成机器能存储、能检索、能运算的形式。
这件事难在哪儿?难在你既要保真,又要可用。保真,是说翻译过去不能丢信息;可用,是说翻译完还得方便机器做推理。同一句“老李是大李的父亲”,用关系图存是一种样子,用 IF-THEN 规则存是另一种样子,用逻辑公式存又是第三种样子。下面这三种,就是这份资料里出现频率最高的几种表示方法。
2.1 语义网络:把一句话拆成一张关系图
语义网络的基本构造特别简单:节点代表概念或对象,有向边代表它们之间的关系。上面那句话画出来,就是“老李”指一条边到“大李”,边上标“父亲”;“大李”再指一条边到“小李”,边上同样标“父亲”。三个节点、两条边,一句话的意思就存下来了。
打个比方,语义网络很像家谱或者思维导图。你不需要读完一整段文字,只要顺着线走,就能知道谁和谁是什么关系。
这份资料里反复考的一个点是:有向弧上的AKO 链和ISA 链,是用来表达节点知识的什么特性?答案是继承性。
这两个缩写值得说清楚。ISA 是 “is a” 的缩写,AKO 是 “a kind of” 的缩写,两者都在说“下位概念是上位概念的一种”。比如“麻雀 ISA 鸟”“鸟 AKO 动物”。一旦这条链建立起来,上位节点身上挂着的属性,下位节点就自动拥有——鸟会飞,麻雀是鸟,那么不必再单独给麻雀写一条“会飞”。这就是继承。
继承性为什么重要?因为它让知识库不必重复。你想想,如果每个具体概念都要把上位概念的属性重抄一遍,那知识库会膨胀到没法维护,改一处还得改一百处。继承把这件事变成了“只在最合适的那一层写一次”。
提示:语义网络的“边”不是随便标的。ISA、AKO 这类边带有推理含义,普通的“住在”“年龄是”只是属性关联,不产生继承。混淆这两类边,是初学者最常见的失分点。
2.2 产生式规则:IF-THEN 这套老骨架
如果说语义网络是“画图”,那产生式就是“写规则”。它的基本形式只有一行:
IF P THEN Q或者写成P → Q。这里的 P 叫前提(前件),用来判断这条规则当前能不能用;Q 叫结论或操作(后件),表示前提一旦满足,应该得出什么或者执行什么。
产生式规则的语义也非常直白:如果前提 P 被满足,就可以推出结论 Q,或者执行 Q 所规定的操作。
一个完整的产生式系统由三部分组成,这三部分几乎是必考内容:
| 组成部分 | 作用 | 通俗理解 |
|---|---|---|
| 规则库 | 存放领域内的产生式规则集 | 一本“如果……就……”手册 |
| 综合数据库 | 存放当前已知事实、中间结果和最终结果 | 一块写着当前进展的白板 |
| 推理机 | 控制规则库与数据库如何配合运行 | 一个决定下一步用哪条规则的调度员 |
推理过程中,当某条规则的前提被当前事实满足,这条规则就“可以触发”;而从所有可触发规则里挑一条真正执行,这条被执行的就叫被触发规则。这个说法看着绕,其实就是“能用的规则”和“这次用了的规则”的区别。
用几十行代码,就能把这套循环跑起来:
# 规则库:每条规则写成 (前提集合, 结论) rules = [ ({"下雨"}, "地面湿"), ({"地面湿"}, "路滑"), ] facts = {"下雨"} # 综合数据库:当前已知事实 fired = [] # 记录被触发过的规则 changed = True while changed: changed = False for premise, conclusion in rules: # 前提全部满足,且结论还是新事实,才触发 if premise <= facts and conclusion not in facts: facts.add(conclusion) fired.append((premise, conclusion)) changed = True print(facts) # {'下雨', '地面湿', '路滑'} print(fired) # [({'下雨'}, '地面湿'), ({'地面湿'}, '路滑')]这段代码里,premise <= facts是集合包含判断,意思是“前提集合里的每一个元素都已在事实集合中”。changed这个变量控制“这一轮到底有没有产生新事实”,只要有新事实产生,就还得再扫一遍规则库,因为新事实可能点燃新规则。fired记录下来的,正是被触发规则的执行顺序。
跑一遍就能看出产生式系统的性格:它是数据驱动的。事实越多,能匹配上的规则越多,推理就一层层往下滚。这种性格很适合表达“经验型”的知识——医生看病、老师判卷、设备报警,都是从若干现象出发,套一条条经验规则得出结论。
2.3 谓词逻辑与子句集:把自然语言翻译成机器能算的式子
语义网络胜在直观,产生式胜在好用,但两者都有一个软肋:没法严格证明。你说“老李是小李的祖父”,图上是这么连的,规则是这么推的,可万一连错了呢?逻辑表示就是来解决“严谨”这件事的。
谓词逻辑里,一个命题被拆成“谓词 + 个体”。比如“老李是大李的父亲”,写成F(老李, 大李),其中 F 表示“是……的父亲”这个关系。一旦写成这种形式,机器就能做符号运算,一步一步推到结论。
这份资料里有一道选择题专门问:仅个体变元被量化的谓词,称为什么?答案是一阶谓词。这个区分很关键——如果连谓词本身也能被量化(比如“对所有关系 R 都成立”),那就是二阶谓词,处理起来复杂得多。日常考试和绝大多数工程场景,用的都是一阶谓词。
机器要拿公式做推理,得先把它加工成标准形态,也就是子句集。原文给出了八个步骤,值得完整过一遍:
- 消去蕴含式(→)和等价式(↔);
- 缩小否定词的作用范围,直到它只作用于原子公式;
- 适当改名,使量词之间不含同名指导变元和约束变元;
- 消去存在量词,形成 Skolem 标准型;
- 消去所有全称量词;
- 化成合取范式;
- 适当改名,使子句之间无同名变元;
- 消去合取词,用逗号代替,以子句为元素组成集合 S。
第三步和第七步都是“改名”,很多人会疑惑为什么要改两次。原因不同:第三步是防止量词辖域之间的变量名打架,第七步是防止不同子句之间的变量名打架。子句之间不能共享变量名,否则消解的时候会把两个本来无关的东西错误地替换到一起,这是很隐蔽的一个坑。
第四步提到的Skolem 函数也常被问到。当存在量词落在全称量词的辖域内时,那个“存在的 x”其实依赖于 y 的取值。用一个函数把这个依赖关系显式写出来,这个函数就叫 Skolem 函数。说白了就是把“对每个 y 都存在某个 x”里的“某个 x”,改写成f(y)——依赖关系摆到明面上,机器就好处理了。
3. 推理:从已知推到未知,中间到底发生了什么
知识存下来是为了用,用的方式就是推理。这份资料里跟推理相关的题目密度很高,而且几个概念经常被混着考。这一章把它们分开摆清楚。
3.1 正向推理与反向推理:从事实出发,还是从目标倒推
产生式系统里,推理方向是最基础的一个分类。
正向推理是“从已知事实出发,通过规则库求得结论”。手里先有一堆事实,看哪条规则的前提能对上,对上就执行,得出新结论,新结论再加进事实堆,继续往下滚。它由数据驱动,问的是“我手上这些事实,能推出什么来”。
反向推理反过来,先摆出目标,问“要证明这个目标,需要哪些条件成立”,然后把这些条件当成新的子目标继续往下追,直到追到已知事实上为止。它由目标驱动,问的是“想得到这个结论,我还缺什么”。
| 维度 | 正向推理 | 反向推理 |
|---|---|---|
| 起点 | 已知事实 | 待证目标 |
| 驱动方式 | 数据驱动 | 目标驱动 |
| 典型问法 | 这些事实能推出什么 | 要证明它,需要哪些前提 |
| 适合场景 | 事实多、可能结论少 | 候选结论少、事实多 |
还有一个双向推理,是从两头同时往中间推,中间接上了就结束。这种方式在实际系统里也有用,但考试里出现频率不如前两种高。
哪些场景用哪种,其实取决于“哪一头更小”。如果你手上有一大堆症状,想筛出可能的疾病,那就是事实多、结论少的局面,正向推理更顺手;如果你心里已经锁定几个嫌疑故障,想去核对该具备什么条件,那反向推理更省事。
3.2 归结原理:把“证明”做成消消乐
归结原理,也叫消解,是机器证明定理的主力方法。它的核心动作只有一个:把两个含有互补文字的子句消掉那一对,剩下的部分并起来。
形式化一点说,子句C1 = L ∨ C1',C2 = ¬L ∨ C2',其中 σ 是互补文字的最一般合一置换,那么归结式是:
C = C1'σ ∨ C2'σ这个式子看着唬人,拆开就是三步:先找到两个子句里那一对“一个是 L、一个是 ¬L”的互补文字;再对它们做一个置换 σ 让它们真正对上;最后把剩下的部分并起来,替换应用到剩下所有文字上。
打个不严谨但好懂的比方:归结就像玩消消乐。两个格子里有可以抵消的一对,把它们消掉,剩下的内容合到一起,形成新的格子,再继续找下一对能消的。一直消到出现一个空子句(记作 □),就说明整个式子矛盾了——而反证法证明了矛盾,也就证明了原结论成立。
所以选择题里那句“若当前归结式是什么时,定理得证”,答案是空子句,不是永真式。这个点特别容易翻车:永真式是恒为真,恒为真说明什么也没证明出来;空子句是恒为假,恒为假才说明“假设结论不成立”这个前提崩了,进而说明结论成立。方向刚好相反。
归结还有一个配套话题叫删除策略:在归结过程中,有些子句留着纯属浪费,可以删掉。原文给的三个类别是:
- 含有纯文字的子句——这个文字在整个子句集里没有互补文字,永远消不掉,留着没用;
- 含有永真式的子句——恒为真的子句对推出矛盾没有贡献;
- 子句集中被别的子句类含的子句——某个子句比它更“一般”,能覆盖它。
删掉这些不会影响完备性,但能大幅减少搜索量。这类优化在纸面上只是三个名词,实际跑起来差别可能是指数级的。
3.3 MGU:最一般合一到底“合”的是什么
MGU 全称是最一般合一,英文 Most General Unifier。这份资料里它既出现在选择题里,也出现在计算题里,是个绕不过去的点。
先说“合一”是什么。两个原子公式长得很像但又不完全一样,比如P(f(x), y, g(y))和P(f(x), z, g(x)),要让它们变得完全相同,就得对变量做一组替换。能让它们变成同一个式子的替换,就叫合一。
但合一的解不唯一。举个简单的例子,P(x)和P(a),你可以用{a/x}合一,也可以用{a/x, b/y}——虽然后者多替换了一个不相干的变量,但结果仍然是同一个式子。多替换的那部分是多余的。
MGU 就是所有合一替换里最“省”的那一个:它只做必须做的替换,不多做一步。任何其他的合一替换,都可以看成是在 MGU 基础上再叠加一层替换得到的。正因为最一般,归结时用 MGU 得出的归结式适用范围最广。
求 MGU 有一个很朴素的算法:差异集法。步骤是这样的:
- 令 k=0,S₀=S,δ₀=ε(空替换);
- 若 Sₖ 已经是单元素集,算法结束,δₖ 就是 MGU;
- 否则找出 Sₖ 中所有公式对应位置上的第一个不同之处,得到差异集 Dₖ;
- 若 Dₖ 里有一个变元 x 和一个项 t,且 x 不在 t 中出现,则令 δₖ₊₁ = δₖ · {t/x},Sₖ₊₁ = Sₖ · {t/x},k 加一,回到第 2 步;
- 若找不到这样的 x 和 t,说明无法合一。
拿原文那道题走一遍:S = {P(f(x), y, g(y)), P(f(x), z, g(x))}。
k=0 时,两个公式从第一个参数f(x)开始完全一样,往后比到第二个参数,一个是y,一个是z,差异集 D₀ = {y, z}。y 是变元,z 是项,且 y 不出现在 z 里,所以可以做替换{z/y},得到 S₁ = {P(f(x), z, g(z)), P(f(x), z, g(x))}。
S₁ 还不是单元素集,继续比。第一个参数都是f(x),第二个都是z,第三个一个是g(z)、一个是g(x),进到里面比,差异集 D₁ = {z, x}。同样可以做替换{z/x},得到 S₂ = {P(f(z), z, g(z))}。
S₂ 是单元素集,算法结束,MGU = {z/y, z/x}。
整个过程里有两件事必须守住。第一,被替换的必须是变元,不能是项。你不能拿f(x)去替换一个变元之外的东西,那样会无限展开。第二,变元不能出现在替换它的项里,也就是所谓的 occur check。比如用f(x)去替换 x,会得到f(f(x))、f(f(f(x)))……永远合不完,这就是一个必须被挡掉的死循环。
提示:算 MGU 时,最先出现的差异集不一定是最终答案,一定要检查每一步替换之后式子有没有变成单元素集。中途“看起来快合上了”就停笔,是这道题最常见的失分方式。
4. 搜索与博弈:AI 在岔路口凭什么不迷路
前面讲的是“知识怎么存”和“结论怎么推”,可很多问题的难点根本不在推理,而在于选项太多。走迷宫、下棋、排数字,每一步都有若干走法,如果全试一遍,时间根本不够。搜索技术就是来解决“怎么少走冤枉路”的。
4.1 状态图与启发式搜索:把问题铺成一张地图
这类问题通常会被抽象成一张图:把每一种局面看成一个节点,把一步操作看成一条有向边,整张图就叫状态空间图。原文里那道“或图通常称为什么”的选择题,答案就是状态图。
图还分两种,这个区分极易混:
| 类型 | 含义 | 类比 |
|---|---|---|
| 或图(状态图) | 从若干条边里选一条走通即可 | 岔路口,挑一条路走 |
| 与或图 | 某些节点要求它下面所有子目标都成立 | 做一道菜,所有食材都得备齐 |
“与”节点和“或”节点的区别,是把问题分解成子问题时的关键。如果一个问题需要同时满足三个条件,那三个子目标之间就是“与”的关系,画成与或图;如果三条路只要走通一条就行,那是“或”的关系。
图建好之后,剩下的就是怎么走。广度优先搜索是按层扫,先看所有一步能到的,再看两步能到的。它的特点是只要问题存在最优解,就一定能找到那个最优解——因为它是按距离一层层往外扩的,第一次碰到目标,走的一定是最短的那条。代价是它要存下的节点数量会随层数爆炸式增长。深度优先则是一头扎到底,内存省,但不保证最优,有时还会在一条死胡同里绕很久。
为了少走冤枉路,就有了启发式搜索。它的做法是给每个待扩展的节点估一个分,优先扩展“看起来更有希望”的那个。这个估计用的就是启发函数,它把“离目标还有多远”这种经验性的判断,变成一个可以比较的数值。
启发函数写得好不好,直接决定搜索是“聪明”还是“玄学”。一个好的启发函数应该满足两个条件:它给出的估计不能高过真实代价(否则可能错过最优解),同时又要尽量贴近真实代价(否则退化成盲目搜索)。这两条之间的张力,是启发式搜索永远绕不开的取舍。
4.2 极小极大与 α-β 剪枝:下棋时的那把剪刀
博弈问题和普通搜索有一个根本区别:对手会还手。你选一步,对手也会选对他最有利的一步,所以你不能只考虑自己怎么走最好,还得考虑对手会怎么拆你的台。
处理这类问题的经典方法是极小极大分析法。它的思路是把博弈过程展开成一棵博弈树,你走的层叫 MAX 层(你想让分数越大越好),对手走的层叫 MIN 层(他想让分数越小越好)。先在叶子节点算出估值,然后一层层往回倒推:MAX 层取子节点里的最大值,MIN 层取子节点里的最小值。倒推到根节点,得到的那个值就是当前局面的“保守估计”,沿着能取到这个值的分支往下走,就是比较稳妥的走法。
这个方法的问题特别明显:博弈树太胖了。国际象棋每走一步有几十种选择,往下推十几层,节点数量就是天文数字,全算一遍根本不现实。
于是有了α-β 剪枝。它的直觉非常像人类下棋时的思考方式:如果我已经发现走这一步会让自己明显变差,那我根本不必把这条分支后面的所有变化都算清楚,直接放弃就行。
形式化的条件是这样的:
- α 剪枝:如果某个 MIN 节点的 β 值小于或等于它某个先辈 MAX 节点的 α 值,也就是 α(先辈层)≥ β(后继层),那么这个 MIN 节点以下的搜索可以全部中止,它的倒推值就直接定为这个 β 值。
- β 剪枝:如果某个 MAX 节点的 α 值大于或等于它某个先辈 MIN 节点的 β 值,也就是 α(后继层)≥ β(先辈层),那么这个 MAX 节点以下的搜索可以全部中止,它的倒推值就直接定为这个 α 值。
这里的 α 代表“MAX 层目前能保证拿到的最好值”,β 代表“MIN 层目前能把 MAX 压到的最好值”。一旦这两个界限交叉,说明再往深算也改变不了上面的决策,剪掉即可。
剪枝的效果和节点排列顺序关系极大。运气好的话,同样的深度能少算一大半节点;运气不好,剪枝可能一次都不触发,白忙一场。但这不影响结果的正确性——剪掉的永远是那些不可能影响最终决策的分支,所以剪枝前后倒推出来的根节点值一定一样。
5. 易混概念与常见误区:五个一考就错的地方
学这类内容,最费劲的往往不是新概念本身,而是那些“长得像、名字近、用起来方向相反”的成对概念。下面这五组,是初学者踩坑最集中的地方,每一条都按“易混点在哪、为什么会混、怎么一次分清”来说。
5.1 误区一:正向推理与反向推理搞反
易混点:两者都是推理,都用到规则库,名称里也都有“向”字,很多人记的时候只记住了“一个从前往后,一个从后往前”,一到具体场景就分不清谁是“前”。
为什么会混:因为“前后”是相对的。如果从“事实”的角度看,正向是往前推;可如果从“目标”的角度看,反向也是在往前推——它推的是“还需要什么条件”。参照系一换,描述就乱了。
怎么区分:不要记方向,记起点。正向推理的起点一定是已经摆在桌上的事实,过程是“事实→规则→新事实”,一路往外扩;反向推理的起点一定是那个待证的目标,过程是“目标→需要的前提→这些前提又需要什么”,一路往里收。判断一道题用哪种推理,先问一句:题目给的是“一堆已知事实”还是“一个待证结论”?给事实就是正向,给结论就是反向。
5.2 误区二:把语义网络的所有有向边都当成继承
易混点:语义网络里到处都是有向弧,看着都一样,于是有人认为只要有边就有继承关系。
为什么会混:因为图形表示太直观了,直观到容易忽略边上标签的语义差别。ISA 链、AKO 链确实带来继承,可“老李—年龄→35”这种属性边,或者“某队—比分→89”这种关联边,根本不产生任何继承。
怎么区分:看这条边表达的是分类关系还是属性/关联关系。分类关系可以用“是一种”套进去读——“麻雀是一种鸟”,读得通,那就是 ISA/AKO,有继承;读不通——“老李是一种 35”,显然不对,那就只是属性关联,没有继承。原文里那道“AKO 链、ISA 链是用来表达节点知识的什么特性”的题,答案之所以是继承性,就是因为这两类链专指分类。
5.3 误区三:合一、替换、MGU 三个词混着用
易混点:三者都跟“把变量换成别的东西”有关,很多资料里又常常连着出现,于是被当成同一件事的三个叫法。
为什么会混:因为 MGU 本身就是一种替换,而合一又必须通过替换来实现,三者确实环环相扣,只是层次不同。
怎么区分:把三者摆成一条链就清楚了。替换是最底层的动作,就是把变量映射成项,本身没有对错;合一是一个目标,要求做完替换后两个公式变得完全相同;MGU是达成这个目标的替换里最省的那一个。也就是说,替换是工具,合一是目的,MGU 是这批工具里最合适的那把。判断一个替换是不是 MGU,只需问一句:还能不能找到比它更省、同时仍然能合一的替换?能,它就不是。
5.4 误区四:以为归结出永真式就证明成功了
易混点:永真式和空子句都带一个“恒”字,一个恒真一个恒假,字面上都像是某种“确定的状态”,很容易被当成同类。
为什么会混:因为归结法的整体思路是反证法——先否定结论,再推出矛盾。可“矛盾”长什么样,很多人没真正想过,只记得“推到一个特殊的东西就结束了”。
怎么区分:记住结论的方向。空子句 □ 恒为假,它出现意味着子句集里已经推出了不可能成立的东西,也就是矛盾,反证法到此成功。永真式恒为真,它出现只说明这个子句本身没信息量,对推出矛盾毫无帮助,甚至在删除策略里是要被优先删掉的。一个是终点,一个是废物,方向完全相反。
5.5 误区五:把“用户”算进专家系统的组成部分
易混点:一提到系统,很多人下意识觉得“用户”当然算一部分,毕竟系统是给人用的。
为什么会混:因为日常语境里“系统”包含使用者是很自然的想法,产品设计里也总强调用户体验。
怎么区分:看题目问的是系统内部结构还是使用环境。专家系统的经典三件套是知识库、综合数据库、推理机:知识库存规则,综合数据库存当前事实,推理机负责调度。用户是系统的服务对象,站在系统外面,不属于组成部分。类似地,“事实、规则、控制与元知识”是人工智能系统里知识包含的要素,而“关系”不在其列——这类题考的都是边界,不是常识。
6. 什么时候该啃这份题,什么时候纯属浪费时间
这份资料的价值和它的局限都很明确,值得把边界说清楚。
适合啃的情况:你正在准备一门人工智能导论的考试,或者面试前想把基础概念重新捋一遍。这类题的特点是覆盖面广、单点不深,一道选择题就能勾出一个概念,做完一轮相当于把知识表示、推理、搜索、不确定性这几块快速过了一遍。尤其是里面那些计算题——求 MGU、化子句集、画语义网络、做 α-β 剪枝——它们不适合背,适合动手写。写一遍和看一遍的差距,比想象中大得多。
不适合啃的情况:你想学的是怎么调模型、怎么搭工程、怎么处理真实数据。这份资料里的方法大多是符号主义时代的产物,它教你怎么用逻辑和规则表达知识,但不教你怎么从数据里学出规律。拿它当深度学习入门的材料,方向就错了,容易看完一堆名词却写不出一行能跑的代码。
举个具体的用法。比如那道“老李是大李的父亲,大李是小李的父亲,问谁和谁是祖孙关系”的题,正确的打开方式不是背答案,而是走一遍完整流程:先定义谓词F(x,y)表示 x 是 y 的父亲、G(x,z)表示 x 是 z 的祖父;把三条已知写成F(x,y) ∧ F(y,z) → G(x,z)、F(老李, 大李)、F(大李, 小李);否定结论得到¬G(u,v);然后归结——¬F(x,y) ∨ ¬F(y,z) ∨ G(x,z)和F(老李, 大李)归结出¬F(大李,z) ∨ G(老李,z),再和F(大李, 小李)归结出G(老李, 小李),最后和否定式归结出空子句,证明完成。
如果还想顺便求出“谁是谁的祖父”,就把否定的结论换成一个重言式¬G(u,v) ∨ G(u,v),同样归结到G(老李, 小李),于是 u 绑定老李、v 绑定小李,答案就带出来了。同一个归结框架,一次用来证明存在性,一次用来求解具体值,这个转换非常能说明归结法的通用性。
| 学习目标 | 这份资料是否合适 | 说明 |
|---|---|---|
| 应付人工智能基础课考试 | 合适 | 题型全,覆盖面广,重点清晰 |
| 面试前梳理概念体系 | 合适 | 能快速定位自己在哪块概念上是空的 |
| 练符号推理的手感 | 合适 | MGU、子句集、归结都值得手写一遍 |
| 学深度学习工程实践 | 不合适 | 不涉及训练、调参、部署 |
| 学现代大模型原理 | 不合适 | 属于另一条技术脉络 |
我自己当初就是跳过了手写这一步,只看答案,觉得“哦,原来是这样”,结果隔一周再遇到同类题,差异集都找不对。从那以后我每次复习这类内容,都强制先在纸上把子句集完整写一遍、把 MGU 的每一步替换标出来,再去对答案——纸上的错误比脑子里的自信便宜太多了。希望帮到你。
本文还有配套的精品资源,点击获取