跳至内容

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

© . This site is unofficial and not affiliated with AMD.