实验性 API¶
rl_training.experimental 提供 AxiomRL 全部 70 余种算法的访问入口。与稳定核心 API 不同,实验性 API 可能在次要版本之间发生变更。
概览¶
rl_training.experimental 重新导出 rl_training.api 的所有内容,并额外提供 EXPERIMENTAL_ALGORITHMS 常量,其中包含所有不在 STABLE_ALGORITHMS 中的算法名称。
from rl_training.experimental import EXPERIMENTAL_ALGORITHMS
from rl_training.core import STABLE_ALGORITHMS
# 实验性算法 = 全部算法 - 稳定核心算法
print(f"稳定核心算法数量: {len(STABLE_ALGORITHMS)}") # 10
print(f"实验性算法数量: {len(EXPERIMENTAL_ALGORITHMS)}") # 60+
导入方式¶
# 导入特定的实验性算法
from rl_training.experimental import REDQ, TQC, CrossQ
# 导入所有可用算法
from rl_training.experimental import *
# 检查某个算法是否属于实验性
from rl_training.experimental import EXPERIMENTAL_ALGORITHMS
print("REDQ" in EXPERIMENTAL_ALGORITHMS) # True
print("PPO" in EXPERIMENTAL_ALGORITHMS) # False (PPO 在稳定核心中)
算法分类¶
以下按类别列出实验性 API 中提供的典型算法。
列表说明
此处仅列出各类别中的代表性算法。完整列表请在运行时检查 EXPERIMENTAL_ALGORITHMS 常量。
在策略算法(On-Policy)¶
基于当前策略采样数据进行训练的算法。
| 算法 | 说明 |
|---|---|
PPO* | 近端策略优化 |
A2C* | 优势演员-评论家 |
TRPO* | 信赖域策略优化 |
RPO | 鲁棒策略优化 |
GRPO | 分组相对策略优化 |
带 * 标记的算法同时属于稳定核心 API。
离策略算法(Off-Policy)¶
使用经验回放缓冲区、可利用历史数据进行训练的算法。
| 算法 | 说明 |
|---|---|
SAC* | 柔性演员-评论家 |
TD3* | 双延迟 DDPG |
DDPG | 深度确定性策略梯度 |
TQC | 截断分位数评论家 |
REDQ | 随机集成双 Q 学习 |
CrossQ | 交叉 Q 学习 |
DroQ | 带 Dropout 的 Q 学习 |
基于值的算法(Value-Based)¶
以值函数估计为核心的算法。
| 算法 | 说明 |
|---|---|
DQN* | 深度 Q 网络 |
DiscreteSAC* | 离散 SAC |
C51 | 分布式 DQN |
QR-DQN | 分位数回归 DQN |
Rainbow | Rainbow DQN |
IQN | 隐式分位数网络 |
离线 RL 算法(Offline)¶
从固定数据集中学习,不与环境交互。
| 算法 | 说明 |
|---|---|
BC* | 行为克隆 |
CQL* | 保守 Q 学习 |
IQL* | 隐式 Q 学习 |
TD3+BC | TD3 + 行为克隆正则化 |
AWAC | 优势加权演员-评论家 |
ABM | 基于优势的建模 |
基于模型的算法(Model-Based)¶
学习环境动力学模型以辅助决策。
| 算法 | 说明 |
|---|---|
MBPO | 基于模型的策略优化 |
Dreamer | 世界模型 + 想象空间学习 |
PETS | 概率集成轨迹采样 |
SVG | 随机值梯度 |
rl_training.contrib - 社区扩展¶
rl_training.contrib 模块包含社区贡献的算法和工具,独立于核心和实验性 API 进行维护。
可用扩展¶
| 名称 | 说明 |
|---|---|
RecurrentPPO | 循环 PPO,使用 LSTM/GRU 处理部分可观测环境 |
RecurrentPPOAlgorithm | RecurrentPPO 的底层算法实现 |
使用 RecurrentPPO 的配置示例
algo: RecurrentPPO
env_id: CartPole-v1
seed: 42
total_timesteps: 100000
output_dir: runs/recurrent-ppo
algo_kwargs:
learning_rate: 0.0003
n_steps: 128
n_epochs: 10
扩展贡献
contrib 模块欢迎社区贡献。如需添加新算法,请参考贡献指南。
根包弃用导入¶
弃用警告
从 rl_training 根包直接导入非稳定核心算法的方式已被弃用,将在未来主要版本中移除。
弃用行为¶
# 稳定名称 - 正常工作,无警告
from rl_training import PPO # OK
from rl_training import TrainConfig # OK
# 实验性名称 - 触发 DeprecationWarning
from rl_training import TQC # DeprecationWarning!
触发的警告信息如下:
DeprecationWarning: rl_training.TQC is no longer part of the stable root API
and is deprecated; import advanced algorithms from rl_training.experimental
or rl_training.api instead.
迁移指南¶
从根包导入迁移¶
将非稳定核心算法的导入从根包迁移到 rl_training.experimental:
# 旧写法(弃用)
from rl_training import TQC, REDQ, CrossQ
# 新写法(推荐)
from rl_training.experimental import TQC, REDQ, CrossQ
稳定核心算法无需迁移¶
稳定核心算法可以从根包或 rl_training.core 导入,两种方式均受支持:
批量检查与迁移¶
from rl_training.core import STABLE_ALGORITHMS
from rl_training.experimental import EXPERIMENTAL_ALGORITHMS
# 检查算法类别
algo_name = "TQC"
if algo_name in STABLE_ALGORITHMS:
print(f"从 rl_training.core 导入 {algo_name}")
elif algo_name in EXPERIMENTAL_ALGORITHMS:
print(f"从 rl_training.experimental 导入 {algo_name}")
消除警告
如需消除弃用警告,只需将非稳定核心算法的导入路径改为 rl_training.experimental 即可。