多判别器功能¶
有时在一个决策流中,我们希望不同节点可以根据不同判别器给出的分数单独做优化。这时我们需要用到多判别器功能。
例如,在 使用 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
默认情况下,决策流图只有一个判别器。