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