schola.scripts.sb3.settings.SACSettings
类定义
class schola.scripts.sb3.settings.SACSettings(learning_rate=0.0003, buffer_size=1000000, learning_starts=100, batch_size=256, tau=0.005, gamma=0.99, train_freq=1, gradient_steps=1, action_noise=None, replay_buffer_class=None, replay_buffer_kwargs=None, optimize_memory_usage=False, ent_coef='auto', target_update_interval=1, target_entropy='auto', use_sde=False, sde_sample_freq=-1)基类: object
Dataclass,用于配置 Soft Actor-Critic (SAC) 算法的设置。它包含学习过程的参数,例如学习率、缓冲区大小、批次大小以及控制 SAC 算法行为的其他超参数。
参数
learning_rate
类型: float
buffer_size
Type: int
learning_starts
Type: int
batch_size
Type: int
tau
类型: float
gamma
类型: float
train_freq
Type: int
gradient_steps
Type: int
action_noise
Type: Any | None
replay_buffer_class
Type: Any | None
replay_buffer_kwargs
Type: dict | None
optimize_memory_usage
类型: bool
ent_coef
Type: Any
target_update_interval
Type: int
target_entropy
Type: Any
use_sde
类型: bool
sde_sample_freq
Type: int
属性
action_noise
Type: Any
默认值: None
用于探索的动作噪声。它可以是可调用函数或噪声过程(例如 Ornstein-Uhlenbeck),该过程会向策略所采取的动作添加噪声以鼓励探索。这在连续动作空间中很重要,可以帮助代理探索不同的动作并避免陷入局部最优。如果设置为 None,则不会向动作添加任何噪声。
batch_size
Type: int
Default: 256
每次更新的最小批次大小。这是从回放缓冲区中提取的样本数量,用于对策略执行一次更新。较大的批次大小可以实现更稳定的更新,但需要更多内存。必须小于或等于 buffer_size。
buffer_size
Type: int
Default: 1000000
回放缓冲区的尺寸。这是可以存储在缓冲区中的转换(状态、动作、奖励、下一个状态)的数量。较大的缓冲区允许使用更多样化的样本进行训练,这可以提高性能,但也会增加内存使用量。
constructor
Type: Type[SAC]
critic_type
类型: str
ent_coef
Type: Any
Default: 'auto'
损失函数中熵项的系数。它通过对策略动作分布的确定性进行惩罚来鼓励探索。较高的值会鼓励更多探索,而较低的值会使策略更具确定性。当设置为 'auto' 时,它将根据策略所采取动作的平均熵自动调整系数。这有助于在训练期间平衡探索和利用。
gamma
类型: float
Default: 0.99
未来奖励的折扣因子。它决定了代理对未来奖励的重视程度与对即时奖励的重视程度。0.99 的值表示未来奖励每个时间步都会打折扣 1%。这对于平衡强化学习中短期奖励和长期奖励之间的权衡很重要。
gradient_steps
Type: int
Default: 1
每次训练更新要执行的梯度步数。这指定了从回放缓冲区中采样的最小批次更新模型参数的次数。值为 1 表示模型在每个训练步骤更新一次,而较高的值(例如 2)表示模型会更新多次。这有助于提高收敛性,但如果设置得太高也可能导致过拟合。
learning_rate
类型: float
Default: 0.0003
优化器的学习率。它控制在每次模型权重更新时,根据估计误差调整模型参数的幅度。较低的值意味着较慢的学习,而较高的值意味着较快的学习。
learning_starts
Type: int
Default: 100
学习开始之前的步数。这是在策略首次更新之前收集到回放缓冲区中的步数。这允许代理收集初始经验,并确保有足够的样本可供学习,从而有助于稳定训练。
name
类型: str
optimize_memory_usage
类型: bool
Default: False
是否优化回放缓冲区的内存使用。当设置为 True 时,它将使用一种更节省内存的回放缓冲区实现,这有助于减少训练期间的内存消耗。在处理大型环境或硬件资源有限的情况下特别有用。请注意,这可能会轻微影响训练过程的性能,因为它可能会在访问样本时引入一些开销。
replay_buffer_class
Type: Any
默认值: None
用于回放缓冲区的类。这允许对用于训练的回放缓冲区进行自定义。默认情况下,它将使用 Stable Baselines3 提供的标准 ReplayBuffer 类。但是,您可以指定一个继承自 ReplayBuffer 的自定义类,以实现存储和采样转换的自定义功能或行为。
replay_buffer_kwargs
Type: dict
默认值: None
传递给回放缓冲区构造函数的其他关键字参数。这允许在实例化回放缓冲区时对其行为和设置进行进一步自定义。例如,您可以指定 buffer_size、seed 等参数,或您的自定义回放缓冲区类支持的任何其他参数。这有助于根据您的特定需求或环境要求定制回放缓冲区。
sde_sample_freq
Type: int
Default: -1
采样 SDE 噪声的频率。这决定了在使用状态相关探索 (SDE) 时噪声的采样频率。值为 -1 表示在每一步都采样噪声,而正整数则指定采样之间的步数。这有助于控制代理的探索行为。较高的频率可能导致更广泛的探索,而较低的频率可能导致更稳定但探索性较差的行为。
target_entropy
Type: Any
Default: 'auto'
熵正则化的目标熵。这用于通过设置策略所采取动作的平均熵的目标来鼓励探索。当设置为 'auto' 时,它将根据动作空间的维度(例如,动作空间的维度)自动计算目标熵。这有助于通过鼓励代理探索更多样化的动作来平衡训练期间的探索和利用。
target_update_interval
Type: int
Default: 1
目标网络更新的间隔。这决定了目标网络使用主网络权重更新的频率。值为 1 表示目标网络在每个训练步骤更新一次,而较高的值(例如 2)表示它们每隔一个步骤更新一次。这有助于通过确保目标网络与最新的策略参数保持同步来控制训练的稳定性。
tau
类型: float
Default: 0.005
目标网络的软更新参数。这控制在训练期间目标网络向主网络更新的幅度。较小的值(例如 0.005)表示目标网络更新缓慢,这有助于稳定训练。这通常是一个介于 0 和 1 之间的小值。
train_freq
Type: int
Default: 1
策略的训练频率。这决定了模型在训练期间更新的频率。值为 1 表示模型在每个时间步更新一次,而较高的值(例如 2)表示模型每隔一个时间步更新一次。这有助于控制训练期间的探索和利用之间的权衡。
use_sde
类型: bool
Default: False
是否使用状态相关探索 (SDE)。这可以通过根据环境的当前状态调整探索噪声来改善探索。当设置为 True 时,它将使用 SDE 进行探索,而不是标准的探索策略。这可能导致在复杂环境中进行更有效的探索,但也可能引入额外的计算开销。
方法
__init__
__init__(learning_rate=0.0003, buffer_size=1000000, learning_starts=100, batch_size=256, tau=0.005, gamma=0.99, train_freq=1, gradient_steps=1, action_noise=None, replay_buffer_class=None, replay_buffer_kwargs=None, optimize_memory_usage=False, ent_coef='auto', target_update_interval=1, target_entropy='auto', use_sde=False, sde_sample_freq=-1)返回类型: None