Introduction to Empty Nodes

A blank node is a type of node in the decision flow chart that has a clear meaning but is missing in the historical data. It allows us to flexibly introduce new variables or features in the virtual environment during the training and optimization of the model to improve its performance and accuracy. By introducing blank nodes in the decision flow chart, we can describe previously unconsidered factors, making the model more accurate and comprehensive.

When using a blank node in a .yaml file, we need to introduce this node in the decision flow chart and define its data type and dimension. In addition, we also need to describe the data type of this new node and make the corresponding declaration in columns. During the training process, the blank node can be initialized as a learnable node to optimize our training strategy. By using the functionality of blank nodes, we can better cope with incomplete or inconsistent training data and introduce more expert knowledge in the training to improve the quality of the model and decisions.

In most cases, blank nodes are outputs of a neural network node and are input to another or multiple neural network nodes. It should be noted that although the .yaml file describes the information of blank nodes, there is no need to have blank node data in the data file. That is, nodes that exist in the decision flow chart but not in the data will be parsed as blank nodes by default.

In autonomous driving tasks, a common scenario is to use speed and acceleration to control the vehicle’s motion. In this task, the speed node is a node with a clear meaning, but the acceleration node may be missing in historical data. Therefore, we can use acceleration as a blank node to expand the features of this task. Suppose we want to consider the impact of acceleration on the direction control of the vehicle when controlling the vehicle’s driving direction, but there is no acceleration data in historical data. In this case, we can introduce a blank node in the decision flow chart to represent acceleration and achieve more accurate prediction of the vehicle’s state.

The following is an example of how to implement an acceleration blank node in a .yaml file:

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

In the above .yaml file, we defined an empty node called “acceleration” with a data type of continuous and a dimension of acceleration. We also connected the acceleration node to the velocity node and observation node in the decision flow graph to infer the acceleration variable from velocity and observation. In the columns, we defined two variables, velocity_0 and acceleration_0, representing the initial values of velocity and acceleration, and specified their data types, dimensions, minimum and maximum values.