多判别器功能
在虚拟环境训练中选择revive相关的算法时,算法会自动初始化一个判别器来进行环境模型的判别优化。但是有时在一个决策流中,我们希望不同节点可以根据不同判别器给出的分数单独做优化。这时我们需要用到多判别器功能。
例如,在四足机器人控制任务任务中, 我们希望 action
, delta_x
以及 next_obs
节点分别由不同判别器打分,并且各个节点独立优化各自目标。下面通过这个示例展示如何在训练时启动该功能。
启动该功能我们需要在 config.json
中做如下配置:
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
节点的优化目标。