跳转至

附录 E - 常见问题解答 (FAQ)

说明:本附录收集学习强化学习基础阶段时的常见问题,帮助你快速解决疑惑。


01 - 什么是强化学习

Q1: 强化学习和监督学习有什么本质区别

A: 核心区别在于反馈类型: - 监督学习:有"标准答案",即时反馈(标签) - 强化学习:没有标准答案,只有奖励信号,反馈是延迟的

类比: - 监督学习 = 老师批改作业(知道哪里错了) - 强化学习 = 玩游戏(只知道最终得分,不知道哪一步错了)

Q2: 为什么需要折扣因子γ

A: 三个原因: 1. 数学上:防止回报无限大(特别是 continuing 任务) 2. 直观上:未来的奖励不如现在的确定 3. 计算上:使值函数收敛

如果不使用γ: - 在无限 horizon 问题中,回报可能发散 - 智能体可能永远等待"更好的未来"

Q3: V(s)和 Q(s,a)到底有什么区别

A: - V(s):在这个状态,按照当前策略,平均能获得多少回报 - Q(s,a):在这个状态,先执行动作 a,然后按照策略,能获得多少回报

关系:\(V(s) = \sum_a \pi(a|s) Q(s,a)\)(对所有动作加权平均)

记忆技巧: - V 只看状态( Value of state ) - Q 看状态+动作( Quality of action )


02 - 马尔可夫决策过程

Q4: 马尔可夫性质为什么重要

A: 马尔可夫性质(未来只依赖当前状态)让问题可解: - 不需要记住完整历史 - 状态空间不会随时间指数增长 - 可以使用动态规划等方法

反例:如果没有马尔可夫性质,你需要记住所有历史才能做决策,状态空间会爆炸。

Q5: 如何确定一个好的状态表示

A: 好的状态表示应该: 1. 满足马尔可夫性:包含预测未来所需的所有信息 2. 足够简洁:不要包含无关信息 3. 可计算:能够实际获取和存储

示例: - 下棋:当前棋盘局面(好) vs 最后一步棋(不好) - 自动驾驶:位置+速度+方向(好) vs 只有位置(不好)

Q6: 状态转移概率 P(s'|s,a)在实际中如何获得

A: 三种方式: 1. 已知模型:如游戏规则、物理仿真 2. 学习得到:从数据中学习转移模型 3. 无模型方法:不显式使用 P ,直接从经验学习(如 Q-Learning )


03 - 贝尔曼方程

Q7: 贝尔曼方程的直观理解是什么

A: 递归关系

Text Only
当前值 = 即时奖励 + 折扣 × 下一个状态的值

类比: - 这局游戏的得分 = 这一步的得分 + 剩余游戏的得分 - 就像"今天的工作量 = 上午做的 + 下午做的"

Q8: 贝尔曼最优方程和期望方程的区别

A: - 期望方程:按照当前策略的平均 - 最优方程:取所有动作的最大值(假设采取最优动作)

关键区别: - 期望方程描述"是什么" - 最优方程描述"最好是什么"

Q9: 为什么贝尔曼算子是压缩映射

A: 直观理解: - 每次应用贝尔曼算子,值函数的"误差"会缩小 - 缩小比例是γ(折扣因子) - 所以反复应用会收敛到不动点

数学上: $\(\|TV_1 - TV_2\| \leq \gamma \|V_1 - V_2\|\)$


04 - 动态规划

Q10: 值迭代和策略迭代有什么区别

A:

特性 值迭代 策略迭代
更新对象 值函数 策略+值函数
每次迭代 一次贝尔曼最优更新 完整策略评估+策略改进
收敛速度 较慢(但每步快) 较快(但每步慢)
适用场景 大状态空间 小状态空间

Q11: 策略评估为什么要迭代多次

A: 因为要解线性方程组: $\(V = R + \gamma P V\)$

直接求解需要 \(O(S^3)\),迭代求解只需要 \(O(S^2)\) 每步。

Q12: 异步动态规划有什么好处

A: 1. 计算效率高:不需要遍历所有状态 2. 实时性:可以边学习边执行 3. 聚焦重要状态:优先更新重要状态


05 - 蒙特卡洛方法

Q13: 首次访问 MC 和每次访问 MC 有什么区别

A: - 首次访问:只使用第一次访问的回报 - 每次访问:使用所有访问的回报

统计性质: - 首次访问:无偏估计 - 每次访问:有偏但渐近无偏,通常方差更小

Q14: 为什么 MC 需要完整 episode

A: 因为 MC 使用实际回报 \(G_t = R_{t+1} + \gamma R_{t+2} + ...\)

需要知道未来的所有奖励才能计算 \(G_t\)

对比 TD: TD 使用自举,只需要下一步的估计值。

Q15: 重要性采样比率为什么会爆炸

A: 当行为策略和目标策略差异大时: $\(\rho = \prod_{t=0}^{T-1} \frac{\pi(A_t|S_t)}{b(A_t|S_t)}\)$

某些轨迹的比率可能极大,导致: - 方差爆炸 - 数值不稳定

解决方法:加权重要性采样( WIS )


06 - 理论基础统一框架

Q16: n-step 方法中 n 如何选择

A: 权衡偏差-方差: - n 小(如 1 ):偏差大,方差小(类似 TD ) - n 大:偏差小,方差大(类似 MC ) - 经验法则:从 n=3 或 5 开始尝试

Q17: TD(λ)中的λ有什么作用

A: λ控制"看多远": - λ=0 :只看下一步( TD(0)) - λ=1 :看完整 episode ( MC ) - 0<λ<1 :加权平均所有 n-step 回报

Q18: 资格迹的直观理解是什么

A: 记忆机制: - 记录每个状态对当前误差的"贡献" - 最近访问的状态有更高的"资格" - 随着时间衰减(γλ)

类比:就像"功劳簿",记录谁对当前结果有贡献。


07 - 收敛性与复杂度理论

Q19: 为什么 TD 比 MC 收敛更快但有偏差

A: - TD 快:使用自举,每步都更新 - TD 有偏:自举使用了不准确的估计值 - MC 无偏:使用实际回报,没有近似

偏差-方差权衡: - TD :低方差,有偏 - MC :高方差,无偏

Q20: 样本复杂度中的(1-γ)^3 是什么意思

A: 表示长程依赖的难度: - γ接近 1 :未来奖励重要,需要更多样本来学习长期影响 - γ接近 0 :只看即时奖励,学习更容易

\((1-\gamma)^{-3}\) 反映了学习长期依赖的指数级难度。

Q21: 什么是"致命三元组"

A: 三个元素同时存在时可能导致发散: 1. 函数逼近:使用近似值函数 2. 自举: TD 学习 3. Off-Policy:学习策略与执行策略不同

解决方案: - 使用 On-Policy 方法 - 使用梯度 TD 方法( GTD, TDC ) - 使用经验回放


08 - 统计学习理论视角

Q22: 为什么 RL 的样本复杂度是 O(1/ε²)而不是 O(1/ε)

A: 因为 RL 需要探索: - 不知道哪个策略好,必须尝试 - 探索带来了额外的方差 - 需要更多样本才能确定最优策略

对比监督学习:数据是给定的,不需要探索。

Q23: 集中性系数 C*是什么

A: 衡量行为策略与最优策略的差异: $\(C^* = \max_{s,a} \frac{d^{\pi^*}(s,a)}{d^{\pi_b}(s,a)}\)$

  • C*小:行为策略覆盖了最优策略的轨迹
  • C*大:最优策略访问的状态-动作对很少被访问

离线学习中: C*大意味着学习困难。

Q24: 悲观主义原则为什么重要

A: 解决分布偏移问题: - 在数据稀少的区域,估计不可靠 - 悲观原则:对不确定区域采用悲观估计 - 防止过度乐观导致的错误

类比:"宁可错过,不要犯错"


编程实践问题

Q25: 我的 Q-Learning 不收敛,怎么办

A: 检查清单: 1. [ ] 学习率α是否太大?(尝试 0.01-0.1 ) 2. [ ] 探索率ε是否衰减?(应该逐渐减小) 3. [ ] 奖励是否归一化?(太大或太小都不好) 4. [ ] 环境是否正确实现? 5. [ ] Q 表初始化是否合理?(尝试 optimistic initialization )

Q26: 如何选择超参数

A: 经验法则:

参数 典型范围 建议
α(学习率) 0.001-0.3 从 0.1 开始
γ(折扣因子) 0.9-0.99 取决于任务 horizon
ε(探索率) 0.01-0.3 从 0.1 开始,逐渐衰减
λ( TD lambda ) 0.5-0.9 从 0.9 开始

调参方法: 1. 先固定其他参数,调一个参数 2. 使用网格搜索或随机搜索 3. 观察学习曲线

Q27: 如何调试 RL 代码

A: 调试技巧: 1. 打印中间值: Q 值、奖励、动作 2. 可视化:画出学习曲线、值函数热图 3. 简化环境:先用简单环境测试 4. 对比验证:和已知正确的实现对比 5. 单元测试:测试环境的每个函数


学习建议

Q28: 如何高效学习强化学习

A: 三阶段学习法:

阶段 1 :建立直觉( 1-2 周) - 看直观的解释和图示 - 运行代码,观察结果 - 不要陷入数学细节

阶段 2 :深入理解( 2-3 周) - 推导公式 - 实现算法 - 做实验对比

阶段 3 :应用实践(持续) - 解决实际问题 - 阅读论文 - 参与项目

Q29: 数学基础不够,能学 RL 吗

A: 可以!分层次学习:

基础层次: - 理解概念和算法流程 - 能够使用现成的库 - 能够调参和调试

进阶层次: - 理解数学推导 - 能够修改算法 - 能够分析收敛性

高级层次: - 能够提出新算法 - 能够做理论分析

建议:从基础层次开始,逐步深入。

Q30: 学完基础阶段后应该学什么

A: 学习路径:

Text Only
基础阶段(已完成)
时序差分学习
├── SARSA
├── Q-Learning
└── 探索与利用
函数近似
├── 线性函数近似
└── 神经网络(DQN)
策略梯度
├── REINFORCE
└── Actor-Critic
高级主题
├── PPO, SAC
├── 模型基方法
└── 多智能体RL

还有其他问题?欢迎提出!