3-1AI 是如何工作的
检测题答案与评分标准
Q1. 请用“特征”一词,各用一句话区分机器学习和深度学习。
- 参考答案:机器学习(传统方式)由人来确定特征,机器学习每个特征要乘的权重。深度学习则从原始数据到特征都由机器来学习。
- 评分(3分)
- 2分:用“由谁来确定特征”区分了两种方式。
- 1分:提到了深度学习也是机器学习的一个分支这一关系,或举了例子(3个权重对 1,741个)。
- 扣分:如果写“深度学习中人什么都不用做”,扣1分。人要确定数据和模型结构。
Q2. 训练数据中明明有“光线变暗”的场景,为什么特征 A 还是会把这种场景判断错?
- 参考答案:换成特征 A(面积变化、中心移动)后,光线场景就成了“面积大幅增加而中心不变”的点。这个点落在与“逼近”同侧、更远的位置。仅用一条直线无法把它与“逼近”分开。由于在压缩成2个数字时,用于区分的信息已经丢失,所以增加数据也无法改正。
- 评分(3分)
- 1分:在特征平面上,光线场景落在“逼近”一侧。
- 1分:仅用一条直线(线性分类器)无法分开。
- 1分:信息在制作特征的阶段就已经丢失了。需要改的是特征,而不是增加数据。
Q3. 人的感觉中,哪一种不经过丘脑而直接到达大脑皮层?
- 答案:嗅觉(嗅上皮 → 嗅球 → 梨状皮层)。1分。
- 补充加分点:从梨状皮层到眶额皮层时,也有经过丘脑的通路(Sela 等,2009)。
Q4. 果蝇的 LPLC2 与第3节的特征 B 有什么相似之处?
- 参考答案:两者都能区分“物体向四周变大”和“只是变暗”。LPLC2 对没有运动的变暗不作反应(Klapoetke 等,2017)。不同之处在于形成方式。特征 B 是人设计的,而 LPLC2 是在发育过程中形成的回路。
- 评分(2分):相似点1分,不同点1分。
Q5. “训练数据上准确率达到了100%,所以在实际现场也会表现很好”,这个判断有什么问题?
- 参考答案:遇到训练数据中没有的情况时可能会出错。第4节的“无光线变化”就是一个例子。训练损失降到了 0.011,但光线场景20个中一个也没答对。而且对这些场景,它也以 0.99 的概率确信“要躲开”。应当用从未见过的测试数据来衡量实力,并检查现场可能出现的情况是否包含在训练数据中。
- 评分(3分)
- 1分:区分了训练成绩与实际性能。
- 1分:指出了原因在于“数据中没有的情况”。
- 1分:提出了至少一种对策(测试数据、收集现场数据、监控)。
Colab 作业参考答案
基础作业:添加“斜向逼近”
- 在代码1的
make_episode中添加新类型。例如:影子变大的同时,中心移动3~5格。正确答案设为1(需要躲开)。 - 预期结果
- 特征 A:中心移动较大时会被分到“经过”一侧。准确率很可能下降。
- 特征 B:由于边缘变长,大体上能答对。
- 神经网络:训练数据中有这种场景就能答对,没有的话会错一部分。
- 评分要点
- 有结果表。
- 用“特征包含的信息”和“数据包含的情况”说明了原因。
- 实际数字因随机种子而异,所以看的是解释,而不是数字本身。
挑战作业:我的业务数据
- 好的答案应具备以下几点。
- 有3个特征及其依据(业务知识)。
- 有按训练样本数比较的图表。
- 得出了随数据量变化的结论,例如“样本少时用特征方式,样本充足时用神经网络方式”。
- 测试数据只在最后用了一次。
- 常见错误
- 计算特征时混入了测试数据的信息(数据泄漏)。
- 只看准确率,不看精确率·召回率(数据不平衡时,3-2 第9节)。
课堂上常见的问题
- “那么深度学习比机器学习差吗?”
- 不是。取决于问题和数据量。
- 对于照片·声音·文字这类难以用语言规定特征的数据,深度学习要强得多。
- 本页面的场景是特意做得很简单的,所以人能轻易想到好的特征。
- “人脑也做反向传播吗?”
- 尚未得到证实。有假说认为大脑可以用别的方法做类似的事,目前正在研究中(Lillicrap 等,2020)。
- “为什么浏览器的数字和 Colab 的数字略有不同?”
- 两个环境的随机数生成器不同,所以场景略有差异。
- 特征 A 的准确率在浏览器中为 86.9%(还漏掉了1个逼近),在 Colab 中为 87.5%。
- 结论相同。光线场景在两个环境中都全部判断错误。
3-2神经网络的部件
检测题答案与评分标准
Q1. 在没有激活函数的神经网络中堆叠10个隐藏层,能画出什么样的边界?(2分)
- 答案:只有一条直线(在高维中为一个平面)。
- 评分:结论1分。理由“多个线性变换合起来仍是一个线性变换”(W₂W₁x = Wx)1分。
Q2. 用 ReLU 代替 sigmoid,为什么梯度消失会减少?(2分)
- 答案:sigmoid 的梯度最大为 0.25,每经过一层就要相乘,因此迅速变小。ReLU 在正数区间的梯度为1,往回传时不会变小。
- 评分:比较 0.25 与 1 得1分,说明“相乘后变小”得1分。最好再补充负数区间梯度为0(熄灭的神经元)。
Q3. 正确答案为1、预测为 0.41 时,MSE 损失和 ∂L/∂y 是多少?(2分)
- 答案:L = (1 − 0.41)² = 0.3481 ≈ 0.35,∂L/∂y = −2 × (1 − 0.41) = −1.18。
- 评分:各1分。∂L/∂y 的符号也必须正确。
Q4. 训练损失持续下降,而验证损失从某个时刻开始上升。这是什么状态?应该怎么做?(3分)
- 答案:过拟合。
- 评分:诊断为过拟合1分;采用早停、使用验证损失最低时刻的模型1分;提到 dropout·权重衰减·增加数据中的至少一种1分。
Q5. 在不良率为10%的检测中,回答“全部正常”的模型,其准确率和召回率是多少?(2分)
- 答案:准确率 90%,召回率 0%。
- 评分:各1分。最好再补充“在不平衡数据上不能只看准确率”。
Colab 作业参考答案
基础作业:tanh → ReLU,隐藏神经元 4·16·64
- 需要改的地方有两行。把激活函数改为 max(0, z),把它的导数改为“z > 0 时为1,否则为0”。
- 结果要运行后整理成表。增加神经元时训练准确率大体会上升,但验证准确率可能从某一点开始不再上升或反而下降。
- 评分要点:看是否用验证准确率来选择设置(用训练准确率来选则扣分),以及是否将原因与过拟合联系起来说明。
挑战作业:用我的业务数据做 6:2:2 评估
- 只用训练数据训练,用验证数据选择设置和阈值,测试数据只在最后用一次。
- 阈值 0.5 是否合适,要根据业务成本来判断。例如漏检不良品的代价很大时,就降低阈值以提高召回率,同时报告因此增加的误报(精确率下降)。
- 评分要点:看是否报告了全部三个指标,阈值判断的依据是否符合业务情况。还要确认含有个人信息的数据是否未被使用或已做匿名化处理。
3-3图像与 CNN
检测题答案与评分标准
Q1. 把 224×224 的彩色照片输入有1,000个隐藏神经元的 MLP,第一层的权重有多少个?(不含偏置)
- 答案:224 × 224 × 3 = 150,528,× 1,000 = 150,528,000个(约1.5亿个)。
- 补充加分点:有64个 3×3 彩色滤波器的卷积层为 3 × 3 × 3 × 64 = 1,728个(含偏置 1,792个)。
- 评分(2分):算式1分,答案1分。漏掉通道数3扣1分。
Q2. 对 6×6 的输入,不加填充、以步幅1应用 3×3 滤波器,输出大小是多少?
- 答案:(6 − 3 + 1) × (6 − 3 + 1) = 4×4。1分。
Q3. 请通过计算说明:把第5节的竖直边缘滤波器放在左上角位置时,输出为什么是 −3。
- 参考答案:重叠小块的第二行是 [0, 3, 3],滤波器每一行是 [1, 0, −1]。0×1 + 3×0 + 3×(−1) = −3。第一行和第三行全部为0。
- 评分(2分):正确选出重叠小块得1分,逐格相乘再相加的计算正确得1分。
Q4. 2×2 窗口 [6, 3, 0, 3] 的最大池化值和平均池化值是多少?
- 答案:最大值 6,平均值 (6 + 3 + 0 + 3) / 4 = 3。各1分。
Q5. 把像素按相同规则打乱后从头开始训练,MLP 和 CNN 谁下降得更多?为什么?
- 参考答案:CNN 下降得更多。
- CNN 把“相邻像素彼此相关”这一假设放进了结构(3×3 滤波器、池化)中。一打乱,这个假设就被打破了。
- MLP 本来就不使用像素之间的位置关系,所以几乎不变。
- 实际结果:浏览器中 MLP 92.7% → 91.3%,CNN 78.7% → 67.3%。Colab 3个种子的平均为 MLP 88.4% → 90.0%,CNN 80.2% → 65.8%。
- 评分(3分)
- 1分:结果(CNN 下降得更多)。
- 1分:说明了 CNN 的假设(邻近关系)。
- 1分:准确说出了条件(按相同规则打乱并从头开始训练)。如果写成“把打乱的图输入已训练好的模型”,则不给这1分。
Colab 作业参考答案
基础作业:添加对角线滤波器
- 示例滤波器:
[[0,1,1],[-1,0,1],[-1,-1,0]](右上亮、左下暗的对角线边界)。 -
用代码1计算出的 4×4 输出:
3 0 0 -6 6 6 6 0 0 0 0 0 3 0 -3 0 -
最大值是 6,出现在第2行第1·2·3格。它不是斜向的笔画,而是7 的上边正下方的边界。这个滤波器对“上方·右方亮、下方·左方暗”的地方有反应,所以对水平边界也会有强烈反应。
- 像这样预期(对角线笔画)与实际结果不同时,好的答案会以数字为依据说明原因。只看滤波器的名字去猜反应位置可能会出错,这正是本作业要学到的一点。
- 评分要点
- 把滤波器数字的排列与反应位置联系起来作了说明。
- 数字引用的是用代码计算出的值。
挑战作业:数据增强
- 预期趋势
- 在训练图片中混入平移1~2格的图片后,两种模型在平移1~2格时的准确率都会上升。
- MLP 也会大幅上升,因为它通过数据记住了平移后的位置。
- 在训练中没出现过的平移3格时,预计仍是 CNN 下降得较少。实际数字以学生运行的结果为准。
- 好的结论示例:“结构(权重共享·池化)即使没有数据也能让模型对小的平移不那么敏感;而增强只能让模型承受所展示范围内的平移。实际工作中两者会一起使用。”
课堂上常见的问题
- “CNN 在居中的图片上反而比 MLP 低?”
- 没错。像本页面这样,训练和测试的位置相同且数据很少时,MLP 可能获胜。CNN 的参数要少4.5倍。
- CNN 的优点是参数少、对平移更稳健。在像真实照片那样位置各不相同的数据上,效果更明显。
- “CNN 不是无论位置怎么变都能同样识别吗?”
- 不是。平移2格后,CNN 也会从 78.7% 降到 69.3%(浏览器结果)。
- 即使是大型 CNN,平移几个像素也可能改变答案(Azulay & Weiss, 2019)。准确的说法是“相对不那么容易受影响”。
- “为什么平移1格时 MLP 更高?”
- 这是只用一个种子、150张测试图的小实验所带来的波动。
- 在 Colab 3个种子的平均中,平移1格时也是 CNN(64.2%)高于 MLP(54.7%)。要同时教给学生:结论应根据多次重复的结果得出。
3-4语音
检测题
- Q1(1分):4,000 Hz。
- Q2(1分):3 Hz。
- Q3(2分):约 48 dB(理论值 49.92 → 98.08 dB)。算式1分,数值1分。
- Q4(2分):98帧。(8,000 − 200) ÷ 80 = 97.5 → 舍去得 97 + 1 = 98。答“97”得1分。
- Q5(2分):1,960个,约四分之一。
作业示例
- 基础(NMEL 40,FRAME 400):矩阵变为(减少后的帧数)× 40。窗口变长时频率更细密,但帧数减少,时间上的变化会被抹平。
- 评分:看是否通过计算确认了帧数的变化。
- 挑战(亲自录音):同一个声音录两次,相关系数也不是1。距离·噪声·音量·语速都会造成差异。
- 确认是否已取得个人信息使用同意。
3-5文本
检测题
- Q1(1分):0xAC01(“각”)。
- Q2(2分):14字节 = 9 + 1 + 4。
- Q3(2分):以单词频率为权重,统计相邻片段对的出现次数,合并次数最多的一对。
- Q4(2分):按单词切分时为“모름”(未知),BPE 为 ["초파리", "들", "이"]。
- Q5(2分):两者都是 {dog:1, bites:1, man:1}。需要位置信息。
作业示例
- 基础(添加蝴蝶句子):预计“나비는”(蝴蝶)会与出现在相同位置、并与相同单词(꽃을“花”、날개가“翅膀”)一起出现的“꿀벌은”(蜜蜂)、“초파리는”(果蝇)等靠近。
- 数值要运行后确认。讲师应在上课前运行一次。
- 挑战(合并次数):增加合并次数,词表会变大,每句的词元数会减少。
- 太大时,罕见词元增多,训练材料就会不足。
- 太小时,句子变长,计算量增加。
- 看是否用表格给出了依据。
3-6时间序列·股价
检测题
- Q1(1分):500对。
- Q2(2分):10次。第一次训练300对,最后一次480对。
- Q3(1分):约4个百分点。
- Q4(2分):选择偏差·过拟合。测试区间只在最后用一次。
- Q5(3分):如实用数字报告结果(1分),说明数据·设置条件(1分),提出泛化的局限和下一步实验(1分)。
作业示例
- 基础(按全部期间归一化):数字会略有变化。变化方向取决于数据。
- 关键在于说明:无论结果变好还是变坏,“这是使用了未来信息的评估,不可信”。
- 挑战(预测波动大小):第2节中,绝对值收益率的自相关比收益率更大(4/10 对 0/10)。因此可以预计,相对于基线的改进空间相对较大。
- 实际结果要运行后,用3个以上的种子报告。
授课注意事项。在课程开始和结束时明确说明“这是教学示例,不是投资建议”。如果学生询问特定股票的买卖判断,要告知这超出了本页面的范围。
3-7序列模型
检测题答案与评分标准
Q1. 把数列取平均后输入前馈神经网络,会丢失什么信息?
- 参考答案:顺序会丢失。100 → 110 → 120 和 120 → 110 → 100 的平均值都是 110。
- 评分(2分):说出“顺序”得1分,举出例子得1分。
Q2. 向 h_t = tanh(x_t + 0.9·h_(t−1)) 输入 1, 0, 0 时,h_1、h_2 是多少?
- 答案:h_1 = tanh(1) ≈ 0.762,h_2 = tanh(0.686) ≈ 0.595。
- 评分(2分):各1分。四舍五入误差 ±0.002 视为正确。
Q3. 若 f = σ(5) ≈ 0.9933,且输入门完全关闭,第20格的细胞状态是初始值的多少倍?
- 答案:0.9933¹⁹ ≈ 0.880倍。
- 补充加分点:第5节的实际值(0.988 → 0.864,约0.875倍)略小,是因为输入门打开了 0.007,干扰信号(10个 −1、9个 +1)渗了进来。
- 评分(2分):幂次(19)正确得1分,数值正确得1分。写成20次方(0.874)只给1分。
Q4. 隐藏单元16、输入1时,SimpleRNN、LSTM、GRU(教科书公式)循环层的参数数量各是多少?
- 答案:一组 = 16 × 17 + 16 = 288个。
- SimpleRNN:288个
- LSTM:4 × 288 = 1,152个
- GRU(教科书公式):3 × 288 = 864个
- 补充加分点:Keras 默认的 GRU 多加48个偏置,共912个。与代码2的输出相同。
- 评分(3分):各1分。
Q5. LSTM 在 T = 100 时失败了。可以得出“LSTM 无法进行长期记忆”的结论吗?
- 参考答案:不可以。
- 像第5节那样适当设定权重,LSTM 就能保存长期记忆。
- 失败意味着在30个轮次(epoch)内,梯度下降没有找到那样的权重。
- 需要改变训练时间、学习率、数据量,并用多个种子重新实验,才能下结论。
- 评分(3分)
- 1分:区分了结构的能力与训练的结果。
- 1分:提出了替代实验。
- 1分:说明了重复(多种子)实验的必要性。
Colab 作业参考答案
基础作业:让输入门始终打开(i = σ(5))
- 预期结果:每一格都有 0.993 × g(±0.995) 加到细胞状态上。细胞状态会随最近的干扰信号大幅摆动,即使把第一个信号反转,20格之后的值也几乎相同。
- 学生必须引用用代码计算出的值。讲师应在上课前亲自运行一次,确认数字。
- 好的结论示例:“输入门决定‘何时写入’。如果随时都写,旧信号就会被新信号覆盖。”
挑战作业:把 T = 100 的失败变为成功
- 值得尝试的做法
- 增加轮次(例如100以上)
- 改变学习率(0.001、0.01)
- 增加训练数据
- 先从短数列开始训练,再逐渐加长(课程学习)
- 改变隐藏层大小
- 结果要运行了才知道。用3个以上的种子做成表格;如果成功与否因种子而异,也要把这一点作为结果报告。
- 评分要点:看是否每次只改变一项来比较,也要看是否只挑选了部分结果来报告。
课堂上常见的问题
- “教科书上说 RNN 在长数列上会失败,为什么 SimpleRNN 在 T = 50 时成功了?”
- 因为这个任务比较简单(只需记住第一格),而且根据初始化方式,记忆有时能保持相当久。Keras 循环层默认用正交矩阵初始化循环权重。
- 重要的是不要试图让实验结果去迎合教科书的说法,而要说明条件、如实报告。
- “GRU 为什么在 T = 50 时失败了?”
- 在这个设置(30个轮次、学习率 0.005)下,两个种子都停留在瞎猜水平。仅凭这个实验无法断定原因。可以把它引向挑战作业。
- “遗忘门是 LSTM 一开始就有的吗?”
- 不是。1997年的原始论文中没有,是 Gers 等人在2000年的论文中加上的(会议发表是在1999年)。
3-8注意力与 Transformer
检测题答案与评分标准
Q1. q = [2, 0.4],k = [2, 0],d_k = 2 时,分数 q·k / √d_k 是多少?
- 答案:q·k = 4,4 / √2 ≈ 2.828。
- 评分(2分):内积1分,除法1分。
Q2. 分数 [1.98, 1.98, 2.772] 的 softmax 是多少?用它混合 V = [10,0], [0,10], [6,6] 的结果是多少?
- 答案:注意力 ≈ [0.238, 0.238, 0.525],结果 ≈ [5.53, 5.53]。代码1的输出为 [5.525, 5.525]。
- 评分(3分):softmax 1分,加权和公式1分,数值1分。±0.01 视为正确。
Q3. 不用位置编码、只用自注意力时,打乱单词顺序后,每个单词的输出会怎样?
- 参考答案:完全相同。每个单词的输出只由它与其他所有单词的比较决定,而比较对象的集合与顺序无关,始终相同。在代码1中差异为 1e-16,也就是计算误差的水平。
- 评分(2分):结果1分,理由1分。
Q4. d = 512 的多头注意力层的参数数量是多少?把头数改为16个时有什么变化?
- 答案:4 × 512² + 4 × 512 = 1,050,624个。改变头数也不变(只是每个头的宽度从 64 → 32)。
- 评分(2分):数值1分,“不变”及理由1分。
Q5. 长度从 4,096 变为 8,192 时,注意力分数的个数怎样变化?
- 答案:4倍(16,777,216 → 67,108,864)。1分。
Colab 作业参考答案
基础作业:不除以 √d_k
- 在图书馆例子中,如果不除,分数会变为 √2 倍,注意力会更偏向一侧。
- 把向量放大10倍,分数就变为100倍,softmax 几乎把1全部给一个格子。这样其余格子的梯度接近0,训练变得困难。
- 让学生引用用代码计算出的数字。
挑战作业:去掉位置嵌入
- 预期:没有位置信息时,第一格无法与其他格区分。因此无法只挑出第一格来看,预计正确率会接近瞎猜水平。“给第一格的注意力”也会降到 1/T 附近。
- 实际结果要让学生运行后确认。讲师应在上课前亲自运行一次。
- 评分要点:看是否与第6节的“打乱顺序也相同”联系起来作了说明。
课堂上常见的问题
- “为什么 LSTM 的数字与 3-7 不同?”
- 3-8 的代码2重新构建为固定输入长度的模型(3-7 长度不固定)。因此初始计算图和随机数的消耗略有不同。
- T = 100 的结果,3-7 为 48.9 / 47.2%,3-8 为 50.6 / 57.4%。两者都处于瞎猜水平,结论相同。
- “Transformer 赢了,那以后就不用 LSTM 了吗?”
- 这个任务的答案是“第一格这一个”,所以对注意力特别有利。
- 在实时逐格处理或数据较少时,循环模型仍在使用(3-7 第9节)。
- “原始论文基本型的参数数量是多少?”
- 本页面用公式计算并展示了一个块(3,152,384个)的参数数量。