d6860f1f15
- 更新 requirements.txt,添加 opencv-python-headless 并补充 uv 安装说明 - 修复 CSV 文件中的换行符格式(CRLF 转 LF) - 更新 TASK_PROGRESS.md,记录并行训练实现和 WSL 支持 - 优化 train_improved.py 代码格式,移除多余空行和注释 - 更新课程作业要求文档的字符编码 - 添加新的 TensorBoard 日志文件和训练模型
158 lines
5.5 KiB
Markdown
158 lines
5.5 KiB
Markdown
# 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) |
|
||
| ✅ 并行训练 | 多环境并行采集 + WSL 支持 | [train_parallel.py](train_parallel.py) |
|
||
| ✅ WSL 脚本 | 环境配置 + 启动脚本 | [setup_wsl.sh](setup_wsl.sh)、[run_wsl.sh](run_wsl.sh)、[start_wsl_training.bat](start_wsl_training.bat) |
|
||
| ✅ 测试脚本 | 快速验证并行环境和网络 | [test_parallel.py](test_parallel.py) |
|
||
|
||
**核心算法实现要点**:
|
||
- 策略网络:3 层 CNN + FC(512) → μ, σ(高斯策略,tanh 激活)
|
||
- 价值网络:3 层 CNN + FC(512) → V(s)
|
||
- GAE:λ=0.95,优势归一化
|
||
- PPO clip:ε=0.2,4 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 # 单线程训练入口
|
||
├── train_parallel.py # 多环境并行训练(推荐)
|
||
├── setup_wsl.sh # WSL 环境配置
|
||
├── run_wsl.sh # WSL 训练启动脚本
|
||
├── start_wsl_training.bat # Windows 一键启动 WSL 训练
|
||
├── test_parallel.py # 并行训练测试
|
||
├── requirements.txt
|
||
├── README.md
|
||
├── WSL_README.md # WSL 训练指南
|
||
└── TASK_PROGRESS.md # 本文档
|
||
```
|
||
|
||
---
|
||
|
||
## 四、超参数配置
|
||
|
||
| 参数 | train.py (单线程) | train_parallel.py (并行) |
|
||
|------|-------------------|--------------------------|
|
||
| Learning rate | 3e-4 | 3e-4 |
|
||
| Gamma | 0.99 | 0.99 |
|
||
| GAE lambda | 0.95 | 0.98 |
|
||
| Clip epsilon | 0.2 | 0.1 |
|
||
| PPO epochs | 4 | 10 |
|
||
| Mini-batch size | 64 | 128 |
|
||
| Rollout steps | 2048 | 2048 |
|
||
| Entropy coefficient | 0.01 | 0.005 |
|
||
| Value coefficient | 0.5 | 0.75 |
|
||
| Max gradient norm | 0.5 | 0.5 |
|
||
| 总步数 | 500,000 | 2,000,000 |
|
||
| 环境数 | 1 | 4 |
|
||
| 预计时长 | ~8h | ~5h (4x) |
|
||
|
||
---
|
||
|
||
## 五、下一步行动
|
||
|
||
### 方案 A:WSL 并行训练(推荐)
|
||
```bash
|
||
# Windows 下双击 start_wsl_training.bat
|
||
# 或手动:
|
||
wsl
|
||
cd "/mnt/d/Code/doing_exercises/programs/外教作业外快/强化学习个人项目报告"
|
||
chmod +x setup_wsl.sh run_wsl.sh
|
||
./setup_wsl.sh # 首次运行
|
||
./run_wsl.sh # 开始训练
|
||
```
|
||
|
||
### 方案 B:Windows 单线程训练
|
||
```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 文件
|
||
- [ ] 所有代码使用英文注释
|
||
- [ ] 图表坐标轴和图例使用英文
|