神经网络干扰器

神经网络干扰器是作为策略训练过程中的一个新增功能。这种方法的核心思想是利用多个神经网络模型的输出来丰富策略训练所涉及的环境样本。 通过在转移环境中引入这些神经网络的输出,可以增加策略模型所观察到的状态空间的多样性,从而提高了策略学习的鲁棒性和泛化能力。

如下图所示,在策略进行训练之前,REVIVE会初始化 n 个神经网络模型,并将其输出与虚拟环境模型(venv)进行融合,来辅佐策略学习。

NND_workflow

这种方法的优势在于能够有效地利用预先训练的神经网络模型,而无需更新它们的权重, 从而减少了计算成本和训练时间。 同时,通过引入多个模型的输出,还可以缓解单一模型训练中的偏差或局部最优问题,促进策略模型的更全面学习和改进。

在随机摩擦系数的Hopper环境中,离线数据实在摩擦系数为2的环境中,最后将策略在摩擦系数随机从 [1.5,2.5] 选择的环境中进行验证。 如下图所示,最终开启神经网络干扰器功能后,策略性能有所提升。

applying_NND

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

{
 ...
 "policy_algo_config": {
     "ppo"/"sac": [
         ...
         {
             "name": "disturbing_transition_function",
             "description": "Disturbing the network node in policy learning",
             "type": "bool",
             "default": false
         },
         {
             "name": "disturbing_nodes",
             "description": "Disturbing the network node in policy learning",
             "type": "list",
             "default": []
         },
         {
             "name": "disturbing_net_num",
             "description": "Disturbing the network node in policy learning",
             "type": "int",
             "default": 100
         },
         {
             "name": "disturbing_weight",
             "description": "Disturbing the network node in policy learning",
             "type": "float",
             "default": 0.05
         }
         ...
     ],
     ...
 }

“disturbing_transition_function” 代表是否开启此功能; “disturbing_nodes” 代表判别器需要扰动的结点,默认 [] 代表扰动所有结点。 “disturbing_net_num” 代表随机生成的神经网络个数; “disturbing_weight” 代表扰动网络输出结果与虚拟环境(venv)的输出进行融合的程度。