Files
rl-atari/强化学习个人项目报告/TASK_PROGRESS.md
T
Serendipity d353133b31 feat: 添加强化学习项目报告及重构课程作业报告代码结构
- 新增强化学习个人项目报告,包含基于PyTorch从零实现的PPO算法
- 重构课程作业报告代码结构,提取运行时路径管理和notebook执行逻辑到独立模块
- 更新依赖文件requirements.txt,添加强化学习相关依赖
- 简化模型比较结果表格,仅保留基线逻辑回归模型数据
2026-04-30 16:54:41 +08:00

137 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PPO + CarRacing-v3 任务进度追踪
> 生成时间:2026/04/30
---
## 作业要求
用 Python 从零实现 PPO 算法,在 CarRacing-v3 环境训练智能体,提交:
- 技术报告(≤3000 词,英文)PDF
- 源代码 + 训练模型 zip 文件
- 截止:04/May/2026 23:59
- **禁止使用**Stable-Baselines 等 RL 专用库
- **允许使用**TensorBoard、PyTorch、Gymnasium
---
## 一、已完成 ✅
| 步骤 | 内容 | 文件 |
|------|------|------|
| ✅ 项目结构 | src/ 目录、requirements.txt、README.md | [requirements.txt](requirements.txt)、[README.md](README.md) |
| ✅ 策略/价值网络 | Actor(高斯策略输出 μ, σ)+ Critic 实现,CNN 结构 | [src/network.py](src/network.py) |
| ✅ Rollout Buffer | 轨迹存储 + GAE 优势估计 + 返回值计算 | [src/replay_buffer.py](src/replay_buffer.py) |
| ✅ PPO Trainer | PPO 更新(clip 目标函数 + 熵正则 + 价值损失) | [src/trainer.py](src/trainer.py) |
| ✅ 环境预处理 | 灰度化 + Resize(84×84) + 帧堆叠(4帧) Wrapper | [src/utils.py](src/utils.py) |
| ✅ 评估脚本 | 渲染测试 + 多回合平均分数评估 | [src/evaluate.py](src/evaluate.py) |
| ✅ 训练入口 | 主训练循环、TensorBoard 记录、模型保存 | [train.py](train.py) |
**核心算法实现要点**
- 策略网络:3 层 CNN + FC(512) → μ, σ(高斯策略,tanh 激活)
- 价值网络:3 层 CNN + FC(512) → V(s)
- GAE:λ=0.95,优势归一化
- PPO clip:ε=0.24 epoch 更新,mini-batch 64
---
## 二、待完成 ⬜
| 步骤 | 内容 | 优先级 |
|------|------|--------|
| ⬜ 安装依赖 | `uv pip install --system -r requirements.txt` | **高** |
| ⬜ 环境测试 | 短时间(~10000步)验证代码能跑通 | **高** |
| ⬜ 完整训练 | 运行 500k+ 步,预计 5-8 小时(后台) | **高(耗时)** |
| ⬜ 生成图表 | 从 TensorBoard 提取数据,用 matplotlib 绘图 | 中 |
| ⬜ 撰写报告 | 英文技术报告(≤3000 词),LaTeX 排版 | 中 |
| ⬜ 编译 PDF | XeLaTeX 编译生成 CW1_1234560.pdf | 中 |
| ⬜ 打包 zip | 源代码 + 模型打包 CW1_1234560.zip | 低 |
---
## 三、文件结构
```
强化学习个人项目报告/
├── src/
│ ├── __init__.py
│ ├── network.py # Actor + Critic CNN 网络
│ ├── replay_buffer.py # Rollout buffer + GAE
│ ├── trainer.py # PPO 更新逻辑
│ ├── utils.py # 环境预处理 wrappers
│ └── evaluate.py # 评估脚本
├── train.py # 主训练入口
├── requirements.txt
├── README.md
└── TASK_PROGRESS.md # 本文档
```
---
## 四、超参数配置
| 参数 | 值 |
|------|-----|
| Learning rate | 3e-4 |
| Gamma | 0.99 |
| GAE lambda | 0.95 |
| Clip epsilon | 0.2 |
| PPO epochs | 4 |
| Mini-batch size | 64 |
| Rollout steps | 2048 |
| Entropy coefficient | 0.01 |
| Value coefficient | 0.5 |
| Max gradient norm | 0.5 |
| State shape | (84, 84, 4) |
| Action dim | 3(连续:steer, gas, brake |
---
## 五、下一步行动
### 立即执行
```bash
# 1. 安装依赖
uv pip install --system -r requirements.txt
# 2. 验证代码能跑(短测试)
python train.py --steps 10000
# 3. 开始正式训练(后台运行,预计 5-8 小时)
python train.py --steps 500000
```
### 训练完成后
```bash
# TensorBoard 可视化
tensorboard --logdir logs/tensorboard
# 评估模型
python src/evaluate.py --model models/ppo_carracing_final.pt --episodes 10
```
### 报告撰写后
```bash
# 编译 PDF
cd tex && xelatex CW1_1234560.tex
```
---
## 六、报告结构(≤3000 词)
1. **Introduction** — RL 背景、CarRacing-v3 任务、状态/动作/奖励空间定义
2. **Methodology** — PPO 数学公式、clip 机制、GAE 优势估计
3. **Implementation Details** — 网络结构、训练流程、超参数、问题与解决
4. **Results and Analysis** — 训练曲线图、评估结果、与 SB3 基线对比
5. **Conclusion** — PPO 敏感性、actor-critic 有效性总结
---
## 七、提交清单
- [ ] `CW1_1234560.pdf` — 技术报告(封面 + ≤3000 词)
- [ ] `CW1_1234560.zip` — 源代码 + 训练好的模型 .pt 文件
- [ ] 所有代码使用英文注释
- [ ] 图表坐标轴和图例使用英文