引入空节点

空节点是一种在决策流图中用来标注具有明确意义,但在历史数据中缺失的节点。它允许我们在虚拟环境中训练和优化策略模型时, 灵活地引入新的变量或特征,以提高模型的性能和精度。通过在决策流图中引入空节点,我们可以表述那些以前没有被考虑过的因素, 从而使模型更加准确和全面。

.yaml 文件中使用空节点时,我们需要在决策流图中引入这个节点,并定义它的数据类型和维度。 此外,我们还需要对这个新增节点进行数据类型描述,在 columns 中进行相应的声明。在训练过程中,空节点可以被初始化为一个可学习的节点, 用于优化我们的训练策略。通过使用空节点的功能,我们可以更好地应对训练数据不完备或者不一致的情况,在训练中引入更多专家知识,提高模型和决策的品质。

通常情况下,空节点是作为一个神经网络节点的输出,并输入到另一个或多个神经网络节点中。 需要注意的是,虽然 .yaml 文件中,描述了空节点的信息,但是在数据文件中并不需要有空节点的数据。 也就是说,存在于决策流图中但不存在于数据中的节点就会默认被解析为空节点。

在自动驾驶任务中,一个常见的场景是使用速度和加速度来控制车辆的运动。在这个任务中,速度节点是一个具有明确意义的节点, 但加速度节点可能在历史数据中缺失。因此,我们可以使用加速度作为空节点来扩充这个任务中的特征。 假设我们想要在控制车辆行驶方向时考虑加速度对车辆方向控制的影响,但历史数据中没有包含加速度的数据。 在这种情况下,我们可以在决策流图中引入一个空节点来表示加速度,以实现更精准的车辆状态预测。

下面展示了如何在 .yaml 文件中实现加速度的空结点:

metadata:

   graph:
     velocity:
     - observation
     acceleration:
     - velocity
     - observation
     next_observation:
     - velocity
     - acceleration
     - observation

   columns:
   ...
     - velocity_0:
         type : continuous
         dim : velocity
         min : 0
         max : 1000
     - acceleration_0:
         type : continuous
         dim : acceleration
         min : 0
         max : 10000

上述 .yaml 文件中,我们定义了一个空节点加速度(acceleration),它的数据类型是 continuous,维度是 acceleration。 同时,我们在决策流图中将加速度节点连接到速度节点和观测节点,以从速度和观测信息中推断出加速度变量。 在列中,我们定义了两个变量 velocity_0acceleration_0,它们分别表示速度和加速度的初始值,并指定了它们的数据类型、维度、最小值和最大值。