Artificial Intelligence Concepts
期末 70% · 期中 8% · 作业 5% · 个人 Project 17%。3 小时笔试。
连载中,随课程进度更新,目前到第 4 周 T04(9-23),后面的讲次上完课再补。
逐讲
L01 Introduction to AI:三个同心圆,最外圈叫 AI,最里面才是深度学习
划清 AI、机器学习、深度学习的边界,再把机器学习切成三类。
T01 Tutorial 1:论文怎么找、怎么读、怎么从别人的缺口里长出自己的题
这节课不讲知识点讲方法,兑现场景是期末 project——当 checklist 用,选题时回来照着走一遍。
L02 Search Techniques:在陌生大楼里找出口,从瞎推门到看着指南针走
把问题写成从起点到终点的找路,再比五种找法的完备性、最优性、时间和空间。
T02 Tutorial 2:BFS 与 DFS 手算,把访问顺序和解路径分开
Open/Close 怎么填,孩子按什么顺序取,以及去掉查重之后 DFS 为什么停不下来。
L03a Uncertainty:灵敏度 99% 的检验,阳性里只有 2% 真有病
把不确定变成可计算:条件概率、贝叶斯公式,以及用图把联合分布拆小的贝叶斯信念网络。
T03 Tutorial 3:四份 PyTorch notebook,一套训练骨架
张量、autograd、nn.Module、训练循环——先把这四件事跑通,assignment 和 project 才动得了。
L03b Knowledge Representation:岛民说「我是骗子」,这句话在逻辑上不可能被说出来
把知识写成符号:命题逻辑的语法、语义,以及前向链接、后向链接、归结三种证明方法。
L04a 机器学习总览:一张七行表格,讲清监督学习在学什么
机器学习分三类看的是数据:有答案的是监督,没答案的是无监督,自己试出来的是强化。回归和分类只差一个 y 的类型。
L04b 线性回归:三个点、一条线,把机器学习的整套流程走一遍
用一条直线预测房价:定义平方误差代价函数,用梯度下降找碗底,再用正则化把过拟合压回去。
L04c Model Selection:拿测试集挑模型,那个分数就已经作废了
训练/验证/测试三分法、用 J_train 与 J_cv 的相对关系诊断偏差还是方差,以及学习曲线告诉你「加数据到底有没有用」。
T04 Tutorial 4:三道概率手算加一道 Monty Hall,考的是哪一步用了独立性
链式法则怎么拆、贝叶斯网络的联合概率怎么连乘、分母从哪来,以及换门胜率为什么是 2/3 而非 1/2。
期末复习怎么用
期末 3 小时笔试占 70%,课件没注明开卷与否,按闭卷准备更稳(我的判断)。前半的搜索、逻辑、贝叶斯网络有标准解法、判分客观,刷题的边际收益最高;深度学习那几讲更可能考概念辨析,复习方式不同。
- 1 按讲把页尾「必背」过一遍,卡住的条目回到那一讲的「概念卡」重看,别停在「看着眼熟」。
- 2 每讲的「完整例题」跟着算一遍,然后合上页面做「变式题」,对不上判分点就回头补那一条。
- 3 最后扫「课件里的坑」:标了 [课件有误] 的按笔记里的更正记,标了 [口径差异] 的按课件写。
要能动笔算的题型
这几类没有思考余量,练到不看提示就能做。
- A* 展开顺序
- 给带权图和启发式表,写出展开顺序与每步 f 值
- αβ 剪枝
- 给 minimax 树,标出被剪掉的分支和根的值
- 贝叶斯网络
- 给网络结构和条件概率表,算联合概率或后验概率
- 信息增益
- 给数据表,算按某属性划分的增益,选出根节点
- k-means
- 给点集和初始中心,手算两轮迭代
- 网络参数量
- 全连接层、卷积层各有多少参数
复习的产物:自己填的表
填表本身就是复习,抄一份现成的没有用。
- 搜索算法对照表:评价函数、完备性、最优性、时间与空间复杂度
- 不确定性方法对照表:核心机制、成立假设、主要缺陷
- 机器学习范式对照表:反馈形式、典型任务、代表算法
- 符号主义 vs 连接主义:知识来源、可解释性、主要瓶颈
累计考点表
各讲页尾「必背」的汇总,随讲次增长。复习时按讲回看,点讲次跳到那一页。
- 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 寒冬
- 引用先看相关性与证据质量,再核发表和评审状态;预印本未必评审,workshop 是否评审要查具体征稿规则,排名和引用量都不是质量保证
- 三个检索工具分工不同:Scholar 搜得广并能顺着 Cited by 往后追,DBLP 出处最准且直接给 BibTeX,学校图书馆负责下到正版全文
- 论文八个部分里 Introduction 信息密度最高,其中「现在还缺什么」那一句直接就是选题线索
- 读 Method 要读 why 不只读 what:每个设计选择在解决什么问题,比模型有几层更值得写进笔记
- 看实验盯两处:baseline 是不是选得太弱太旧,以及有没有做消融实验说明提升来自哪个部件
- 四遍读法的本质是给放弃留出口:第一遍只读标题摘要图,用来判断要不要继续;第三、四遍明确允许跳过数学和看不懂的部分
- 读完记录「这个我自己能用在哪」或「为什么不适用」;排除不合适的方法同样是有效收获
- 找题两步从宽到窄:先读近期综述拿 future directions,再读子领域顶会论文找 research gaps;目标是在别人的 limitations 上前进一步,不是找无人区
- 搜索问题五要素:当前状态 / 目标状态 / 动作 / 代价 / 解;解是一条路径,不是一个状态
- 评价一个搜索算法只看四条:完备性、最优性、时间、空间
- 本课件符号: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\* 能保证最优;图搜索还需一致启发式或允许重新打开节点;手算时碰到目标不能立刻停,要等它被选出来展开
- 同一棵树上 BFS 与 DFS 的访问顺序完全不同:BFS 兄弟先于孩子,DFS 孩子先于兄弟
- 展开一个节点时,指向已在 Open 或 Close 里的节点的那些边不重复加入;漏掉这一步 Open 会长出重复项,后面整张表全乱
- 访问顺序与解路径是两回事:访问顺序里的节点未必在解路径上,答题时两样都要写清楚
- DFS 的结果取决于孩子的排列顺序,做题前先确认题目要求升序还是降序;用栈实现时,想先访问谁就让谁最后入栈
- 同一张图上 DFS 比 BFS 少展开几个节点,只说明目标恰好在先选的那条分支上,推不出 DFS 更快
- DFS 靠栈里保留的、路径上每个节点尚未展开的兄弟回溯,这是它空间复杂度 O(d·b) 而非 O(d) 的来源
- 有环的图上去掉重复状态检查,DFS 会沿着环无限循环、永远到不了目标;有限有环图需要重复状态检查保证终止;树或无环图不必依赖 Close 表
- BFS 逐层推进,不会顺着环一路往下钻,所以它同样需要查重,但有限分支且有有限深解时仍可找到解,无解时也可能不终止
- 概率的真正定义是三条公理: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)
- 训练循环的五步顺序是 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 维处理,属于典型的不报错的错
- 自回归外推把预测值滚回输入窗口,误差逐步累积,长程结果是题目要求的输出长度而不是模型的有效预测能力
- 一个逻辑系统 = 语法(结构)+ 语义(含义)+ 推理规则;只看符号形状的是语法,要代入真值判断的是语义
- 连接词优先级 ¬ > ∧ > ∨ > ⇒ > ⇔,恰好是它们在课件符号表里出现的顺序
- 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 为假
- Samuel (1959) 的定义:机器学习是让计算机在不被显式编程的情况下获得学习能力的研究领域,关键词 without being explicitly programmed
- 三种范式按数据分:监督学习有 (x, y) 对,无监督学习只有 x,强化学习的数据靠和环境交互收集
- 监督学习的目标是对将来没见过的数据也预测准,把训练数据分对只是手段
- 表格里一行是一个样本:前面各列是特征 x,最后一列 spam? 是标签 y,supervision 指的就是 y
- 线性规则 2·money + 3·pills − 5·known > 0 是给特征加权求和再和阈值比,判据是严格大于 0
- 线性可分指正负样本能被一条直线(高维叫超平面)分开
- 回归和分类的区别只在 y:y 是连续数值叫回归,y 是有限个类别叫分类
- RLHF 三步:收集人类偏好排序、训练奖励模型、用奖励模型指导语言模型微调,前两步都是监督学习,最后一步才是强化学习
- 代价函数 J(θ₀, θ₁) = (1/2m) Σ_{i=1}^{m} (h_θ(x⁽ⁱ⁾) − y⁽ⁱ⁾)²,求和遍历全部样本,预测减真实再平方,系数是 1/2m 而非 1/m
- 三点例题 (1,1)(2,2)(3,3) 且 θ₀ = 0:J(1) = 0,J(0.5) = 3.5/6 ≈ 0.58;h 是 x 的函数、J 是 θ 的函数,左图一条线对应右图一个点
- 梯度下降更新式 θⱼ := θⱼ − α·∂J/∂θⱼ;代入线性回归后 θ₀ 的式子是 (1/m)Σ 误差,θ₁ 的式子末尾多乘 x⁽ⁱ⁾,系数都变成 1/m
- 两个参数必须同时更新:temp0、temp1 都用旧 θ 算完再一起赋值;先更新 θ₀ 再算 θ₁ 的梯度是错的
- α 太小收敛慢,α 太大跨过碗底来回震荡甚至发散;线性回归的 J 是凸的碗形,不会陷入局部最优
- 欠拟合对应 high bias,过拟合对应 high variance;过拟合的标志是训练集 J ≈ 0 但新样本预测差,处理办法是减特征或正则化
- L2 正则化代价函数 J(θ) = (1/2m)[Σ(h_θ(x⁽ⁱ⁾) − y⁽ⁱ⁾)² + λ Σ_{j=1}^{n} θⱼ²],惩罚项从 j = 1 起、θ₀ 不罚;L1 = Lasso 用 |θⱼ|,L2 = Ridge 用 θⱼ²,λ 是超参数
- 训练误差是乐观估计:参数在训练集上拟合过,训练误差一定低于真实泛化误差
- 拿测试集挑 d 或 λ,测试误差就变成乐观估计,因为超参数已经在测试集上拟合过
- 三分法固定顺序:训练集拟合 θ,交叉验证集选超参数(d、λ),测试集只在最后报一次分
- 高偏差(欠拟合):J_train 高且 J_cv ≈ J_train;高方差(过拟合):J_train 低且 J_cv ≫ J_train
- d 增大:J_train 单调下降,J_cv 先降后升;λ 增大方向正好相反,λ 很大时 θ_j ≈ 0,h ≈ θ₀ 高偏差
- 学习曲线:高偏差时两条线很快收敛在高位,加数据没用;高方差时两条线之间有大缺口,加数据很可能有用
- 六个补救动作分两组:治高方差用加数据、减特征、增大 λ;治高偏差用加特征、加多项式项、减小 λ
- 多事件联合概率先写链式法则 P(A,B,C) = P(C|A,B)·P(A|B)·P(B),再用题给的独立性替换其中一项,不能一上来就三数相乘
- 题面里「C 与 AB 条件独立」的实际含义是 C 与联合事件 AB 独立,即 P(C|A,B) = P(C);它没有说 A 与 B 独立
- 贝叶斯网络的联合概率等于每个节点在其父节点下的条件概率连乘:P(E,T,C) = P(E)·P(T)·P(C|E,T)
- 汇聚连接 E → C ← T 里,只要 C 未被观测,两个根节点 E、T 独立,所以 P(E|¬T) = P(E);答题时必须写出这条理由
- 从联合分布表求条件概率:分子直接查表,分母把条件为真的所有行相加,P(A|B) = P(A,B) / [P(A,B) + P(¬A,B)]
- Monty Hall 的全部信息在似然里:P(H₃|C₁,X₁) = 1/2、P(H₃|C₂,X₁) = 1、P(H₃|C₃,X₁) = 0;先验相同时后验之比就是似然之比,换门 2/3
- 概率树上不能数叶子,要按每片叶子的概率加权;换门赢的六片叶子各重 1/9,合计 2/3