14.2.4 The RBp Trial Process

In order to accommodate both the real-time and discrete sequence-based processing modes of RBp, the lowest level of processing in RBp is still the Trial, just as in regular Bp. Thus, each cycle of activation update is performed by the trial. In addition, the trial process looks at the number of stored activation states that have been accumulated in the network's units, and if this is equal to the time-window over which backprop is supposed to occur, the trial process will then perform a backpropagation through all of these stored activation states. Thus, the scheduling of backpropagations is fairly autonomous, which makes real-time mode work well. When not operating in real-time mode, the time-window for error backpropagation is automatically set to be the total duration of the current sequence. This makes it easy to use variable length sequences, etc.

The distinction between whether the network is trained in real-time or sequence-based mode is based on the kinds of processes that are created above the level of the RBpTrial process, and on the setting of the real_time flag on the RBpTrial process itself. If using the sequence-based mode, where backpropagations are performed at the end of discrete sequences of events, then the user should create a Sequence-based process hierarchy, which includes a SequenceEpoch, an RBpSequence process, and finally a RBpTrial process. If one is using real-time mode, only a regular EpochProcess and a RBpTrial process need to be used.

The following parameters are available on the RBpTrial. Note that all of the parameters are expressed in terms of the abstract time units, and not in terms of the specific ticks of the discrete clock on which the actual events are presented to the network, activations are updated, etc. This makes the parameters invariant with respect to changes in dt, which controls the size of a tick of discrete time.

float time
The current time, relative to the start of the most recent sequence, or since the units were last initialized if in real-time mode. It is a read-only variable.
float dt
The delta-time increment, which is copied automatically from the units in the network. It is used in updating the time in the trial process.
float time_window
Determines the time window over which error backpropagation will be performed. Thus, units will hold their activation states for this long before a backpropagation will occur.
float bp_gap
The time to wait in between successive backpropagations after an initial activation settling time of time_window in duration. This is used primarily in real-time mode, and controls the amount of overlap between successive backpropagations. For example, a time_window of 4 and a bp_gap of 2 would result in the following schedule of backpropagations:
time:   0 1 2 3 4 5 6 7 8
bp:           x   x   x
where each backprop goes back 4 time steps, resulting in an overlap of 2 time steps for each backprop.
bool real_time
Checking this flag will cause the network to shift the activation buffers after each backpropagation, so that the appropriate amount of activation state information will be available for the next backpropagation (i.e., it shifts them by the size of bp_gap). Not checking this flag will cause the time_window to be automatically set to the length of the current sequence.