
简介《山东大学人工智能导论概念汇总》是一份面向高校人工智能导论课程学习者与期末复习人群的概念梳理材料围绕课程核心知识框架展开适合课堂同步学习、考前速查与知识查漏补缺。压缩包内共1个PDF文件约2.28MB内容按章节组织覆盖智能与人工智能的基本定义、知识表示与知识图谱、确定性推理方法并将机器学习、搜索策略、遗传算法等相关概念串联起来代码框内容标注为非重点便于把握复习主次。资源对一阶谓词逻辑、产生式、框架、语义网络等表示方法以及推理的分类与特点作了要点式归纳读者可据此快速建立章节脉络、定位易混概念并形成自己的复习提纲。目前已有434人学习下载适合需要短时高效回顾课程概念的学生使用。1. 概念汇总不是抄名词表先搭一条能推演的骨架期末周的自习室里A同学把一本人工智能导论教材翻到目录页从智能体、状态空间一路扫到 Transformer每个词都眼熟合上书却串不起来。这门课真正难的地方在于概念之间缺少可连接的线索并非概念数量太多。人工智能导论概念汇总真正要产出的内容应当是一张能顺着往下推的结构图为什么要有搜索、搜索为什么需要启发式、启发式失效之后为什么会引出机器学习。下面这套骨架按“感知—表示—推理—学习—决策”五层搭建每层配可验证的小实验和参数对照。新手可以照着把课过一遍熟手可以拿它检查自己哪一块还是黑匣子。正在准备期末、面试或者转方向的人都适用。2. 知识地图把上百个术语压进五层结构导论课的知识点分散这是课程性质决定的并非任课老师故意为难。它要在一学期里把符号主义、连接主义、概率方法和强化学习四条线都扫一遍每条线都有自己的术语体系。硬背的话光是“模型”这个词就有至少三种所指逻辑里的模型、统计里的模型、深度学习里的模型。所以先做分层再做记忆记忆才会有明确的参照。2.1 导论课为什么总从“智能的定义”讲起很多教材第一章都在讲图灵测试、中文屋、物理符号系统假设看着像闲聊其实是在选定判据。你接受哪种智能定义后面哪些概念是重点就跟着变。按“符号操作”定义智能的路线知识表示、谓词逻辑、归结原理就是核心按“与环境交互”定义的路线感知—动作回路、智能体架构、强化学习权重更高按“从数据中归纳”定义的路线特征、损失函数、泛化误差才是主线。这个观察有直接的操作价值。拿到一本新教材先去找定义章把定义改写成一句能被检验的话再用它去验证后面每个概念是不是在服务这句话。比如“智能体是在环境中感知并行动的东西”那就意味着任何智能体都要能回答 PEAS 四问性能度量、环境、执行器、传感器。这四个空填不出来说明这个概念你只是记住了字面。常见做法是把这个定义句写在笔记第一页每学完一章回头改一次。改不动说明定义已经够用每章都想改说明你还没找到这门课的主线。2.2 五层结构感知、表示、推理、学习、决策分层不是分类学游戏它解决的是“这个词该归到哪个问题下”的定位问题。定位清楚了即使定义记不全也能靠上下文推出大概。感知层负责把原始信号变成机器能算的东西。传感器数据、图像像素、文本分词、词袋、词向量、卷积特征图都在这一层。判别句是这一步的输出是不是一个向量或张量而不是一个结论。是就归感知层。表示层负责把世界写成机器能查的结构。状态空间、谓词逻辑、语义网络、本体、知识图谱、概率图模型都属于这里。判别句是这东西能不能被查询和推演而不是直接给出答案。状态空间是最容易被忽略的一个——很多人在八数码、狼羊菜、倒水问题上卡住真正卡住的是不会把题目翻译成“状态集合 动作集合 代价函数”搜索算法本身并不是难点。推理层负责在已知结构上求答案。BFS、DFS、一致代价搜索、A*、minimax、α-β 剪枝、归结原理、贝叶斯推断、隐马尔可夫解码都属于这里。判别句是输入是已经建好的模型输出是一条路径、一个证明或者一个后验概率。学习层负责从数据里改参数。监督学习的分类与回归、无监督的聚类与降维、半监督、自监督、强化学习都在这层。判别句是有没有一个可以反复调整的参数集合以及一个衡量好坏的标量。决策层负责把答案变成动作。效用函数、马尔可夫决策过程、规划、智能体控制策略属于这里。判别句是输出会不会改变环境的下一个状态。五层之间是有依赖关系的表示不对推理再快也没用推理的复杂度失控才会想到用学习去替代手工规则。这条因果链就是导论课真正的叙事线也是面试里“你为什么这么选”最常问的地方。2.3 一张可检索的概念分层表把名词表和分层表对照填一遍比读三遍教材有效。下面这张表是复习时的主索引左边是层右边是可以直接照着判断的句子。层级代表概念一句话判别常见题型易混对象感知特征提取、词袋、词向量、卷积输出是向量而非结论给场景选表示方式与表示层的边界表示状态空间、谓词逻辑、知识图谱、贝叶斯网络结构可被查询与推演建模题、画图题与数据库建模混淆推理BFS、UCS、A*、归结、HMM 解码在已有模型上求答案手推搜索过程、写证明与学习层的边界学习分类、回归、聚类、自监督、强化学习存在可调参数与标量目标判断范式、选损失函数把自监督当无监督决策效用、MDP、规划、策略输出会改变环境状态写 MDP 四元组、算期望回报与推理层的规划混淆填表的具体步骤只有三步先把教材索引里的名词全部抄成一列不许合并同义词再给每个名词贴一个层级贴不进去的单独放一列最后给每个名词写一句判别句写不出来的标记为待查。三步做完通常会发现待查的那一列只有原文里反复出现的十来个词这些才是真正的重点其余都是它们的变形。提示同义词不要合并。比如“启发式函数”和“评价函数”在有些教材里混用但博弈树里的评价函数并不要求可采纳性合并了就会在 A* 那一章翻车。3. 搜索与推理状态空间、A* 与归结原理怎么记才不混这一章是导论课里最像“算法课”的部分也是最容易背成口诀的部分。问题在于搜索的考点几乎全是过程题给你一张图让你写出展开顺序。口诀在这里没有任何作用必须能把题目翻译成状态空间。3.1 状态空间三要素把一道题翻译成图任何搜索题到手先做四件事定状态编码、定动作集合、定目标测试、定路径代价。以八数码为例状态是 3×3 的排列动作是空格与上下左右交换目标是排列等于目标态代价是每步为 1。狼羊菜问题的状态是“左岸有哪些对象”倒水问题的状态是两个壶的水量。四个要素写全图的形状自然就出来了。复杂度这一块考试爱考量级而不是精确值。分支因子 b、解深度 d、最大深度 m 三个符号要能张口就来BFS 的时间与空间都是 O(b^d)空间是它的死穴DFS 空间只要 O(bm)但不完备遇到无限深的分支直接回不来一致代价搜索按 g 值排序单位代价下等价于 BFS代价不等时才是它的主场迭代加深把 DFS 的空间和 BFS 的最优性拼在一起代价是重复展开。注意DFS 不完备这个结论有前提说的是在存在无限分支或环的有穷图上。题目给了有穷图并做了重复状态检测答案可能不同答题时要把前提写出来。3.2 A* 的可采纳性与一致性h 函数一错就失效A* 的公式只有一行f(n) g(n) h(n)。真正需要掌握的是 h 的两个性质。可采纳性说的是 h(n) 从不高估到目标的真实代价即 h(n) ≤ h*(n)。它保证树搜索下找到的路径最优。一致性更强要求 h(n) ≤ c(n, n) h(n)也就是三角不等式成立。一致性蕴含可采纳性反过来不成立。图搜索里如果只满足可采纳而不满足一致性就需要允许重新打开已关闭的节点否则最优解可能被永久关闭。最常见的失效场景是尺度不匹配。地图四连通、每步代价为 1你用曼哈顿距离当 h没问题。地图八连通、对角移动代价也是 1你继续用曼哈顿距离就会高估——从 (0,0) 到 (2,2) 曼哈顿距离是 4实际只要 2 步可采纳性当场失效最优解就没了。正确做法是改用切比雪夫距离。另一个常见误用是把 h 加权写成 f g 5h。这个技巧本身在工程里很常用能大幅减少展开节点但名字得改它叫加权 A*不再保证最优。答题时如果题目问“是否最优”加权就是错的那一边。3.3 用 20 行 Python 验证 A* 的行为光看定义对 h 的尺度没有感觉写一遍对照实验最快。下面的代码在网格上跑 A*输出路径和展开节点数改一行就能比较不同 h。import heapq def a_star(grid, start, goal, w1.0): # grid: 0 可通行1 障碍四连通每步代价 1 rows, cols len(grid), len(grid[0]) def h(p): # 曼哈顿距离四连通单位代价下可采纳且一致 return abs(p[0] - goal[0]) abs(p[1] - goal[1]) open_heap [(w * h(start), 0, start)] g_cost {start: 0} parent {start: None} expanded 0 while open_heap: f, g, cur heapq.heappop(open_heap) if g g_cost.get(cur, float(inf)): continue # 陈旧条目跳过 expanded 1 if cur goal: path [] while cur is not None: path.append(cur) cur parent[cur] return path[::-1], expanded for dx, dy in ((1, 0), (-1, 0), (0, 1), (0, -1)): nb (cur[0] dx, cur[1] dy) if not (0 nb[0] rows and 0 nb[1] cols): continue if grid[nb[0]][nb[1]] 1: continue ng g 1 if ng g_cost.get(nb, float(inf)): g_cost[nb] ng parent[nb] cur heapq.heappush(open_heap, (ng w * h(nb), ng, nb)) return None, expanded if __name__ __main__: grid [[0]*10 for _ in range(10)] for r in (3, 4, 5): grid[r][4] 1 # 一道竖墙中间留缺口 for w in (0.0, 1.0, 5.0): # w0 退化为一致代价搜索 path, n a_star(grid, (0, 0), (9, 9), ww) print(fw{w}, 步数{len(path)-1}, 展开节点{n})三个参数决定了实验结论。w是启发式的权重取 0 时 h 恒为 0算法退化成按 g 排序的一致代价搜索展开节点最多但一定能拿最优解取 1 是标准 A*取 5 是加权 A*展开节点数会明显下降。grid里的障碍布局决定了 h 的引导强度墙越靠近直线路径启发式的价值越明显。返回的expanded就是复杂度讨论里的“展开节点数”用它做对照比背 O 记号有说服力得多。continue那一行处理的是堆里的陈旧条目少了它计数会虚高这也是很多人自己写 A* 时对不上教材数字的原因。3.4 命题逻辑与归结原理的易混点搜索之外导论课的第二块硬骨头是逻辑。归结原理的流程要按顺序背消去蕴含、把否定内移、标准化变量、Skolem 化、丢掉全称量词、把合取拆成子句集最后做归结反驳。每一步漏一步子句集就不对后面再合一也白搭。容易混的是三组概念。命题逻辑的归结和一阶逻辑的归结差别在于后者要做合一前者只需找互补文字。前向链接和后向链接都要求知识库是 Horn 子句前向从事实推到结论后向从目标往回找证据导论课通常只考流程不考效率。可满足性和有效性是对偶的公式有效等价于它的否定不可满足这也是反证法归结的理论依据。概念前提条件输出典型问法命题归结子句集空子句即矛盾判断可满足性一阶归结子句集 合一空子句即矛盾给谓词表达式写证明前向链接Horn 子句全部可推出的事实数据驱动的推理后向链接Horn 子句目标是否成立目标驱动的推理4. 机器学习核心概念从损失函数一路推到泛化误差导论课里的机器学习部分通常只有两章但术语密度最高。这一块的分层要更细范式、模型、损失、优化、评估五个位置每个术语都要能落到其中一个上。4.1 三类学习的判别标准不是“有没有标签”“有标签是监督没标签是无监督”这句话在自监督出现之后就不好使了。正确的判别是三个问题学习信号从哪来、反馈是否延迟、动作是否改变环境。监督学习的信号来自外部标注每个样本都有目标输出损失函数直接比对预测和标签。无监督学习的信号来自数据自身的结构聚类看距离降维看方差保留没有目标输出。自监督是折中路线用数据的一部分去预测另一部分掩码语言建模和下一词预测都是这一类标注是数据自己生成的不需要人工。强化学习的信号是延迟回报动作会改变环境状态样本之间存在强相关这也是它需要经验回放的原因。范式信号来源反馈延迟改变环境典型任务监督人工标注无否分类、回归无监督数据结构无否聚类、降维自监督数据自身构造无否预训练表示强化学习环境回报有是控制、博弈半监督处在监督和无监督之间少量的标注加大量未标注常用做法是伪标签和一致性正则。答题时如果题目只问“属于哪一类”先看信号来源再看反馈延迟两个问题基本能定死。4.2 偏差-方差、过拟合与正则化的参数对照泛化误差可以拆成三项噪声、偏差的平方、方差。噪声是数据本身的下界任何模型都压不下去偏差高说明模型太简单训练集和验证集误差都高属于欠拟合方差高说明模型对训练样本太敏感训练误差低而验证误差高属于过拟合。判断顺序必须是先看训练误差再看训练与验证的差距反过来判断就会把欠拟合当调参不够。正则化的本质是往目标里加约束。L2 把权重往零拉但不会真的到零适合特征都有用的情况L1 会把一部分权重压成零天然做特征选择dropout 在训练时随机屏蔽一部分单元等价于集成大量子网络早停则是在验证误差开始回升时停下代价最低通常应该先试。手段关键参数调大后的效果什么情况下失效L2 正则λ权重更小方差下降偏差上升特征量纲差异极大时L1 正则λ稀疏性增强相关特征多时选择不稳定dropout丢弃率正则更强收敛更慢小网络或训练轮数不足早停耐心轮数更保守可能欠拟合验证集太小、噪声大数据增广增强强度等效扩充样本增强破坏类别语义时参数怎么定常见做法是先固定一个中等强度的正则把模型容量调到训练误差能压到较低但未到零的位置再逐步加强正则观察验证误差。一次性把所有正则都打开出问题时分不清是谁的锅这是新手最容易犯的操作。4.3 用混淆矩阵把分类指标一次算清精确率、召回率、F1 这几个词的定义不难难在分子分母记反。最稳的办法是每次都从混淆矩阵推一遍不要凭记忆写公式。import numpy as np def metrics(y_true, y_pred, pos1): # pos 指定正类标签多分类时对每一类各调一次再平均 y_true, y_pred np.asarray(y_true), np.asarray(y_pred) tp int(((y_true pos) (y_pred pos)).sum()) fp int(((y_true ! pos) (y_pred pos)).sum()) fn int(((y_true pos) (y_pred ! pos)).sum()) tn int(((y_true ! pos) (y_pred ! pos)).sum()) p tp / (tp fp) if tp fp else 0.0 # 精确率预测为正里有多少真对 r tp / (tp fn) if tp fn else 0.0 # 召回率真正例里抓回多少 f1 2 * p * r / (p r) if p r else 0.0 acc (tp tn) / len(y_true) # 类别不平衡时会严重虚高 return dict(tptp, fpfp, fnfn, tntn, precisionp, recallr, f1f1, accacc) if __name__ __main__: y_true [1]*10 [0]*990 # 1% 正例典型不平衡 y_pred [0]*1000 # 全部预测为负 print(metrics(y_true, y_pred))这段代码的重点在最后两行。全部预测为负准确率是 0.99看着很漂亮但精确率、召回率、F1 全是 0模型什么都没抓到。pos参数决定把哪个类当正类多分类时对每类各算一次再按宏平均各类等权或微平均按样本数加权汇总两者在不平衡数据上能差出十几个点。评估指标选择上正负样本极不均衡时看 PR 曲线比 ROC 曲线更敏感因为 ROC 的横轴假正率会被大量负样本稀释。5. 五个失效现场从定义混淆到背了不会用概念汇总类工作最容易出现的问题是笔记记得很漂亮做题和面试时还是答不上来。下面五条是按出现频率排的。5.1 三个定义边界上的失效失效一把自监督归进无监督。现象是选择题能对一问“掩码语言建模属于哪类学习”就答不上来。原因在于脑子里只有“有没有人工标签”这一个判据而自监督的标签是数据自己造的。解决办法是换成前面那三个问题信号来源、反馈延迟、是否改变环境。三个问题答完四类学习基本不会错。失效二把 A的 h 函数当成“随便估一个距离”。* 现象是手推展开顺序时和标准答案对不上或者路径明显不是最短。原因多半是尺度不匹配八连通地图上用了曼哈顿距离或者干脆把 h 乘了一个大于 1 的系数还宣称最优。解决时先验算一次可采纳性对任意节点h 不能超过真实剩余代价。验不过就换距离度量四连通用曼哈顿八连通单位代价用切比雪夫。失效三精确率和召回率的分子分母互换。现象是公式背得滚瓜烂熟一上手就把分母写成“实际为正的样本数”。原因是记忆时没有锚点。解决办法是每次从混淆矩阵现场推精确率的分母是“预测为正”召回率的分母是“实际为正”各记一个词就够不要把公式当字符串背。5.2 两个动手环节的失效失效四只在训练集上调参然后把结果当泛化性能。现象是报告里写了一个很高的准确率换个数据集就掉十几个点。原因在于验证集被当成了测试集反复使用信息已经泄漏进模型选择。解决办法是切三段训练、验证、测试。验证集用来选超参测试集只在最后开一次。数据量小的时候用 k 折交叉验证但折外的评估仍然要留一份完全没碰过的数据。失效五概念会背PEAS 和状态空间写不出来。现象是名词解释题满分一到“请为某场景设计智能体”就空着。原因在于复习时只做了识别没做生成。解决方式是每个重点概念配一个生成练习给一个生活场景写出 PEAS 四元组给一道搜索题写出状态、动作、目标测试、代价四要素。写不出来就说明这个概念还停在识别层面。提示这五条里前三条属于定义边界后两条属于流程。定义错了还能靠刷题补流程错了会一直以为自己学会了。6. 三十分钟自测把概念表跑成一次可验证的回忆复习到最后阶段判断自己有没有掌握不能靠“看着眼熟”。我一般用一套 30 分钟的固定流程全程不翻书卡住的地方就是下次复习的入口。时间段动作通过标准卡住说明什么0-5 分钟白纸画出五层骨架写层名与判别句五层齐全判别句能一句话说清分层还没建立5-15 分钟随机抽 10 个术语贴层并写判据至少 8 个能贴对术语定位模糊15-25 分钟手推一次 A* 展开两轮或手算一个混淆矩阵展开顺序和指标数字都对过程题没练过25-30 分钟给每个重点概念找一个失效场景能说出至少三个反例只记结论没记边界第三段最容易暴露问题。手推 A* 时不要写代码就在纸上画格子、写 f 值、标开闭表两轮展开足够看出你有没有真的理解 g 和 h 的分工。手算混淆矩阵时故意造一个不平衡的例子比如 100 个样本里只有 3 个正例全预测为负你就能亲眼看到准确率 0.97 而召回率 0 的场面。有一件事我踩过坑早期复习时我把这套流程当成了检查清单做完打勾就算过结果考试遇到变体题还是不会。后来改了做法自测时只允许自己写“为什么”不许写“是什么”。比如不写“A* 是最优的”改写“A* 在 h 可采纳且图搜索允许重开节点时最优”。多写这半句边界就跟着记进去了。这套方法笨但对概念汇总这类工作特别对路因为它逼着你在回忆的同时做判断而不是做匹配。希望帮到你。本文还有配套的精品资源点击获取