ICO learning is a learning algorithm which is inspired by spike timing dependent plasticity. It does "reflex avoidance": It replaces a slow feedback loop by a faster proactive action.
- A C++ compiler
- cmake
- gnuplot (for plotting the demo data)
This installs libicolearning
and the header files
in the default install directories:
cmake .
make
sudo make install
cmake -G "Visual Studio 17 2022"
Then open icolearning.sln
and click on "Build".
To get a feeling what ICO learning does there is a demo application (commandline / terminal). There are 3 different demo options.
./demo 0
gnuplot onef_weights.plt
Above shown are the weights of ICO learning. Until step 100000 there's a typical timing situation: First the predictive neuron is triggered and then the reflex neuron receives an input signal. The weights grow. Then it is assumed that the output of the neuron has successfully eliminated the reflex and therefore the reflex input stays zero (=error at zero). You see that the weights stabilise.
The derivative of the reflex (or error input) correlated with the predictive input produces an Spike Timing Dependent (STDP) like weight change when the timing between predictive input and reflex is systematically changed.
./demo 1
gnuplot stdp.plt
The filterbank generates different timings so that the predictive pathway can choose the filter response which is best suited to eliminate the reflex.
./demo 10
gnuplot ten_filters_weights.plt
Have fun!