逐讲
L01 第 1 周 · 9-02
L01 Introduction to AI:三个同心圆,最外圈叫 AI,最里面才是深度学习
划清 AI、机器学习、深度学习的边界,再把机器学习切成三类。
T01 习题课 第 1 周 · 9-02
T01 Tutorial 1:论文怎么找、怎么读、怎么从别人的缺口里长出自己的题
这节课不讲知识点讲方法,兑现场景是期末 project——当 checklist 用,选题时回来照着走一遍。
L02 第 2 周 · 9-09
L02 Search Techniques:在陌生大楼里找出口,从瞎推门到看着指南针走
把问题写成从起点到终点的找路,再比五种找法的完备性、最优性、时间和空间。
T02 习题课 第 2 周 · 9-09
T02 Tutorial 2:BFS 与 DFS 手算,把访问顺序和解路径分开
Open/Close 怎么填,孩子按什么顺序取,以及去掉查重之后 DFS 为什么停不下来。
L03a 第 3 周 · 9-16
L03a Uncertainty:灵敏度 99% 的检验,阳性里只有 2% 真有病
把不确定变成可计算:条件概率、贝叶斯公式,以及用图把联合分布拆小的贝叶斯信念网络。
T03 习题课 第 3 周 · 9-16
T03 Tutorial 3:四份 PyTorch notebook,一套训练骨架
张量、autograd、nn.Module、训练循环——先把这四件事跑通,assignment 和 project 才动得了。
L03b 第 3 周 · 9-16
L03b Knowledge Representation:岛民说「我是骗子」,这句话在逻辑上不可能被说出来
把知识写成符号:命题逻辑的语法、语义,以及前向链接、后向链接、归结三种证明方法。
期末复习怎么用
期末 3 小时笔试占 70%,课件没注明开卷与否,按闭卷准备更稳。前半的搜索、逻辑、贝叶斯网络有标准解法、判分客观,刷题的边际收益最高;深度学习那几讲更可能考概念辨析,复习方式不同。
- 1 按讲把页尾「必背」过一遍,卡住的条目回到那一讲的「概念卡」重看,别停在「看着眼熟」。
- 2 每讲的「完整例题」跟着算一遍,然后合上页面做「变式题」,对不上判分点就回头补那一条。
- 3 最后扫「课件里的坑」:标了 [课件有误] 的按笔记里的更正记,标了 [口径差异] 的按课件写。
要能动笔算的题型
这几类没有思考余量,练到不看提示就能做。
- A* 展开顺序
- 给带权图和启发式表,写出展开顺序与每步 f 值
- αβ 剪枝
- 给 minimax 树,标出被剪掉的分支和根的值
- 贝叶斯网络
- 给网络结构和条件概率表,算联合概率或后验概率
- 信息增益
- 给数据表,算按某属性划分的增益,选出根节点
- k-means
- 给点集和初始中心,手算两轮迭代
- 网络参数量
- 全连接层、卷积层各有多少参数
复习的产物:自己填的表
填表本身就是复习,抄一份现成的没有用。
- 搜索算法对照表:评价函数、完备性、最优性、时间与空间复杂度
- 不确定性方法对照表:核心机制、成立假设、主要缺陷
- 机器学习范式对照表:反馈形式、典型任务、代表算法
- 符号主义 vs 连接主义:知识来源、可解释性、主要瓶颈
累计考点表
各讲页尾「必背」的汇总,随讲次增长。复习时按讲回看,点讲次跳到那一页。
L01 · L01 Introduction to AI:三个同心圆,最外圈叫 AI,最里面才是深度学习
- AI ⊃ 机器学习 ⊃ 深度学习;AI 定义句 the science and engineering of making intelligent machines 出自 John McCarthy,学科诞生于 1956 年 Dartmouth 会议
- 两条路线:专家系统手工编码规则,可解释但卡在 knowledge acquisition bottleneck;机器学习从数据学规则,性能强但难解释
- Mitchell 1998 的 `<T, P, E>`:程序在任务 T 上由指标 P 度量的表现随经验 E 提升;Samuel 1959 强调 without being explicitly programmed
- 深度学习 = 多层非线性信息处理,「深」指隐藏层的数量,核心优势是自动学习层级特征
- 大数据 4V:Volume / Velocity / Variety / Veracity,最容易漏掉的是 Veracity
- 机器学习三分类的判据是标签的有无与来源:有标准答案是监督,只有数据是无监督,环境给奖励是强化
- 监督学习按输出再分:回归输出数值常用 MSE,分类预测类别常用交叉熵;通用骨架是模型 → 损失函数 → 优化
- 历史三锚点:1950 图灵测试 / 1956 达特茅斯会议 / 1988–93 AI 寒冬
T01 · T01 Tutorial 1:论文怎么找、怎么读、怎么从别人的缺口里长出自己的题
- 引用先看相关性与证据质量,再核发表和评审状态;预印本未必评审,workshop 是否评审要查具体征稿规则,排名和引用量都不是质量保证
- 三个检索工具分工不同:Scholar 搜得广并能顺着 Cited by 往后追,DBLP 出处最准且直接给 BibTeX,学校图书馆负责下到正版全文
- 论文八个部分里 Introduction 信息密度最高,其中「现在还缺什么」那一句直接就是选题线索
- 读 Method 要读 why 不只读 what:每个设计选择在解决什么问题,比模型有几层更值得写进笔记
- 看实验盯两处:baseline 是不是选得太弱太旧,以及有没有做消融实验说明提升来自哪个部件
- 四遍读法的本质是给放弃留出口:第一遍只读标题摘要图,用来判断要不要继续;第三、四遍明确允许跳过数学和看不懂的部分
- 读完记录「这个我自己能用在哪」或「为什么不适用」;排除不合适的方法同样是有效收获
- 找题两步从宽到窄:先读近期综述拿 future directions,再读子领域顶会论文找 research gaps;目标是在别人的 limitations 上前进一步,不是找无人区
L02 · L02 Search Techniques:在陌生大楼里找出口,从瞎推门到看着指南针走
- 搜索问题五要素:当前状态 / 目标状态 / 动作 / 代价 / 解;解是一条路径,不是一个状态
- 评价一个搜索算法只看四条:完备性、最优性、时间、空间
- 本课件符号:d = 搜索树深度,b = 分支因子,m = 最浅解的深度,且 d 可以远大于 m
- Open 是待展开、Close 是已展开;Open 用队列(FIFO)就是 BFS,用栈(LIFO)就是 DFS,两个算法只差这一处
- 有限分支、有有限深解时 BFS 完备且找到边数最少的路径,时间与空间同为 O(b^(m+1));不保存全局 Close 表的树式 DFS 空间为 O(d·b),但不完备、不最优,最坏时间 O(b^d)
- 爬山法只看一步、只留最好的一个孩子、不记历史,三种典型失败地形是局部最大、高原、山脊
- f(n) = g(n) + h(n):g 是从起点已付出的实际代价,h 是到目标的估计
- h(n) ≤ h\*(n) 不高估是 A\* 的定义条件,按课件定理的前提 A\* 能保证最优;图搜索还需一致启发式或允许重新打开节点;手算时碰到目标不能立刻停,要等它被选出来展开
T02 · T02 Tutorial 2:BFS 与 DFS 手算,把访问顺序和解路径分开
- 同一棵树上 BFS 与 DFS 的访问顺序完全不同:BFS 兄弟先于孩子,DFS 孩子先于兄弟
- 展开一个节点时,指向已在 Open 或 Close 里的节点的那些边不重复加入;漏掉这一步 Open 会长出重复项,后面整张表全乱
- 访问顺序与解路径是两回事:访问顺序里的节点未必在解路径上,答题时两样都要写清楚
- DFS 的结果取决于孩子的排列顺序,做题前先确认题目要求升序还是降序;用栈实现时,想先访问谁就让谁最后入栈
- 同一张图上 DFS 比 BFS 少展开几个节点,只说明目标恰好在先选的那条分支上,推不出 DFS 更快
- DFS 靠栈里保留的、路径上每个节点尚未展开的兄弟回溯,这是它空间复杂度 O(d·b) 而非 O(d) 的来源
- 有环的图上去掉重复状态检查,DFS 会沿着环无限循环、永远到不了目标;有限有环图需要重复状态检查保证终止;树或无环图不必依赖 Close 表
- BFS 逐层推进,不会顺着环一路往下钻,所以它同样需要查重,但有限分支且有有限深解时仍可找到解,无解时也可能不终止
L03a · L03a Uncertainty:灵敏度 99% 的检验,阳性里只有 2% 真有病
- 概率的真正定义是三条公理:0 ≤ P(E) ≤ 1、P(S) = 1、互斥事件可加;可加性只对互斥成立
- 课件用 EF 表示交集(同时发生),看到几个大写字母连在一起一律读成「同时」
- P(E|F) = P(EF)/P(F),直观是把样本空间从 S 缩小到 F
- 独立是 P(EF) = P(E)P(F),互斥是 P(EF) = 0;两个概率都不为零的事件,互斥就一定不独立
- 贝叶斯公式 P(F|E) = P(E|F)P(F) / [P(E|F)P(F) + P(E|F^c)P(F^c)],分母来自全概率公式;P(F) 是先验,P(F|E) 是后验
- 疾病检测题答案 ≈ 0.0194——先验极小时假阳性的绝对数量压倒真阳性,忽略这种基础率影响才叫 base rate fallacy
- 条件独立 P(AB|C) = P(A|C)P(B|C) 可推出 P(A|BC) = P(A|C);它和独立互不蕴含
- 孤立三节点图中,串行和发散在中间节点已知时阻断;汇聚在自身或后代被观测时可打开(explaining away)
T03 · T03 Tutorial 3:四份 PyTorch notebook,一套训练骨架
- 训练循环的五步顺序是 zero_grad → 前向 → 算损失 → backward → step,四份 notebook 的训练函数全是它的变体
- 梯度是累加进 .grad 的不是覆盖的,不清零第二个 batch 的梯度会叠在第一个上;手写原地参数更新用 torch.no_grad();普通 optimizer.step() 已处理这一点
- 无 padding、stride 为 1 时卷积输出边长等于输入边长减核边长加一,本例 2×2、stride=2 的池化边长减半;LeNet 里 16×5×5 = 400 要能自己推出来
- nn.Linear 的 weight 形状是 (out_features, in_features),与构造函数的参数顺序相反,手写线性回归写 w.t() 就是为了补这个转置
- CrossEntropyLoss 内部自带 LogSoftmax,网络最后一层应输出裸 logits;网络里已经有 LogSoftmax 就配 NLLLoss,推荐这两种配对,别把概率误当 logits
- 材料两例分别用 1e-6 和 1e-3;归一化有助于优化,但不能据不同模型断言学习率必提高千倍
- 循环层漏掉 batch_first=True 不会报错,模型会把时间维当成 batch 维处理,属于典型的不报错的错
- 自回归外推把预测值滚回输入窗口,误差逐步累积,长程结果是题目要求的输出长度而不是模型的有效预测能力
L03b · L03b Knowledge Representation:岛民说「我是骗子」,这句话在逻辑上不可能被说出来
- 一个逻辑系统 = 语法(结构)+ 语义(含义)+ 推理规则;只看符号形状的是语法,要代入真值判断的是语义
- 连接词优先级 ¬ > ∧ > ∨ > ⇒ > ⇔,恰好是它们在课件符号表里出现的顺序
- S1 ⇒ S2 在 S1 为假时为真(空真),且 S1 ⇒ S2 ≡ ¬S1 ∨ S2——这条等价是转 CNF 的关键
- 解释 = 给每个原子赋真值,n 个原子有 2ⁿ 个解释;模型 = 让句子为真的解释
- satisfiable ≥ 1 个模型,unsatisfiable 0 个,valid 全部 2ⁿ 个;Valid ⊂ Satisfiable,且 α 有效等价于 ¬α 不可满足
- Horn 子句的正文字不超过 1 个;本讲链接法用恰有 1 个正文字的 definite clause(事实或「合取 ⇒ 符号」)
- 前向链接是数据驱动、后向链接是目标驱动;命题 definite-clause KB 配合查重、缓存等实现可线性求解,朴素回溯不自动享有此界
- 归结用反证法:S = KB ∪ {¬Q} 全转 CNF 反复归结,推出空子句则 Q 成立;推不出新子句只说明 KB ⊭ Q,不代表 Q 为假