Hi Fred,
Backprop is not one of Simbrain's best features, currently. The user interface is a bit counter-intuitive (as you've discovered), and it has not received as much attention as other aspects of the program. Part of the reason for this is that backprop is well supported in other open source packages (e.g. emergent, joone). It is one of the many things being improved for version 3.
Having said that, it does work, the testing mechanism you describe does exist, and XOR can certainly be trained in less than a million iterations! The docs on this are
here, but they are not as clear as they could be.
Here's what you have to do.
First, create a new backprop network (Insert > New Network > Backprop) with 2 input nodes, 1 output node, and as many hidden units as you want. It sounds like you were able to do this.
Second, right click on the "backprop" tab, and select "Train." All the action will take place inside this dialog.
Third, inside the dialog, click the randomize button.
Fourth, click the input file and output file buttons, and attach data files to them. For input, use Simbrain > simulations > networks > bp > training > xor_in.csv, and similarly use xor_out.csv for output. I think you made it this far.
Fifth, click the play button. If everything is set up right, you will see a representation of the current error, and you can just run it until it reaches a level you are happy with. There is also a "batch" tab where you can run for a set number of iterations. Since this bypasses the Gui it's faster. (One problem here is that if you set up the input and output files wrong, you don't get any error message.)
When you're done, press Ok. You can then test the network by selecting the input nodes and pressing the up and down arrow keys on your keyboard to set various input patterns, and iterating the network.
If I should clarify any of this let me know!
Let me end by asking you (and others) a question. One thing I've thought a lot about, but have never decided on, is what the most intuitive way would be to implement backprop in a Gui. I want to do it in a way that is consistent with Simbrain's emphasis on visual intuition and ease of use, but as a user interface problem backprop is a bit challening. The problem is there are all these steps that require different types of configuration. Setting up the network, setting up training and testing data, training the network, cross-validating, pre-processing data, etc. I have a rough idea of how I want to do these things in the next version of Simbrain, but I'd be curious what others think.
Best,
- Jeff