Skip to content

Mi-729/SafeRL-Starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Safe PPO on CartPole

Python 3.8+ PyTorch License: MIT

一个安全强化学习入门项目,实现了Safe PPO算法并在CartPole环境中取得了突破性的560+分成绩(超过500分满分)。

核心成就

在CartPole-v1环境中实现了561.4分的平均奖励,超越了该环境的500分满分标准!

关键改进 效果提升 实验验证
ReLU → Tanh激活函数 80.2分 → 136.9分 (+70%) test2
+ LayerNorm归一化 136.9分 → 254.2分 (+86%) test3
Advantage归一化 93.8分 → 238.4分 (+154%) test7
超参数优化+500轮训练 238.4分 → 561.4分 (+135%) test8

项目亮点

  1. 完整实现Safe PPO算法(策略损失、价值损失、熵损失、安全损失)
  2. 网络架构创新:Tanh + LayerNorm组合显著提升训练稳定性
  3. 训练优化:Advantage归一化解决价值损失爆炸问题
  4. 可配置化:YAML配置文件支持灵活的超参数调整
  5. 复现性强:详细记录每个实验的参数和结果

项目结构

SafeRL-Starter/ ├── scripts/ │ └── train.py # 主训练脚本(支持YAML配置) ├── configs/ │ └── default.yaml # 超参数配置文件 ├── src/ │ ├── envs/ │ │ └── safe_cartpole.py # 安全CartPole环境 │ ├── networks/ │ │ └── actor_critic.py # Actor-Critic网络架构 │ └── algorithms/ │ └── safe_ppo.py # Safe PPO算法实现 ├── models/ # 训练好的模型 ├── requirements.txt └── README.md

快速开始

安装依赖

pip install -r requirements.txt

训练模型

cd scripts
python train.py

(可通过修改default.yaml调参)

实验结果

###训练曲线(500轮) 第0轮: 12.0分 第100轮: 124.6分 第200轮: 156.1分 第300轮: 299.5分 第400轮: 303.4分 第500轮: 561.4分

###关键发现 1.网络容量:64维比128维更稳定(254.2分 vs 255.3分) 2.激活函数:Tanh比ReLU更稳定(136.9分 vs 80.2分) 3.归一化:LayerNorm提升训练稳定性 4.Advantage归一化:解决价值损失爆炸问题的关键

###超参数配置(最佳配置) 文件里default.yaml中即为最佳配置

性能对比

与其他方法的比较(CartPole-v1,500分为满分):

方法 平均分数 训练轮数 备注
随机策略 ~20分 - 基准线
DQN 200-300分 500-1000 经典方法
原始PPO 300-400分 300-500 无安全约束
我们的Safe PPO 561.4分 500 超越满分

参考学习资源

Proximal Policy Optimization Algorithms:https://arxiv.org/abs/1707.06347 Constrained Policy Optimization:https://arxiv.org/abs/1705.10528 Layer Normalization:https://arxiv.org/abs/1607.06450

About

我的第一个安全强化学习项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages