Files
MAGAIL4AutoDrive/完整训练指南.md

5.9 KiB
Raw Permalink Blame History

🚀 MAGAIL完整训练指南

已实现的功能

1. 完整训练循环

  • 多智能体buffer存储
  • GAIL判别器更新
  • PPO策略优化
  • TensorBoard日志记录
  • 模型保存和加载
  • 专家数据加载7805条轨迹

2. 环境系统

  • 多智能体场景环境
  • 车辆动态生成
  • 多维度观测108维
  • 渲染和可视化

🎮 快速开始

方法1基础训练推荐新手

# 小规模测试10个episode无渲染
python train_magail.py --episodes 10 --horizon 200

方法2带可视化训练

# 5个episode带渲染
python train_magail.py --episodes 5 --render --horizon 200

方法3完整训练

# 长期训练1000 episodes
python train_magail.py \
    --episodes 1000 \
    --horizon 300 \
    --rollout-length 512 \
    --batch-size 128 \
    --lr-actor 3e-4 \
    --device cuda

方法4使用测试脚本

bash test_training.sh

📊 训练过程

数据流

Episode开始
  ↓
收集观测 (108维 × N辆车)
  ↓
Actor采样动作 ([转向, 油门])
  ↓
环境step
  ↓
存储到Buffer (state, action, reward, next_state...)
  ↓
每512步
  ├─ 更新判别器 (区分策略vs专家)
  ├─ 计算GAIL奖励
  └─ 更新PPO (Actor + Critic)
  ↓
Episode结束
  ↓
保存模型(如果是最佳)

关键参数说明

参数 默认值 说明
--episodes 1000 训练轮数
--horizon 300 每轮最大步数
--rollout-length 512 更新间隔
--batch-size 128 批次大小
--lr-actor 3e-4 Actor学习率
--lr-critic 3e-4 Critic学习率
--lr-disc 3e-4 判别器学习率
--epoch-disc 5 判别器更新轮数
--epoch-ppo 10 PPO更新轮数
--render False 是否可视化

📈 监控训练

使用TensorBoard

# 启动TensorBoard
tensorboard --logdir outputs/

# 在浏览器打开
# http://localhost:6006

关键指标

  1. Episode/Reward - 每个episode的总奖励
  2. Training/GAILReward - GAIL提供的模仿奖励
  3. Loss/disc - 判别器损失
  4. Acc/acc_pi - 判别器识别策略数据的准确率
  5. Acc/acc_exp - 判别器识别专家数据的准确率
  6. Loss/actor - Actor损失
  7. Loss/critic - Critic损失

期望的训练曲线

Episode Reward  → 逐渐上升从0开始增长
GAIL Reward     → 先上升后稳定
Disc Accuracy   → 趋向50%(说明策略接近专家)
Actor Loss      → 逐渐下降
Critic Loss     → 逐渐下降

🔍 训练状态检查

查看输出日志

训练时会打印:

📍 Episode 1/10
   可控车辆数: 5

   🔄 步数 512: 更新模型...
      GAIL奖励: 0.5234

   ✅ Episode 1 完成:
      步数: 200
      总奖励: 0.00
      平均奖励: 0.0000
      车辆数: 5
      💾 保存最佳模型 (奖励: 0.00)

检查模型文件

ls outputs/magail_*/models/
# 应该看到:
# - best_model/model.pth
# - checkpoint_50/model.pth
# - checkpoint_100/model.pth

⚠️ 常见问题

Q1: 奖励一直是0

A: 这是正常的!

  • 环境奖励设计为0
  • 真正的奖励由GAIL提供内在奖励
  • 查看 Training/GAILReward 指标

Q2: 判别器准确率是什么意思?

A:

  • acc_pi: 判别器识别策略数据为"假"的准确率
  • acc_exp: 判别器识别专家数据为"真"的准确率
  • 训练初期都接近100%(策略很差,容易区分)
  • 训练后期都接近50%(策略接近专家,难以区分)

Q3: 车辆为什么不动或乱动?

A:

  • 训练初期:策略随机,车辆行为混乱
  • 需要训练多个episode后才会改善
  • 运行 python test_vehicle_movement.py 确认环境正常

Q4: 显存不足?

A: 减小参数:

python train_magail.py \
    --batch-size 64 \
    --rollout-length 256 \
    --epoch-disc 3 \
    --epoch-ppo 5

Q5: 训练太慢?

A:

  • 去掉 --render(可视化很耗时)
  • 减小 --horizon
  • 使用更大的 --rollout-length

🎯 训练建议

初次训练

  1. 先测试小规模

    python train_magail.py --episodes 5 --horizon 100
    
  2. 观察是否有错误

  3. 检查TensorBoard

    tensorboard --logdir outputs/
    

正式训练

  1. 中等规模预热

    python train_magail.py --episodes 100 --horizon 200
    
  2. 观察学习曲线

    • 判别器准确率是否下降?
    • GAIL奖励是否变化
  3. 长期训练

    python train_magail.py --episodes 1000 --horizon 300
    

超参数调优

可以尝试调整:

  • 学习率:1e-41e-3
  • Rollout length2561024
  • Batch size64256

📁 输出文件结构

outputs/
└── magail_YYYYMMDD_HHMMSS/
    ├── models/
    │   ├── best_model/
    │   │   └── model.pth
    │   ├── checkpoint_50/
    │   └── checkpoint_100/
    └── logs/
        └── events.out.tfevents.*  # TensorBoard日志

🚀 下一步

训练完成后:

  1. 评估模型

    # TODO: 创建评估脚本
    python evaluate.py --model outputs/magail_*/models/best_model
    
  2. 可视化行为

    python train_magail.py --episodes 1 --render \
        --load-model outputs/magail_*/models/best_model/model.pth
    
  3. 分析日志

    • 查看TensorBoard
    • 对比不同超参数的效果

💡 提示

  • 💾 定期备份 outputs/ 目录
  • 📊 使用TensorBoard监控训练
  • 长期训练建议使用 nohupscreen
  • 🔍 出现错误时查看完整堆栈跟踪

祝训练顺利! 🎉

有问题查看:

  • 技术说明文档.md - 技术细节
  • MAGAIL算法应用指南.md - 使用指南
  • 问题解决记录.md - 常见问题