DistributionalDQNLoss¶
- class torchrl.objectives.DistributionalDQNLoss(*args, **kwargs)[source]¶
一个分布式DQN损失类。
分布式DQN使用一个价值网络,该网络在折扣回报的离散支撑集上输出价值分布(与常规DQN不同,常规DQN的价值网络输出的是折扣回报的单个点预测)。
有关分布式DQN的更多详细信息,请参阅“强化学习的分布视角”(A Distributional Perspective on Reinforcement Learning),链接为https://arxiv.org/pdf/1707.06887.pdf
- 参数:
value_network (DistributionalQValueActor 或 nn.Module) – 分布式Q价值算子。
gamma (标量) –
回报计算的折扣因子。..注意
Unlike :class:`DQNLoss`, this class does not currently support custom value functions. The next value estimation is always bootstrapped.
delay_value (布尔值) – 是否将价值网络复制到一个新的目标价值网络以创建双重DQN(double DQN)
priority_key (字符串, 可选) – [已弃用,请改用 .set_keys(priority_key=priority_key)] 在添加到此 ReplayBuffer 的 TensorDict 中,假定优先级存储在该键下。这应在采样器类型为
PrioritizedSampler
时使用。默认为"td_error"
。reduction (字符串, 可选) – 指定应用于输出的归约方式:
"none"
|"mean"
|"sum"
。"none"
: 不应用归约,"mean"
: 输出的总和将除以输出元素的数量,"sum"
: 输出将被求和。默认值:"mean"
。
- default_keys¶
_AcceptedKeys
的别名
- forward(input_tensordict: TensorDictBase) TensorDict [source]¶
它旨在读取输入的 TensorDict 并返回另一个以“loss*”命名的损失键的 tensordict。
将损失分解到其组成部分后,训练器就可以在训练过程中记录各种损失值。输出 tensordict 中存在的其他标量也会被记录。
- 参数:
tensordict – 包含计算损失所需值的输入 tensordict。
- 返回:
一个没有批量维度的新 tensordict,其中包含各种损失标量,这些标量将命名为“loss*”。损失必须以此名称返回,因为它们将在反向传播前由训练器读取,这一点至关重要。
- make_value_estimator(value_type: Optional[ValueEstimators] = None, **hyperparams)[source]¶
价值函数构造器。
如果需要非默认的价值函数,则必须使用此方法构建。
- 参数:
value_type (ValueEstimators) – 一个
ValueEstimators
枚举类型,指示要使用的价值函数。如果未提供,则将使用存储在default_value_estimator
属性中的默认值。生成的价值估计器类将注册到self.value_type
中,以供将来细化。**hyperparams – 用于价值函数的超参数。如果未提供,将使用
default_value_kwargs()
指示的值。
示例
>>> from torchrl.objectives import DQNLoss >>> # initialize the DQN loss >>> actor = torch.nn.Linear(3, 4) >>> dqn_loss = DQNLoss(actor, action_space="one-hot") >>> # updating the parameters of the default value estimator >>> dqn_loss.make_value_estimator(gamma=0.9) >>> dqn_loss.make_value_estimator( ... ValueEstimators.TD1, ... gamma=0.9) >>> # if we want to change the gamma value >>> dqn_loss.make_value_estimator(dqn_loss.value_type, gamma=0.9)