机器学习与模式识别 第十二章 自适应学习优化器 模拟卷及答案

第十二章:SGD & Adam — 单元习题

总分:100分 | 建议用时:50分钟
范围:学习率调度、AdaGrad/RMSProp/Adam、SGD/Mini-batch、Epoch


占位图
在这里插入图片描述

一、单项选择题(每题2分,共20题,40分)

1. Batch GD每步的计算代价是?
A. O(D)\mathcal{O}(D)O(D)
B. O(ND)\mathcal{O}(ND)O(ND)
C. O(N)\mathcal{O}(N)O(N)
D. O(1)\mathcal{O}(1)O(1)

2. SGD每步的计算代价是?
A. O(ND)\mathcal{O}(ND)O(ND)
B. O(D)\mathcal{O}(D)O(D)
C. O(N)\mathcal{O}(N)O(N)
D. O(BD)\mathcal{O}(BD)O(BD)

3. Mini-batch SGD每步的计算代价是?
A. O(D)\mathcal{O}(D)O(D)
B. O(ND)\mathcal{O}(ND)O(ND)
C. O(BD)\mathcal{O}(BD)O(BD)
D. O(N)\mathcal{O}(N)O(N)

4. 一个Epoch意味着?
A. 完成一次参数更新
B. 完整遍历全部N个数据点一次
C. 遍历B个数据点
D. 模型训练完成

5. Adam算法结合了哪两种方法?
A. SGD + Batch GD
B. Momentum + RMSProp
C. AdaGrad + Batch GD
D. 动量 + AdaGrad

6. Adam中的偏差校正(Bias Correction)解决什么问题?
A. 梯度消失
B. 初始步(s和r从0开始)导致步长过小
C. 过拟合
D. 数据不平衡

7. RMSProp相比AdaGrad的改进是?
A. 使用所有历史梯度的累积和
B. 使用指数加权移动平均→关注近期梯度,避免学习率过度衰减
C. 引入了动量
D. 不需要学习率

8. Adam的典型超参数β1\beta_1β1β2\beta_2β2分别是?
A. β1=0.5,β2=0.5\beta_1=0.5, \beta_2=0.5β1=0.5,β2=0.5
B. β1=0.9,β2=0.99\beta_1=0.9, \beta_2=0.99β1=0.9,β2=0.99
C. β1=0.99,β2=0.9\beta_1=0.99, \beta_2=0.9β1=0.99,β2=0.9
D. β1=0,β2=0\beta_1=0, \beta_2=0β1=0,β2=0

9. 关于SGD的噪声梯度,正确的是?
A. 噪声总是有害的,应该避免
B. 噪声可能帮助模型逃离局部最小值
C. 噪声使模型无法训练
D. 噪声等价于正则化

10. 余弦学习率调度常用于什么场景?
A. 简单线性模型
B. 大语言模型(LLM)训练
C. K-means聚类
D. 决策树

11. 增大Batch Size B时,学习率η\etaη通常应该?
A. 保持不变
B. 按比例减小
C. 按比例增大
D. 随机调整

12. 训练误差是测试误差的什么?
A. 精确值
B. 经验估计(Empirical Estimate),大N时近似
C. 完全无关
D. 上界

13. AdaGrad的主要问题是什么?
A. 计算太慢
B. 累积r单调增长→后期学习率过度减小→早停
C. 不适用于凸函数
D. 需要太多内存

14. 设N=1000, B=100,一个Epoch需要多少步?
A. 1步
B. 10步
C. 100步
D. 1000步

15. 大Batch Size的优势不包括?
A. 梯度估计更准确
B. 更好利用GPU并行
C. 梯度噪声更大
D. 可以更高效地训练

16. 关于Shuffling,正确的是?
A. 每个Epoch应该用相同的顺序
B. 每个Epoch开始前应该随机打乱数据
C. Shuffling对训练没有影响
D. Shuffling只在测试时需要

17. Adam中sis_isi(一阶矩)和rir_iri(二阶矩)分别估计什么?
A. s=梯度均值(动量),r=梯度平方均值(尺度)
B. s=梯度平方,r=梯度均值
C. s=Hessian,r=梯度
D. s=损失,r=学习率

18. 幂律学习率调度中,η(τ)=ηstart(1+τ/s)−c\eta^{(\tau)} = \eta_{start}(1+\tau/s)^{-c}η(τ)=ηstart(1+τ/s)c,随着τ\tauτ增大,η\etaη会?
A. 增大
B. 减小
C. 不变
D. 震荡

19. SGD的"随机性"来自哪里?
A. 随机初始化模型
B. 随机选择单个(或小批量)数据点估计梯度
C. 随机选择模型结构
D. 随机生成数据

20. 在深度学习实践中,通常所说的"SGD"实际上往往指的是?
A. 精确的Batch GD
B. Mini-batch SGD(含动量/Adam等变体)
C. 单样本SGD
D. 牛顿法


二、判断题(每题2分,共15题,30分。正确打√,错误打×)

21. Batch GD每步都要遍历全部数据,大数据集上极慢。( )

22. SGD的梯度是真实梯度的无偏估计。( )

23. Mini-batch SGD在B=1时退化为SGD,在B=N时退化为Batch GD。( )

24. 学习率调度通常使η\etaη在训练过程中逐渐增大。( )

25. Adam不需要设置学习率η\etaη。( )

26. RMSProp对梯度平方使用指数加权移动平均而非累积和。( )

27. AdaGrad对每个参数使用相同的学习率。( )

28. Adam中偏差校正s^=s/(1−β1τ)\hat{s}=s/(1-\beta_1^\tau)s^=s/(1β1τ)τ\tauτ很大时几乎无影响。( )

29. 1 Epoch = N/B步(当N可被B整除时)。( )

30. Shuffling确保每个Mini-batch的数据是随机选取的。( )

31. 训练误差在大N时近似于期望测试误差,前提是训练数据与测试数据同分布。( )

32. Batch Size越大,每步梯度估计越精确。( )

33. Cosine调度在LLM训练中很少使用。( )

34. Adam的ϵ=10−8\epsilon=10^{-8}ϵ=108是为了数值稳定性(防止除以零)。( )

35. SGD的噪声可以被视为一种隐式正则化。( )


三、简答题(每题5分,共3题,15分)

36. 请对比Batch GD、SGD和Mini-batch SGD三者的计算代价、梯度质量和适用场景。

37. 请阐述Adam优化器的核心思想:它如何结合Momentum和RMSProp?偏差校正解决了什么问题?

38. 请解释"训练误差是测试误差的经验估计"这一原理,以及它在SGD中为何重要。


四、计算题(每题5分,共3题,15分)

39. 某数据集N=10000,特征维度D=100。
(1) Batch GD每步需要多少次基本运算(量级)?
(2) SGD(B=1)每Epoch需要多少次?
(3) Mini-batch SGD(B=64)每Epoch需多少步?每步代价?

40. 设Adam的β1=0.9,β2=0.99\beta_1=0.9, \beta_2=0.99β1=0.9,β2=0.99。在某维度上:

  • 第1步梯度=10,第2步梯度=8,第3步梯度=6
  • 假设η=0.001,ϵ=10−8\eta=0.001, \epsilon=10^{-8}η=0.001,ϵ=108

(1) 计算第3步后的sss(一阶矩,忽略偏差校正)。
(2) 计算第3步后的rrr(二阶矩,忽略偏差校正)。
(3) 第3步的参数更新量Δw\Delta wΔw约是多少?(仅需写出表达式)

41. 某Batch GD在N=100万时每Epoch需1小时。改用Mini-batch B=1000:
(1) 每Epoch需多少步?
(2) 假设每步时间与B成正比,每Epoch总时间约为原来的多少?


试卷结束,请认真检查。

第十二章:SGD & Adam — 单元习题答案


一、单项选择题答案

题号答案解析
1BBatch GD每步计算N个梯度→O(ND)\mathcal{O}(ND)O(ND)
2BSGD每步1个点→O(D)\mathcal{O}(D)O(D)
3CMini-batch每步B个点→O(BD)\mathcal{O}(BD)O(BD)
4B1 Epoch=完整遍历全部N点一次
5BAdam=Momentum(一阶矩)+RMSProp(二阶矩)
6Bs和r初始=0→早期步偏小→偏差校正解决
7BRMSProp用EMA替代累积→关注近期→避免学习率过度衰减
8BAdam标准:β1=0.9,β2=0.99\beta_1=0.9,\beta_2=0.99β1=0.9,β2=0.99
9BSGD噪声可能帮助逃离局部最小值/鞍点
10BCosine调度现代LLM训练常用
11CB↑→梯度更准→可用更大步长(η∝B\eta\propto BηB)
12B大N→训练误差≈\approx测试误差(大数定律)
13BAdaGrad的rrr单调增长→学习率不断减小→早停
14BN/B=1000/100=10步
15C大B→梯度噪声更小(更精确)
16B每Epoch开始前Shuffle→随机性
17Asss=一阶矩(梯度均值/动量);rrr=二阶矩(梯度平方均值/尺度)
18Bτ\tauτ↑→分母↑→η\etaη
19B随机性=随机采样数据点估计梯度
20B实践中"SGD"通常=Mini-batch SGD+动量变体

二、判断题答案

题号答案解析
21Batch GD每步O(ND)O(ND)O(ND)→大数据慢
22E[∇En]=∇E\mathbb{E}[\nabla E_n]=\nabla EE[En]=E→SGD梯度=无偏估计
23B=1=纯SGD,B=N=Batch GD
24×学习率通常减小(从不衰减的SGD除外)
25×Adam仍需设置基础学习率η\etaη(典型=0.001)
26r=βr+(1−β)(∂E/∂w)2r=\beta r+(1-\beta)(\partial E/\partial w)^2r=βr+(1β)(E/w)2=EMA
27×AdaGrad对每个参数独立调整学习率
28τ\tauτ大→1−β1τ≈11-\beta_1^\tau\approx11β1τ1→校正≈1→无影响
29Epoch步数=⌈N/B⌉\lceil N/B\rceilN/B
30Shuffle→每Batch随机取B个点
31IID假设→训练误差≈\approx测试误差
32更多样本→Monte Carlo估计更精确
33×Cosine在LLM中非常常用
34ϵ\epsilonϵ防止分母为零
35SGD噪声=隐式正则化→可能改善泛化

三、简答题参考答案

36. Batch/SGD/Mini-batch对比

参考答案:

方法每步代价梯度质量适用
Batch GDO(ND)\mathcal{O}(ND)O(ND)精确小数据集
SGDO(D)\mathcal{O}(D)O(D)噪声大在线学习
Mini-batchO(BD)\mathcal{O}(BD)O(BD)折中最常用
  • B=1→SGD,B=N→Batch GD
  • Mini-batch=最优折中:计算便宜+梯度够好+GPU并行

37. Adam核心思想

参考答案:

Adam = Momentum + RMSProp + 偏差校正

  1. Momentum(sss):一阶矩估计→梯度方向的指数移动平均→平滑+加速
  2. RMSProp(rrr):二阶矩估计→梯度平方的EMA→自适应调整每维度学习率
  3. 偏差校正(s^=s/(1−β1τ)\hat{s}=s/(1-\beta_1^\tau)s^=s/(1β1τ)):s0=r0=0s_0=r_0=0s0=r0=0→初始几步偏小→除以1−βτ1-\beta^\tau1βτ放大→后续1−βτ≈11-\beta^\tau\approx11βτ1

更新w=w−ηs^r^+ϵw=w-\eta\frac{\hat{s}}{\sqrt{\hat{r}}+\epsilon}w=wηr^+ϵs^


38. 训练误差=经验估计

参考答案:

1N∑nL(tn,fw(xn))≈Ep(t,x)[L(t,fw(x))]\frac{1}{N}\sum_n L(t_n, f_w(x_n)) \approx \mathbb{E}_{p(t,x)}[L(t, f_w(x))]N1nL(tn,fw(xn))Ep(t,x)[L(t,fw(x))]

  • 训练误差=期望测试误差的Monte Carlo估计
  • 大N→大数定律→估计准确
  • 在SGD中:单点梯度也是无偏估计(E[∇En]=∇E\mathbb{E}[\nabla E_n]=\nabla EE[En]=E) → 虽噪声大但方向正确

四、计算题参考答案

39. 代价计算

(1) Batch GD每步O(ND)=10000×100=106\mathcal{O}(ND)=10000\times100=\mathbf{10^6}O(ND)=10000×100=106基本运算

(2) SGD每Epoch:N=10000步,每步O(D)=100\mathcal{O}(D)=100O(D)=100→总计106\mathbf{10^6}106(与Batch GD每步相同!SGD每Epoch=Batch GD每步)

(3) Mini-batch(B=64)

  • 每Epoch步数=10000/64≈15710000/64\approx\mathbf{157}10000/64157
  • 每步代价=O(BD)=6400\mathcal{O}(BD)=\mathbf{6400}O(BD)=6400基本运算

40. Adam手算

使用EMA公式:vnew=βvold+(1−β)xv^{new}=\beta v^{old}+(1-\beta)xvnew=βvold+(1β)x

(1) 一阶矩sssβ1=0.9\beta_1=0.9β1=0.9

τ梯度s更新
110s=0.1×10=1.0s=0.1\times10=1.0s=0.1×10=1.0
28s=0.9×1.0+0.1×8=0.9+0.8=1.7s=0.9\times1.0+0.1\times8=0.9+0.8=1.7s=0.9×1.0+0.1×8=0.9+0.8=1.7
36s=0.9×1.7+0.1×6=1.53+0.6=2.13s=0.9\times1.7+0.1\times6=1.53+0.6=2.13s=0.9×1.7+0.1×6=1.53+0.6=2.13

s3≈2.13s_3 \approx \mathbf{2.13}s32.13

(2) 二阶矩rrrβ2=0.99\beta_2=0.99β2=0.99

τ梯度²r更新
1100r=0.01×100=1.0r=0.01\times100=1.0r=0.01×100=1.0
264r=0.99×1.0+0.01×64=0.99+0.64=1.63r=0.99\times1.0+0.01\times64=0.99+0.64=1.63r=0.99×1.0+0.01×64=0.99+0.64=1.63
336r=0.99×1.63+0.01×36=1.614+0.36=1.974r=0.99\times1.63+0.01\times36=1.614+0.36=1.974r=0.99×1.63+0.01×36=1.614+0.36=1.974

r3≈1.974r_3 \approx \mathbf{1.974}r31.974

(3) 更新量Δw≈−0.001×2.131.974+10−8≈−0.001×2.131.405≈−0.00152\Delta w \approx -0.001 \times \frac{2.13}{\sqrt{1.974}+10^{-8}} \approx -0.001 \times \frac{2.13}{1.405} \approx \mathbf{-0.00152}Δw0.001×1.974+1082.130.001×1.4052.130.00152


41. Mini-batch效率

(1) 每Epoch步数1000000/1000=10001000000/1000 = \mathbf{1000}1000000/1000=1000

(2) 时间对比

  • Batch GD每步=O(ND)O(ND)O(ND),1步/Epoch,耗时1小时
  • Mini-batch:每步=O(BD)O(BD)O(BD)=O(1000D)O(1000D)O(1000D)=$O(ND)/1000
  • 1000步×每步为原1/1000=约1小时(相同!)

实际中Mini-batch通常更快因为:①可GPU并行 ②良好梯度估计→更快收敛


答案编制完成时间:2026年6月29日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值