跳转到内容

神经网络干扰器

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

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

神经网络干扰器工作流程

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

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

神经网络干扰器应用效果

启动该功能需要在 config.json 中进行如下配置:

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 表示扰动网络输出结果与虚拟环境输出进行融合的程度。