14.2.5 RBp Sequence Processes and TimeEvents

The RBpSequence process is a special SequenceProcess that knows how to appropriately treat sequences of events that have time values associated with them. The classes TimeEnvironment, TimeEvent_MGroup, and TimeEvent together define an environment which consists of sequences (groups) of events where each event is specified to occur at a particular time. Furthermore, the environment defines certain simple forms of interpolation, which allows trajectories to be formed by specifying crucial points on the trajectory, but not everything in between. Also, the RBpSequence process uses the end_time of the TimeEvent_MGroup to set the time_window of the trial process, so that exactly one backprop phase will happen per sequence.

If a TimeEnvironment is not being used, a RBpSequence will simply run the sequence of events in each event group, one by one, through the trial process. This would make each event in the sequence appear at tick-wise intervals (i.e., every dt). In contrast, the TimeEnvironment based events have the benefit of making the environment invariant with respect to changes in dt, which can be very useful when dt is changed during training, etc.

A TimeEnvironment, aside from setting the default types of events and event groups to also be time-based ones, has a default interpolation parameter:

Interpolate interpolate
The following forms of interpolation are defined:
PUNCTATE
Each event appears for the single slice of time that it has specified.
CONSTANT
Events persist with the same activations from the time on the event until the next event comes along.
LINEAR
Performs linear interpolation from one event to the next.

As with all sequence-based environments (see section 11.3 Representing Sequences of Events), a sequence of events is defined by putting all the events in a subgroup. TimeEvents should be put in subgroups of type TimeEvent_MGroup, which is where the specific form of interpolation to be used for this particular sequence, and the total duration of the sequence, are specified:

Interpolate interpolate
This is just like the interpolation variable on the environment, except it includes the USE_ENVIRO option, which uses whatever is set on the environment object. Thus, one can have different sequences use different kinds of interpolation, or they can defer to the environment.
float end_time
The total duration of the sequence. It is automatically set to be as long as the latest event in the group, but you can set it to be longer to cause a CONSTANT interpolation to hold onto the event until end_time has been reached.

The time event object is just like a regular event except that it adds a time field, which specifies when this event is to first be presented to the network. How long it is presented depends on the interpolation scheme and how soon another event follows it.