RLlib七:github上的代码示例

名称 内容
action_masking “动作屏蔽”允许代理根据当前观察选择动作。
attention_net 将 RL 代理(默认值:PPO)与 AttentionNet 模型结合使用的示例,这对于状态很重要但不明确属于观察的一部分的环境非常有用。AttentionNet 保留先前观察的状态,并使用 Transformer 来学习成功重复先前观察的策略。如果没有注意力,强化学习代理只能“看到”最后一个观察结果,而不是 n 个时间步之前的观察结果,并且无法学习重复之前的观察结果。
autoregressive_action_dist 指定自回归作用分布的示例。在一个包含多个组件的动作空间中 (例如,Tuple (a1,a2) ),通常情况下,a1和a2将被独立采样。您可能希望a2基于a1的采样值进行采样,即a2_sampled ~ P(a2 | a1_sampled, obs)。为此,您需要一个实现自回归模式的自定义模型,以及一个利用该模型的自定义操作分布类。
cartpole_lstm 使用PPO+LSTM网络对StatelessCartPole环境进行训练
centralized_critic 定制PPO以利用集中式批评家的示例。这里的模型和政策是硬编码的,以实现集中的批评对于TwoStepGame,但您可以根据自己的用例进行调整。与简单地运行’rllib/示例/two_step_game.py–run=PPO’相比,这个集中的批评家版本更稳定地达到vf_explained_variance=1.0因为它考虑了对手的行为以及政策的。请注意,这也是使用两个独立的策略而不是权重共享用一个。另请参阅:centralized_critic_2.py更简单的方法修改环境。
centralized_critic_2 使用ObservationFunction实现集中式批评者的示例。这种方法的优点是它非常简单,您根本不需要更改算法–只需使用回调和定制模型。然而,它的原则性稍差一些,因为您必须更改代理观察空间,以包括仅在火车时间使用的数据。另请参阅:Centralized_Critic.py以了解替代方法,该方法修改策略以添加集中值函数。
checkpoint_by_custom_criteria 按自定义标准设置检查点:通过使用一些度量从3个试验中获得最佳效果。注意:选择最小剧集_This ITER*会自动挑选表现最佳的试验(在整个运行期间(Scope=\“All\”)):剧集越少,每集持续的时间越长,我们获得的奖励就越多。将范围设置为\“last\”、\“last-5-avg\”或\“last-10-avg\”将仅分别比较(使用模式=minlmax)最近1次、5次或10次迭代的平均值。将范围设置为\“avg\”将比较(使用模式‘=minlmax)整个运行的平均值。
complex_struct_space 使用可变长度重复/结构化观察空间的示例。此示例显示:1. 使用带有重复/结构观察的自定义环境 2. 使用自定义模型查看PyTorch/Tf急切模式的批处理状态列表
compute_adapted_gae_on_postprocess_trajectory 可以通过在策略配置中设置 use_adapted_gae=True 来激活 PPO 算法的自适应(时间相关)GAE。此外,“回调”需要在算法的配置中包含自定义回调类。此外,env 必须在其信息字典中返回“d_ts”形式的键值对:…,其中该值是最近代理步骤的长度(时间)。这种适应的、与时间相关的优势计算在代理的动作花费不同时间并且因此时间步长不等距的情况下可能很有用(https://docdro.id/400TvlR)
curriculum_learning 使用“TaskSettableEnv”API的课程学习设置示例和env_task_fn配置。这个例子显示:-编写自己的课程环境使用gym环境。-定义一个env_task_fn,确定是否以及哪个新任务环境应设置为(使用TaskSettableEnv API)。-使用Tune和RLlib课程-学习这个环境。您可以使用TensorBoard在~/ray_results中可视化实验结果。
custom_env 用户自定义环境训练,PPO,with/without Tune
custom_eval 使用RLlib自定义评估的示例。传递–custer-eval以运行自定义评估函数。在这里,我们定义了一个自定义评估方法,该方法运行特定的env扫描参数(SimpleCorridor走廊长度)。
custom_experiment 围绕 RLlib 算法的自定义实验示例
custom_input_api 创建自定义输入 api 的示例 当您的数据源采用自定义格式或需要使用外部数据加载机制时,自定义输入 api 非常有用。在此示例中,我们根据用户指定的输入数据训练 rl 代理。我们将创建自己的自定义输入 api,并展示如何将配置参数传递给它,而不是使用内置的 JsonReader。
custom_keras_model 使用自定义 ModelV2 Keras 风格模型的示例,DQN算法
custom_logger 此示例脚本演示了如何通过算法配置的“logger_config”属性为任何 RLlib 算法定义自定义记录器对象。默认情况下(logger_config=None),RLlib 将构造一个调优 UnifiedLogger 对象,该对象记录 JSON、CSV 和 TBX 输出。以下示例包括: 1.完全禁用日志记录。2.仅使用tune 的Json、CSV 或TBX 记录器之一。3.定义自定义记录器(通过子类化tune.logger.py::Logger)。
custom_metrics_and_callbacks 使用 RLlib 调试回调的示例。在这里,我们使用回调来跟踪平均 CartPole 极角大小作为自定义指标。然后,我们使用“keep_per_episode_custom_metrics”来保留自定义指标的每集值,并对它们进行自己的汇总。
multi_agent_cartpole 设置多代理策略映射的简单示例。通过 --num-agents 和 --num-policies 控制代理和策略的数量。这适用于数百个代理和策略,但请注意,初始化许多 TF 策略将需要一些时间。此外,由于策略数量较多,TF 评估可能会减慢。要调试 TF 执行,请设置 TF_TIMELINE_DIR 环境变量。
multi_agent_different_spaces_for_agents 示例展示了如何创建多代理环境,其中不同的代理具有不同的观察和操作空间。这些空格不一定必须由用户手动指定。相反,RLlib 将尝试从 env 提供的空间字典(agentID -> obs/act space)和策略映射 fn(将代理 ID 映射到策略 ID)中自动推断它们。
multi_agent_two_trainers 在多智能体中同时使用两种不同训练方法的示例。这里我们创建了许多 CartPole 代理,其中一些使用 DQN 进行训练,有些使用 PPO 进行训练。我们定期同步两种算法之间的权重(请注意,当仅使用单一训练方法时不需要此类同步)

动作屏蔽

强化学习中的动作屏蔽是指在某些情况下,智能体(强化学习中的决策实体)被限制只能选择特定的动作,而不能在整个动作空间中自由选择。这可以通过在训练过程中将某些动作的概率设为零或者在执行时直接禁止这些动作来实现。

动作屏蔽通常用于处理问题的一些特定约束或限制,以便训练智能体更符合实际应用的需求。例如,在某些环境中,某些动作可能是禁止的或不合理的,而强化学习算法可能需要学习避免这些动作。这种技术在实际应用中很有用,可以帮助智能体更有效地适应复杂的环境和任务。

动作屏蔽的实现方式取决于具体的强化学习算法和问题设置。在一些算法中,可以通过修改动作选择的概率分布来实现屏蔽,而在其他情况下,可能需要直接修改动作空间或使用一些特殊的技巧来实现。

你可能感兴趣的:(github)