I have not quite understood Liquid state Machines but I would like to know how doable would it be to build one with nengo. Is it possible? Can the read out layer be trained with any method? Can the synapses in the reservoir be control somehow? (do manipulations on the weights)
Yes, it is definitely possible. A LSM is essentially just a recurrently connected Ensemble with some special restrictions, and in Nengo you can customize both the read out optimization method and the connectivity/synapses in the reservoir (the recurrent connection). I believe @arvoelke has implemented a couple different reservoir computing approaches in Nengo, so he might be able to provide more details.
I don’t have any good documentation / examples right now of an LSM in Nengo, but I have an example of FORCE and full-FORCE here: https://arvoelke.github.io/nengolib-docs/master/notebooks/examples/full_force_learning.html
FORCE is essentially an extension that encodes the desired target into the network (in addition to the random feedback), and then learns the extra feedback loop. Removing this extra loop makes it equivalent to an ESN, which is like an LSM but uses rate neurons and fewer constraints.
In general things go as @drasmuss said:
- Specify whatever network topology you would like as a Nengo network
- Simulate that network given your training input
- Collect all of the activities together into a matrix
- Solve for the decoding weights that readout the desired training output (using one of the
nengo.solversor your own solver)
- Re-simulate the network given your test input, and use the above weights to readout your estimate of the output