通过因果推理辅助构建决策流图

当我们不知道如何使用现有数据构建决策流时,可以借助REVIVE SDK提供的因果推理工具自动构建决策流 *.yaml 文件。 该工具是基于 因果推断 实现的。 借助因果推断方法,我们也可以简单地检查离线数据中哪些维度对学习环境或策略模型有用,以及这些维度的状态与行为之间的联系。 该工具是纯数据驱动的。在该工具的帮助下,用户可以很容易地获得生成的决策流图, 这可能有助于REVIVE更准确地学习虚拟环境并推断出更有效的策略。

该工具可以基于提供的 .yaml.npz 文件自动生成决策流图。

Note

用户不必在 .yaml 文件中定义 graph 部分,REVIVE SDK会通过因果推断算法自动生成 graph

在某些情况下,生成的决策流图可能与用户的潜在想法有所不同。因此,用户可以在使用REVIVE训练环境模型和策略之前,检查生成的决策流图的合理性。

下面,我们使用一个任务示例来展示如何 使用REVIVE SDK 控制着陆器悬停

在该任务中,我们只需要构建 .yaml 中的 columns 部分,如下:

metadata:

   columns:
   - obs_0:
       dim: obs
       type: continuous
   - obs_1:
       dim: obs
       type: continuous
   - obs_2:
       dim: obs
       type: continuous
   - obs_3:
       dim: obs
       type: continuous
   - action:
       dim: action
       type: category
       values: [0,1,2,3]

.yaml 文件中,我们不需要定义 graph 部分。 之后,我们将此 .yaml 文件与相应的 .npz 文件一起提供给因果推断工具。 该工具将使用用户定义的名称来输出重构的 .yaml.npz 文件。

重构的 .yaml 示例如下:

metadata:

   columns:
   - obs_0:
       dim: action_realated_obs
       type: continuous
   - obs_1:
       dim: action_realated_obs
       type: continuous
   - obs_2:
       dim: translation_related_obs
       type: continuous
   - obs_3:
       dim: translation_related_obs
       type: continuous
   - action:
       dim: action
       type: category
       values:
       - 0
       - 1
       - 2
       - 3

   graph:
     action:
     - action_realated_obs
     next_action_realated_obs:
     - action_realated_obs
     - translation_related_obs
     - action
     next_translation_related_obs:
     - action_realated_obs
     - translation_related_obs
     - action

在生成的 .yaml 文件中,因果推断工具只构建 graph 部分。 columns 部分是不变的。

生成的 .yaml 文件显示,因果推断工具将 obs 数据的四个维度分为两个节点。前两个维度具有新的节点名称 action_realated_obs , 该节点与 action 直接关联。 obs 的另两个维度现在被命名 为 translation_related_obs 。拆分的两个 obs 节点被视为两个过渡节点,如 graph 所示。

新构建的 graph 显示了 obs 节点和 action 节点的因果关系。值得注意的是, 我们提供的数据是由基于坐标信息的规则模型生成的。换言之,数据中的 action 仅由坐标信息决定。可以看到的是, 因果推断工具可以正确的解析数据节点的因果关系,将原始 obs 节点中的坐标信息与 action 节点进行关联, 避免了其它不相关的信息的干扰。

对于构建决策流图比较困难的任务,REVIVE SDK的因果推理工具可能是一个不错的选择,用户也可以对生成的决策流图进行调整。

因果推断工具还可以推断数据中那些没用的维度。在上述任务中,比如 obs 节点数据中具有两维不相关的随机特征。 因果推断工具可以发现 obs 自动将附加的特征 obs_3obs_4 被标记为 useless_obs 节点, 这意味着这两个维度被从 obs 中删除。这个结果也符合我们的认知。

metadata:

  columns:
  - obs_0:
      dim: obs
      type: continuous
  - obs_1:
      dim: obs
      type: continuous
  - obs_2:
      dim: obs
      type: continuous
  - obs_3:
      dim: useless_obs
      type: continuous
  - obs_4:
      dim: useless_obs
      type: continuous
  - action:
      dim: action
      type: continuous

  graph:
    action:
    - obs
    next_obs:
    - obs
    - action