ray.rllib.utils.exploration.curiosity.Curiosity#

class ray.rllib.utils.exploration.curiosity.Curiosity(action_space: gymnasium.spaces.Space, *, framework: str, model: ModelV2, feature_dim: int = 288, feature_net_config: dict | None = None, inverse_net_hiddens: Tuple[int] = (256,), inverse_net_activation: str = 'relu', forward_net_hiddens: Tuple[int] = (256,), forward_net_activation: str = 'relu', beta: float = 0.2, eta: float = 1.0, lr: float = 0.001, sub_exploration: Dict[str, Any] | type | str | None = None, **kwargs)[源代码]#

基类:Exploration

实现:[1] 基于好奇心的自我监督预测探索 Pathak, Agrawal, Efros, 和 Darrell - UC Berkeley - ICML 2017. https://arxiv.org/pdf/1705.05363.pdf

学习基于三个网络的简化环境模型:1) 将观察嵌入到潜在空间(“特征”网络)。2) 给定两个连续嵌入的观察,预测动作(“逆向”网络)。3) 给定一个观察和动作,预测下一个嵌入的观察(“前向”网络)。

给定观察和动作(通过前向网络),智能体越无法预测实际观察到的下一个特征向量,’内在奖励’就越大,这将被添加到外在奖励中。因此,如果一个状态转换是出乎意料的,智能体就会变得’好奇’,并将进一步探索这个转换,从而在稀疏奖励环境中实现更好的探索。

方法

__init__

初始化一个 Curiosity 对象。

before_compute_actions

在调用 policy.compute_actions() 之前的准备工作钩子。

get_state

返回当前的探索状态。

on_episode_end

在剧集结束时处理必要的探索逻辑。

on_episode_start

在剧集开始时处理必要的探索逻辑。

postprocess_trajectory

计算phi值(obs、obs'和预测的obs')以及ri。

set_state

将 Exploration 对象的状态设置为给定的值。