附录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: 递归关系:
类比: - 这局游戏的得分 = 这一步的得分 + 剩余游戏的得分 - 就像"今天的工作量 = 上午做的 + 下午做的"
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: 学习路径:
基础阶段(已完成)
↓
时序差分学习
├── SARSA
├── Q-Learning
└── 探索与利用
↓
函数近似
├── 线性函数近似
└── 神经网络(DQN)
↓
策略梯度
├── REINFORCE
└── Actor-Critic
↓
高级主题
├── PPO, SAC
├── 模型基方法
└── 多智能体RL
还有其他问题?欢迎提出!