Week 9 - 学生练习
函数逼近入门
练习目标
- 巩固对表格型 RL 方法局限性的理解。
- 掌握函数逼近的核心思想、优势和基本学习过程。
- 理解线性函数逼近的概念、实现方式(特征向量)和局限性。
- 通过 CartPole 案例加深对函数逼近必要性的认识。
- 初步熟悉 Stable Baselines3 (SB3) 库及其在 DRL 中的作用。
练习内容
练习 1: 函数逼近概念
- 为何需要函数逼近? 请列举至少三个表格型强化学习方法难以处理的情况,并解释为什么函数逼近能够帮助解决这些问题。
- 核心思想: 函数逼近的基本思想是什么?它与表格型方法存储价值的方式有何不同?(提示:参数化函数 \(\hat{V}(s, w)\) 或 \(\hat{Q}(s, a, w)\))
- 泛化: 什么是函数逼近带来的“泛化 (Generalization)”能力?为什么这在大型状态空间中很重要?
- 学习过程类比: 函数逼近的学习过程如何借鉴监督学习?请说明 RL 中的“目标值 (Target)”和“预测值”分别对应什么,以及通常使用什么方法来更新参数 w?
- 半梯度: 为什么 TD 学习与函数逼近结合时,更新规则被称为“半梯度 (Semi-gradient)”?(简述即可)
练习 2: 线性函数逼近
假设我们使用线性函数逼近状态值函数 \(\hat{V}(s, w) = w^\top \phi(s)\)。
- 特征向量:
- 在一个简单的 Gridworld 环境中,状态 \(s\) 是格子的坐标 \((row, col)\)。请你设计一个简单的特征向量 \(\phi(s)\)。(提示:可以包含原始坐标、坐标的组合、或者表示格子类型的指示变量等,至少包含 3 个特征)。
- 你设计的特征向量维度是多少?
- 权重向量: 对应你设计的特征向量,权重向量 \(w\) 的维度是多少?
- 价值计算: 假设你的特征向量是 \(\phi(s) = (1, row, col, row*col)\),权重向量是 \(w = (0.5, -0.1, 0.2, 0.05)^\top\)。请计算状态 \(s=(2, 3)\) 的近似价值 \(\hat{V}(s, w)\)。
- 局限性: 线性函数逼近的主要局限性是什么?为什么对于复杂问题,我们通常需要更强大的函数逼近器(如神经网络)?
练习 3: CartPole 与函数逼近
- 连续状态: CartPole 环境的状态包含哪些信息?这些信息是离散的还是连续的?
- 维度灾难: 如果尝试将 CartPole 的每个状态变量离散化为 10 个区间,总共会产生多少个离散状态?这个数量级说明了什么问题?
- 必要性: 为什么说对于 CartPole 这样的问题,使用函数逼近是必须的,而不是可选的?
练习 4: Stable Baselines3 (SB3) 初识
- SB3 的用途: Stable Baselines3 (SB3) 库的主要目的是什么?它为我们提供了什么便利?
- 基本流程: 回顾讲义中 SB3 DQN 示例代码的基本结构。请简述使用 SB3 运行一个 DRL 实验通常包含哪几个主要步骤?(例如:创建环境 -> … -> 评估模型)
- (思考) 课程后续将重点使用 SB3 进行实验。你认为使用这样一个现成的库进行学习,相比于从零开始手动实现 DQN/A2C 等算法,各有什么优缺点?
提交要求
- 请将你的答案整理成一个文档(如 Word, PDF, 或 Markdown 文件)。
- 对于练习 1, 2, 3, 4,请清晰地回答问题并阐述理由或计算过程。
- 文件命名格式:
姓名_学号_Week9_Exercise.xxx
。 - 通过教学平台提交。