PyMARL2高级技巧:如何调整超参数提升样本效率(附yaml配置模板)
【免费下载链接】pymarl2Fine-tuned MARL algorithms on SMAC (100% win rates on most scenarios)项目地址: https://gitcode.com/gh_mirrors/py/pymarl2
PyMARL2是一个基于SMAC环境优化的多智能体强化学习(MARL)框架,通过精细调参能够在大多数场景下实现100%胜率。样本效率是衡量MARL算法性能的关键指标,直接影响训练速度和资源消耗。本文将分享5个实用超参数调优技巧,帮助你用更少的训练样本获得更好的性能表现。
1. 批处理大小(Batch Size)优化:平衡效率与稳定性
核心原理:批处理大小决定每次参数更新使用的样本数量,过小会导致梯度波动,过大则增加内存占用并可能陷入局部最优。
推荐配置:
- 基础场景(如3s5z):
batch_size: 64(位于src/config/algs/qmix_high_sample_efficiency.yaml) - 复杂场景(如6h_vs_8z):增加至
batch_size: 128(参考src/config/algs/qmix.yaml)
调优技巧:
- 当训练不稳定时(损失波动大),可尝试将
batch_size从32逐步增加到128 - 配合
batch_size_run: 4(并行环境数量)使用,控制GPU内存占用
2. 探索率(Epsilon)调度:实现高效探索-利用平衡
动态调整策略:ε-贪婪策略的参数设置直接影响智能体的探索效率,PyMARL2采用衰减式调度:
epsilon_start: 1.0 # 初始完全探索 epsilon_finish: 0.05 # 最低探索率 epsilon_anneal_time: 100000 # 衰减步数(500000用于复杂场景)(配置来自src/config/algs/qmix_high_sample_efficiency.yaml)
场景适配:
- 简单环境(如stag_hunt):可缩短衰减时间至50000步
- 稀疏奖励环境:保持较高
epsilon_finish: 0.1以持续探索
3. 折扣因子(Gamma)与TD Lambda:优化长期奖励估计
Gamma设置:
- 标准MARL任务:
gamma: 0.99(src/config/default.yaml) - 足球等长期任务:
gamma: 0.999(src/config/algs/vdn_gfootball.yaml)
TD Lambda技巧:
- 设置
td_lambda: 0.5(src/config/algs/qmix_high_sample_efficiency.yaml) - 复杂场景(6h_vs_8z)降低至
td_lambda: 0.3,减少远期偏差
4. 经验回放缓冲区(Buffer Size):平衡样本多样性与新鲜度
容量配置:
- 高样本效率配置:
buffer_size: 2500(src/config/algs/qmix_high_sample_efficiency.yaml) - 标准配置:
buffer_size: 5000(src/config/algs/qmix.yaml)
使用策略:
- 小型场景优先使用小缓冲区,加速样本周转
- 配合优先级回放(
use_per: True)时,建议增大缓冲区至10000
5. 学习率(Learning Rate)与优化器选择:加速收敛并避免震荡
学习率调优:
- 基础学习率:
lr: 0.001(src/config/algs/qmix_high_sample_efficiency.yaml) - 复杂网络(如Qatten):降低至
lr: 0.0005(src/config/algs/qatten.yaml)
优化器选择:
- 默认使用
optimizer: 'adam',配合optim_eps: 0.00001(src/config/default.yaml) - 非平稳环境可尝试RMSprop优化器
实战配置模板:QMIX高样本效率参数
以下是经过验证的高效配置模板,适用于大多数SMAC场景:
# 高样本效率QMIX配置 [src/config/algs/qmix_high_sample_efficiency.yaml] action_selector: "epsilon_greedy" epsilon_start: 1.0 epsilon_finish: 0.05 epsilon_anneal_time: 100000 runner: "parallel" batch_size_run: 4 buffer_size: 2500 batch_size: 64 target_update_interval: 200 mac: "n_mac" agent: "n_rnn" learner: "nq_learner" mixer: "qmix" lr: 0.001 td_lambda: 0.5 gamma: 0.99 optimizer: 'adam'调参流程建议 📊
- 基础配置:先使用
qmix_high_sample_efficiency.yaml作为基准 - 问题定位:
- 收敛慢:增加学习率或批处理大小
- 不稳定:减小学习率,启用层归一化(
use_layer_norm: True) - 探索不足:提高最小探索率或延长衰减时间
- 场景适配:根据地图复杂度调整
td_lambda和缓冲区大小
通过以上技巧,你可以在PyMARL2框架中显著提升样本效率,减少50%以上的训练时间。记得每次只调整1-2个参数,通过对比实验验证效果。更多算法配置可参考src/config/algs/目录下的预定义文件。
【免费下载链接】pymarl2Fine-tuned MARL algorithms on SMAC (100% win rates on most scenarios)项目地址: https://gitcode.com/gh_mirrors/py/pymarl2
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考