跳转至

十二:强化学习:Q-learning、Dyna-Q 与 DQN自测题答案

来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247483946&idx=1&sn=85b6ae07396ad07ec0a911ca1c59638b&chksm=f01eb153c7693845f94cc68931e283d1249b9d76948d949018e3adb7e995e770d5a1accf0244#rd

参考资料

  • CSDN:函数估计的强化学习方法讲解:https://blog.csdn.net/qq_64671439/article/details/136629758

  • 动手学强化学习:Dyna-Q 算法:http://hrl.boyuai.com/chapter/1/dyna-q%E7%AE%97%E6%B3%95/

  • 动手学强化学习:DQN 算法:http://hrl.boyuai.com/chapter/2/dqn%E7%AE%97%E6%B3%95/

  • 动手学强化学习:DQN 改进算法:http://hrl.boyuai.com/chapter/2/dqn%E6%94%B9%E8%BF%9B%E7%AE%97%E6%B3%95/

  • Playing Atari with Deep Reinforcement Learning:https://arxiv.org/abs/1312.5602

  • Human-level control through deep reinforcement learning:https://www.nature.com/articles/nature14236

  • Deep Reinforcement Learning with Double Q-learning:https://arxiv.org/abs/1509.06461

  • Prioritized Experience Replay:https://arxiv.org/abs/1511.05952

  • Dueling Network Architectures for Deep Reinforcement Learning:https://arxiv.org/abs/1511.06581

  • Rainbow: Combining Improvements in Deep Reinforcement Learning:https://arxiv.org/abs/1710.02298

评分标准

  • 合格:能写出 Q-learning 和 DQN target,知道 replay buffer、target network 的作用。

  • 良好:能解释 Dyna-Q、函数近似、deadly triad、Double/Dueling/PER 的动机。

  • 优秀:能从实现细节、训练稳定性、Q 值过估计、评估方式和 Agent 迁移角度完整回答。

一、Q-learning 基础

1. Q-learning 的核心目标是什么?

Q-learning 的目标是在不知道完整环境模型的情况下学习最优动作价值函数 Q*,并通过 argmax_a Q(s,a) 导出最优或近似最优策略。

2. 请写出表格型 Q-learning 的更新公式。

Q(S_t,A_t) <- Q(S_t,A_t)
  + alpha [R_{t+1} + gamma max_a Q(S_{t+1},a) - Q(S_t,A_t)]

3. Q-learning 的 TD target 是什么?

y_t = R_{t+1} + gamma max_a Q(S_{t+1},a)
如果下一状态终止,则 y_t = R_{t+1}

4. Q-learning 的 TD error 是什么?

delta_t = R_{t+1} + gamma max_a Q(S_{t+1},a) - Q(S_t,A_t)
它表示当前 Q 估计与 bootstrap target 的差距。

5. 为什么 Q-learning 是 off-policy 算法?

因为行为策略可以是 epsilon-greedy 或其他探索策略,但更新 target 使用下一状态的贪心动作 max_a Q(S',a)。采样策略和学习的目标策略不同。

6. Q-learning 和 Sarsa 的 target 有什么核心区别?

Sarsa 使用实际采样的下一个动作:

R + gamma Q(S',A')
Q-learning 使用贪心动作:

R + gamma max_a Q(S',a)

7. 在 Cliff Walking 中,Q-learning 和 Sarsa 的行为差异通常是什么?

Sarsa 会考虑探索动作可能掉下悬崖,因此更保守;Q-learning 学贪心最优路径,可能贴近悬崖,因为它的 target 不考虑实际探索风险。

8. Q-learning 的收敛依赖哪些直觉条件?

表格情况下需要充分探索所有状态动作对、学习率合适衰减、奖励有界、MDP 稳定。在函数近似情况下收敛更复杂,不能简单套用表格收敛结论。

二、Dyna-Q

9. Dyna-Q 想解决什么问题?

Dyna-Q 想提高样本效率。真实环境交互昂贵时,它用已学到的环境模型生成模拟经验,在真实经验之外做额外 planning 更新。

10. Dyna-Q 中 learning 和 planning 分别指什么?

Learning 指用真实交互 transition 更新 Q 和模型。Planning 指从模型中采样模拟 transition,再用类似 Q-learning 的方式更新 Q。

11. Dyna-Q 的环境模型通常存储什么?

最简单形式存储每个已见过的 (s,a) 对应的奖励和下一状态:

Model(s,a) = (r,s')
随机环境中可存转移分布或采样模型。

12. 请描述 Dyna-Q 一次真实交互后的完整更新流程。

先在环境中执行动作得到 (s,a,r,s');用这个真实 transition 做一次 Q-learning 更新;把 (r,s') 写入模型;然后重复若干次,从模型中抽取过去的 (s,a),生成模拟 transition,再更新 Q。

13. Dyna-Q 中 planning step 的数量会影响什么?

planning step 越多,每次真实交互后模型模拟更新越多,样本效率可能更高,但计算量更大,也更依赖模型准确性。

14. Dyna-Q 和纯 Q-learning 相比,样本效率为什么可能更高?

纯 Q-learning 每个真实 transition 通常更新一次。Dyna-Q 可以把历史经验通过模型反复用于 planning,使价值信息传播更快。

15. Dyna-Q 的主要风险是什么?

风险来自模型误差。如果 learned model 错误,planning 会用错误 transition 反复更新 Q,导致偏差放大。

16. 如果环境发生变化,Dyna-Q 的旧模型可能造成什么问题?

旧模型会继续生成过时的模拟经验,使策略适应变慢,甚至坚持已经无效的路径。需要模型更新、遗忘机制或探索奖励。

三、函数近似

17. 表格型 Q 方法为什么难以处理大规模状态空间?

表格方法需要为每个状态动作对存一个值。状态巨大或连续时,无法枚举和存储,也不能对未见状态泛化。

18. 什么是函数近似的 Q 函数?

用参数模型近似动作价值函数:

Q(s,a) ≈ Q(s,a;theta)
参数 theta 可以来自线性模型或神经网络。

19. 用函数近似做 Q-learning 时,监督学习式的 target 和 prediction 分别是什么?

prediction 是 Q(s,a;theta)。target 通常是:

y = r + gamma max_a' Q(s',a';theta)
DQN 中通常用 target network 参数 theta^- 来计算 target。

20. 什么是 semi-gradient?为什么 Q-learning 中常用半梯度?

Semi-gradient 更新只对当前预测 Q(s,a;theta) 求梯度,不对 target 里的 Q 值反向传播。这样实现简单,也符合 TD target 被视为固定目标的近似。

21. 什么是 deadly triad?

Deadly triad 指 function approximation、bootstrapping、off-policy learning 三者同时出现时,强化学习训练容易不稳定甚至发散。

22. 为什么 off-policy、bootstrapping 和 function approximation 同时出现会带来不稳定性?

off-policy 带来数据分布偏移,bootstrapping 让 target 依赖自身估计,函数近似会把局部误差泛化到其他状态动作。三者叠加会形成反馈环,放大估计误差。

23. 线性函数近似和深度神经网络函数近似有什么区别?

线性近似表达能力有限、理论分析相对容易。深度网络表达能力强,能处理图像等高维输入,但训练非凸、稳定性和调参更困难。

24. 为什么函数近似既带来泛化,也带来误差传播风险?

相似状态共享参数,因此未访问状态也能得到估计,这是泛化。反过来,一个样本的错误更新也会影响其他状态动作的预测,造成误差传播。

四、DQN 核心机制

25. DQN 的全称是什么?它解决了什么问题?

DQN 是 Deep Q-Network。它用深度神经网络近似 Q 函数,使 Q-learning 能处理高维观测,例如 Atari 图像。

26. DQN 中神经网络近似的是什么函数?

近似动作价值函数:

Q(s,a;theta)
表示状态 s 下执行动作 a 的长期期望回报。

27. 对离散动作空间,DQN 网络通常输出什么?

通常输入一个状态,输出每个离散动作的 Q 值:

q_net(s) -> [Q(s,a_1), Q(s,a_2), ..., Q(s,a_n)]

28. 经典 Atari DQN 的输入通常如何处理?

通常把游戏画面灰度化、缩放到固定尺寸,并堆叠最近多帧,例如 84 x 84 x 4,以提供运动信息。

29. 请写出 DQN 使用 target network 时的 TD target。

y = r + gamma * (1-done) * max_a' Q(s',a';theta^-)
theta^- 是 target network 参数。

30. 请写出 DQN 的损失函数。

常见 MSE 形式:

L(theta) = E[(y - Q(s,a;theta))^2]
也可用 Huber loss。

31. 为什么 DQN 常用 Huber loss?

Huber loss 在误差小时像 MSE,误差大时像 MAE,能降低异常 TD error 对梯度的冲击,使训练更稳定。

32. DQN 为什么主要适合离散动作空间?

DQN 需要对下一状态所有动作取最大值。离散动作可以枚举,连续动作无法直接枚举 max_a Q(s,a),优化会变得困难。

33. 如果动作空间是连续的,DQN 会遇到什么困难?

需要在连续动作空间求 argmax_a Q(s,a),这本身是复杂优化问题。因此连续控制通常使用 actor-critic 方法,由 actor 直接输出动作。

34. DQN 与普通监督学习的相似点和关键区别是什么?

相似点是都用网络预测、target 和 loss 更新。区别是 DQN 的 target 来自 bootstrap 和当前网络/目标网络,数据分布由策略生成,target 非平稳,探索会影响训练数据。

五、Experience Replay 与 Target Network

35. Experience replay 是什么?

它是把历史 transition 存入 replay buffer,并在训练时随机采样 minibatch 进行更新的方法。

36. Replay buffer 中通常存储哪些字段?

通常存储:

(state, action, reward, next_state, done)
有时还存 priority、log prob、episode id 等辅助信息。

37. Experience replay 为什么能降低样本相关性?

环境连续交互产生的相邻样本高度相关。随机从 buffer 中采样可以混合不同时刻的经验,减少 minibatch 内样本相关性。

38. Experience replay 如何提高样本利用率?

同一条真实 transition 可以被多次采样训练,而不是用完即丢,从而提高每次环境交互的利用率。

39. Replay buffer 太小或太大分别可能有什么问题?

太小会样本相关性强、覆盖不足。太大可能包含过旧策略的数据,数据分布滞后,尤其在非平稳环境中影响学习。

40. Target network 是什么?

Target network 是 online Q network 的延迟副本,用于计算 TD target。它的参数 theta^- 更新频率低于 online network。

41. Target network 为什么能稳定训练?

它让 target 在一段时间内相对固定,避免 prediction 和 target 同时快速变化,降低 bootstrap target 的非平稳性。

42. Hard update 和 soft update 有什么区别?

Hard update 每隔固定步数复制参数:

theta^- <- theta
Soft update 每步缓慢混合:

theta^- <- tau theta + (1-tau) theta^-

43. 为什么 target network 更新太频繁或太慢都可能有问题?

太频繁会接近没有 target network,target 不稳定。太慢会 target 过旧,学习滞后,影响收敛速度。

44. 为什么 target 计算时通常要 no_grad?

target 被视为固定监督信号,不应让梯度穿过 target network 或下一状态 Q。否则会改变优化目标并增加不稳定性。

六、DQN 训练流程与实现

45. 请描述 DQN 的完整训练流程。

初始化 online/target 网络和 replay buffer;用 epsilon-greedy 与环境交互;存储 transition;从 buffer 采样 minibatch;计算 target;最小化 TD loss 更新 online 网络;周期性更新 target network;循环直到训练结束。

46. DQN 中 epsilon-greedy 如何用于探索?

epsilon 概率随机动作,以 1-epsilon 概率选择当前 Q 最大动作。训练中通常让 epsilon 从大到小衰减。

47. 为什么训练前通常需要 replay buffer 预填充?

如果 buffer 太空就训练,样本高度相关且覆盖很差,容易导致网络过拟合早期轨迹或训练不稳定。

48. 在 PyTorch 中为什么要用 gather 取 Q(s,a)?

DQN 网络输出所有动作的 Q 值,但 loss 只更新实际执行动作对应的 Q(s,a)gather 用 action index 从 [batch, num_actions] 中取对应列。

49. done=True 的 transition 在 target 中应该如何处理?

终止状态没有未来价值:

y = r
实现中常写:

y = r + gamma * (1-done) * next_q

50. Reward clipping 在 DQN 中有什么作用和副作用?

作用是控制奖励尺度,稳定不同游戏上的训练。副作用是丢失奖励大小信息,可能改变任务最优策略。

51. Gradient clipping 解决什么问题?

限制梯度范数或梯度值,防止 TD error 大、Q 值爆炸或异常样本导致参数更新过猛。

52. Evaluation 时为什么要区别训练 epsilon 和评估 epsilon?

训练需要探索,评估要衡量当前策略质量。如果评估仍用高 epsilon,会把随机探索带来的差表现算进策略能力,评估不准确。

七、DQN 改进算法

53. 标准 DQN 为什么容易过估计 Q 值?

max 操作倾向选择估计噪声中偏大的动作,因此 target 会系统性偏高,造成过估计。

54. Double DQN 的核心思想是什么?

把动作选择和动作评估解耦。online network 选择下一状态最优动作,target network 评估该动作的 Q 值。

55. 请写出 Double DQN 的 target。

a* = argmax_a Q(s',a;theta)
y = r + gamma * (1-done) * Q(s',a*;theta^-)

56. Dueling DQN 把 Q 函数拆成哪两部分?

拆成状态价值 V(s) 和优势函数 A(s,a)

Q(s,a) = V(s) + A(s,a)

57. Dueling DQN 为什么需要对 advantage 做 mean subtraction?

因为 VA 存在不可辨识性:给 V 加常数、给 A 减常数,Q 不变。常用:

Q(s,a) = V(s) + A(s,a) - mean_a A(s,a)
来固定分解。

58. Dueling DQN 适合什么样的场景?

适合很多动作价值差异不明显、状态本身好坏很重要的场景。它能更有效地学习状态价值。

59. Prioritized Experience Replay 的采样依据是什么?

通常依据 TD error 的绝对值:

p_i ∝ |delta_i| + epsilon
误差大的样本更容易被采样。

60. PER 为什么需要 importance sampling weight?

非均匀采样改变了训练分布,会引入偏差。importance sampling weight 用来降低这种偏差,使更新更接近原目标。

61. Multi-step return 对 DQN 有什么帮助?

多步回报能更快传播远期奖励,减少一步 bootstrap 的偏差。但步数越大,target 方差通常越高。

62. Noisy Nets 相比 epsilon-greedy 的探索差异是什么?

Noisy Nets 在网络参数中注入可学习噪声,探索具有状态依赖性和时间一致性;epsilon-greedy 是简单随机动作探索。

63. Distributional RL 与普通 DQN 学习目标有什么区别?

普通 DQN 学习回报期望 Q(s,a)。Distributional RL 学习回报分布,能表达不确定性和分布形状。

64. Rainbow DQN 主要组合了哪些改进?

通常包括 Double DQN、Dueling network、Prioritized replay、multi-step return、distributional RL 和 Noisy Nets。

八、工程排错与应用

65. 如果 DQN loss 爆炸,可能有哪些原因?

学习率过大、奖励尺度过大、没有 target network、target 没有 detach、done 处理错误、Q 值过估计、梯度未裁剪、replay buffer 样本异常。

66. 如果 DQN 训练 reward 长期不上升,应该排查哪些问题?

排查环境交互、动作映射、奖励符号、epsilon 衰减、buffer 预填充、target 更新频率、网络输出维度、gather 维度、done mask 和评估方式。

67. 如果 Q 值整体越来越大但策略没有变好,可能是什么问题?

可能是 Q 值过估计、bootstrap target 错误、终止状态仍加未来价值、奖励尺度异常或 target network 更新设置不当。

68. DQN 在部分可观测环境中为什么可能表现差?如何改进?

单帧状态不包含完整信息,Q 网络无法判断真实状态。可用帧堆叠、RNN/DRQN、记忆机制或 belief state 改进。

69. DQN 思想如何迁移到工具调用 Agent 的有限动作选择?

如果高层动作是有限集合,例如检索、调用工具、追问、总结,可以用网络估计每个动作的 Q 值。状态是对话历史和工具结果,奖励是任务成功、成本和安全指标。

70. 请完整比较 Q-learning、Dyna-Q、DQN、Double DQN、Dueling DQN 和 Rainbow 的核心目标与解决的问题。

Q-learning 是表格 off-policy TD control,学习 Q*。Dyna-Q 在 Q-learning 上加入 learned model 和 planning,提高样本效率。DQN 用深度网络近似 Q,处理高维状态。Double DQN 解耦动作选择和评估,缓解过估计。Dueling DQN 分离状态价值和优势,提高价值学习效率。Rainbow 组合多种改进,系统提升 DQN 的稳定性和性能。

            预览时标签不可点




































<div class="