schola.scripts.sb3.settings.PPOSettings
类定义
class schola.scripts.sb3.settings.PPOSettings(learning_rate=0.0003, n_steps=2048, batch_size=64, n_epochs=10, gamma=0.99, gae_lambda=0.95, clip_range=0.2, normalize_advantage=True, ent_coef=0.0, vf_coef=0.5, max_grad_norm=0.5, use_sde=False, sde_sample_freq=-1)基类: object
用于配置近端策略优化 (PPO) 算法设置的数据类。这包括学习过程的参数,例如学习率、批处理大小、步数以及控制 PPO 算法行为的其他超参数。
参数
learning_rate
类型: float
n_steps
Type: int
batch_size
Type: int
n_epochs
Type: int
gamma
类型: float
gae_lambda
类型: float
clip_range
类型: float
normalize_advantage
类型: bool
ent_coef
类型: float
vf_coef
类型: float
max_grad_norm
类型: float
use_sde
类型: bool
sde_sample_freq
Type: int
属性
batch_size
Type: int
默认: 64
每次更新的小批量大小。这是用于策略训练的每个批次中的时间步数。必须是 n_steps 的除数。
clip_range
类型: float
默认: 0.2
策略更新的裁剪范围。这是在训练过程中,新策略与旧策略之间可能的最大差异量。这有助于防止可能导致训练不稳定的过大更新。
constructor
类型: Type[PPO]
critic_type
类型: str
ent_coef
类型: float
默认: 0.0
损失函数中熵项的系数。这通过对策略动作分布的确定性增加惩罚来鼓励探索。值越高,越鼓励探索;值越低,策略越确定。设置为 0.0 可禁用熵正则化。
gae_lambda
类型: float
默认: 0.95
广义优势估计 (GAE) 的 Lambda 参数。此参数有助于平衡优势估计中的偏差和方差。值为 1.0 对应于标准的优势估计,而值越低,方差越小,但可能引入偏差。
gamma
类型: float
Default: 0.99
未来奖励的折扣因子。这决定了智能体对未来奖励相对于即时奖励的重视程度。值为 0.99 意味着未来奖励每个时间步将打九折。
learning_rate
类型: float
Default: 0.0003
优化器的学习率。
max_grad_norm
类型: float
默认: 0.5
最大梯度范数用于裁剪。当梯度范数超过此值时,会按比例缩小梯度,以防止梯度爆炸。这有助于稳定训练,尤其是在奖励或梯度方差很大的环境中。
n_epochs
Type: int
默认: 10
更新策略的周期数。这是模型在训练期间遍历收集数据的次数。更多的周期数可能导致更好的收敛,但也可能导致过拟合。
n_steps
Type: int
默认: 2048
每个环境每次更新运行的步数。这是在更新策略之前收集的时间步数。
name
类型: str
normalize_advantage
类型: bool
默认值: True
是否对优势进行归一化。归一化优势可以通过确保其均值为 0、标准差为 1 来帮助稳定训练。这可能导致更一致的策略更新。
sde_sample_freq
Type: int
Default: -1
采样 SDE 噪声的频率。这决定了在使用状态相关探索 (SDE) 时噪声的采样频率。值为 -1 表示在每一步都采样噪声,而正整数将指定采样之间的步数。这有助于控制智能体的探索行为。
use_sde
类型: bool
Default: False
是否使用状态相关探索 (SDE)。这可以通过根据环境的当前状态调整探索噪声来帮助改进探索。当设置为 True 时,它将使用 SDE 进行探索,而不是标准的探索策略。
vf_coef
类型: float
默认: 0.5
损失函数中值函数损失的系数。这决定了值函数损失相对于策略损失的权重。值越高,对准确估计值函数的重视程度越大;值越低,则优先更新策略。
方法
__init__
__init__(learning_rate=0.0003, n_steps=2048, batch_size=64, n_epochs=10, gamma=0.99, gae_lambda=0.95, clip_range=0.2, normalize_advantage=True, ent_coef=0.0, vf_coef=0.5, max_grad_norm=0.5, use_sde=False, sde_sample_freq=-1)返回类型: None