多判别器功能

有时在一个决策流中,我们希望不同节点可以根据不同判别器给出的分数单独做优化。这时我们需要用到多判别器功能。

例如,在 使用 REVIVE SDK 控制 Mujoco-HalfCheetah 运动 任务中, 我们希望 action, delta_x 以及 next_obs 节点分别由不同判别器打分,并且各个节点独立优化各自目标。 下面通过这个示例展示如何在训练时启动该功能。

启动该功能我们需要在 config.json 中做如下配置:

{
   ...
   "venv_algo_config": {
       "revive_p": [
           {
               "name": "matching_nodes",
               "type": "list",
               "default": [["obs", "action"], ["obs", "action", "delta_x"], ["obs", "action", "next_obs"]]
           },
           {
               "name": "matching_fit_nodes",
               "type": "list",
               "default": [["action"], ["delta_x"], ["next_obs"]]
           },
           ...
       ],
       ...
   },
   ...
}

“matching_nodes” 代表各个判别器的输入;”matching_fit_nodes” 代表判别器需要打分的节点,同时也是该判别器对应的生成器需要更新的节点。

需要注意,”matching_nodes” 与 “matching_fit_nodes” 的长度需要保持一致,并且顺序上保持对应,比如: [“obs”, “action”] 作为 action 节点的判别器的输入,这个判别器只负责 action 节点的优化目标。 [“obs”, “action”, “delta_x”] 作为 delta_x 节点的判别器的输入,这个判别器只负责 delta_x 节点的优化目标。 [“obs”, “action”, “next_obs”] 作为 next_obs 节点的判别器的输入,这个判别器只负责 next_obs 节点的优化目标。

Note

默认情况下,决策流图只有一个判别器。