Files
rl-atari/强化学习个人项目报告/TASK_PROGRESS.md
T
Serendipity d6860f1f15 chore: 更新项目文档、依赖和训练脚本
- 更新 requirements.txt,添加 opencv-python-headless 并补充 uv 安装说明
- 修复 CSV 文件中的换行符格式(CRLF 转 LF)
- 更新 TASK_PROGRESS.md,记录并行训练实现和 WSL 支持
- 优化 train_improved.py 代码格式,移除多余空行和注释
- 更新课程作业要求文档的字符编码
- 添加新的 TensorBoard 日志文件和训练模型
2026-05-01 09:26:23 +08:00

5.5 KiB
Raw Blame History

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.txtREADME.md
策略/价值网络 Actor(高斯策略输出 μ, σ)+ Critic 实现,CNN 结构 src/network.py
Rollout Buffer 轨迹存储 + GAE 优势估计 + 返回值计算 src/replay_buffer.py
PPO Trainer PPO 更新(clip 目标函数 + 熵正则 + 价值损失) src/trainer.py
环境预处理 灰度化 + Resize(84×84) + 帧堆叠(4帧) Wrapper src/utils.py
评估脚本 渲染测试 + 多回合平均分数评估 src/evaluate.py
训练入口 主训练循环、TensorBoard 记录、模型保存 train.py
并行训练 多环境并行采集 + WSL 支持 train_parallel.py
WSL 脚本 环境配置 + 启动脚本 setup_wsl.shrun_wsl.shstart_wsl_training.bat
测试脚本 快速验证并行环境和网络 test_parallel.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                 # 单线程训练入口
├── 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)

五、下一步行动

方案 AWSL 并行训练(推荐)

# 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     # 开始训练

方案 BWindows 单线程训练

# 1. 安装依赖
uv pip install --system -r requirements.txt

# 2. 验证代码能跑(短测试)
python train.py --steps 10000

# 3. 开始正式训练(后台运行,预计 5-8 小时)
python train.py --steps 500000

训练完成后

# TensorBoard 可视化
tensorboard --logdir logs/tensorboard

# 评估模型
python src/evaluate.py --model models/ppo_carracing_final.pt --episodes 10

报告撰写后

# 编译 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 文件
  • 所有代码使用英文注释
  • 图表坐标轴和图例使用英文