AXTut Programs
From Emergent
(back to AX Tutorial)
Programs for Controlling the Simulation
Again return to the .PanelTab.LeabraWizard_0 wizard panel, and now select
Programs/Std Progs from the bottom menu. (return to these docs by clicking back on docs/Programs in the browser).
This created a set of standard programs that organize the presentation of input patterns to the network into a hierarchy of time scales:
- LeabraBatch -- iterates over multiple simulated "subjects" -- each having their own different random initial weights (we won't use this initially).
- LeabraTrain -- a complete training of the network from random initial weights to final correct performance, by iterating over multiple "epochs"
- LeabraEpoch -- one full pass through all of the different task input patterns
- LeabraTrial -- processes one input pattern, using two phases of settling -- the minus phase presents the input stimulus, and allows the network to come up with its own best guess as to the correct response, and the plus phase presents the correct answer to allow the network to learn to perform the task correctly.
- LeabraSettle -- multiple updates of neural unit activations to process a given input/output pattern.
- LeabraCycle -- a single cycle of updating of neural unit activation states (roughly 5-10msec of simulated real time)
There are also some other supporting programs that we'll discuss later.
You might notice that the ApplyInputs program is opened up to show the LayerWriter_0 object -- this was auto-configured to apply the input data values to the appropriate (same name) layers in the network. If you change the layer names or add additional layers, etc, you may need to go back to this object and hit the AutoConfig button to reconfigure it. We'll do this later in the tutorial.
Running the Simulation
First, make sure you're viewing the .T3Tab.Network_0 network view tab, and then click on the .programs.gp.LeabraAll_Std.LeabraTrain program. Press the Init button at the bottom of the window, followed by the Run button (these links will actually do this for you!).
You should then see the network processing each of the input patterns for the task multiple times, as it iterates over epochs of trials of settles of cycles of processing. Depending on your hardware, this may wiz by in quite a blur.
Once it finishes, you can see more clearly what it is doing by hitting the Step button,
which will perform one phase of settling at a time. You should observe that the network gets the correct output unit active in the minus phase (look for MINUS_PHASE or PLUS_PHASE in the text region at the bottom of the network 3d view display. It has successfully learned the task!
We'll learn a lot more about how programs work when we write one from scratch to generate our input data for training the network. If you're adventurous, you can click on them and hit the EditProgram button to see the underlying "guts" that make the programs do what they do. Everything that happens in running the simulation is explicitly listed out, and can be modified in any way that you might want -- this is very powerful and probably a bit dangerous too.. :) Don't do anything to modify the programs at this point.
The next step is more clearly monitor the performance of the network as it learns, by recording AXTut OutputData from the network.
