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
float dt
float time_window
float bp_gap
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 xwhere each backprop goes back 4 time steps, resulting in an overlap of 2 time steps for each backprop.
bool real_time
bp_gap
). Not
checking this flag will cause the time_window
to be automatically
set to the length of the current sequence.