添加 PPO 算法实现及相关配置,更新训练入口以支持 SAC 和 PPO 模式
This commit is contained in:
@@ -1,22 +1,19 @@
|
||||
# ==========================================
|
||||
# Soft Actor-Critic (SAC) - Pendulum-v1 配置
|
||||
# Soft Actor-Critic (SAC)
|
||||
# Pendulum-v1 配置
|
||||
# ==========================================
|
||||
|
||||
# --- 算法核心参数 ---
|
||||
gamma: 0.99 # 折扣因子 (越接近1越看重长期收益)
|
||||
tau: 0.005 # 目标网络软更新系数 (EMA平滑系数,越小越稳定)
|
||||
alpha: 0.2 # 熵温度系数 (控制探索力度,Pendulum中0.2比较合适,如果是复杂环境可能需要调整或自动学习)
|
||||
lr: 0.0003 # 学习率 (Actor 和 Critic 保持一致,3e-4 是 Adam 优化器的万金油)
|
||||
gamma: 0.99 # 折扣因子
|
||||
tau: 0.005 # 目标网络软更新系数 (EMA)
|
||||
alpha: 0.2 # 熵温度系数
|
||||
lr: 0.0003 # 学习率 (Adam, 3e-4)
|
||||
|
||||
# --- 经验回放池参数 ---
|
||||
buffer_size: 1000000 # 回放池最大容量 (100万条)
|
||||
batch_size: 256 # 每次梯度更新抽样的 batch 大小
|
||||
buffer_size: 1000000 # 回放池最大容量 (100万条)
|
||||
batch_size: 256 # 每次梯度更新抽样的 batch 大小
|
||||
|
||||
# --- 训练循环控制 ---
|
||||
max_episodes: 200 # 总共训练多少个回合 (Episode)
|
||||
max_steps: 200 # 每个回合最多走多少步 (Gym Pendulum 默认 200 步截断)
|
||||
start_steps: 10000 # 纯随机动作探索的步数 (用来快速填补经验池的高多样性数据)
|
||||
|
||||
# --- 扩展参数 (为了后续画图和保存模型备用) ---
|
||||
eval_freq: 10 # 每隔多少个回合评估一次策略
|
||||
save_model: true # 是否保存最终模型权重
|
||||
max_episodes: 200 # 总共训练多少个 episode
|
||||
max_steps: 200 # 每 episode 最多步数 (Pendulum-v1 默认 200 步截断)
|
||||
start_steps: 10000 # 纯随机动作探索的步数
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# ==========================================
|
||||
# Proximal Policy Optimization (PPO-Clip)
|
||||
# Pendulum-v1 配置
|
||||
# 参考论文: Schulman et al., 2017 (arXiv:1707.06347)
|
||||
# ==========================================
|
||||
|
||||
# --- 算法核心参数 ---
|
||||
gamma: 0.9 # 折扣因子 (Pendulum 短周期任务用 0.9 比 0.99 更易收敛)
|
||||
gae_lambda: 0.95 # GAE λ (论文 Table 3)
|
||||
clip_epsilon: 0.2 # 概率比率裁剪范围 [1-ε, 1+ε]
|
||||
lr: 0.001 # 学习率 (PPO on-policy 更新少,适当提高 lr)
|
||||
|
||||
# --- 网络更新参数 ---
|
||||
n_epochs: 10 # 每轮收集后用同一批数据重复优化的 epoch 数
|
||||
batch_size: 64 # mini-batch 大小
|
||||
vf_coef: 0.5 # 价值损失系数 c1 (公式9)
|
||||
entropy_coef: 0.0 # 熵奖励系数 c2 (Pendulum 简单任务,不需要额外探索奖励)
|
||||
max_grad_norm: 0.5 # 梯度裁剪上限
|
||||
|
||||
# --- 数据收集参数 ---
|
||||
steps_per_update: 1024 # 每次更新前收集的步数 (缩短到 5 个 episode 更新一次,加速学习)
|
||||
|
||||
# --- 训练循环控制 ---
|
||||
max_episodes: 500 # PPO 是 on-policy,需要更多 episode 才能收敛
|
||||
max_steps: 200 # 每 episode 最多步数 (Pendulum-v1 默认 200 步截断)
|
||||
Reference in New Issue
Block a user