Skip to content
This repository was archived by the owner on May 11, 2023. It is now read-only.
Oldřich Koželský edited this page May 24, 2018 · 91 revisions

Reservoir Computing for .NET (RCNet)

The aim of the project is to make the reservoir computing methods easy to use and available for .net platform without dependency on external heterogeneous libraries. Two main reservoir computing methods are called Echo State Network (ESN) and Liquid State Machine (LSM). The implemented solution supports both of these methods. However, since both ESN and LSM are based on very similar principles, it is also possible to combine them. It is possible to connect analog and spiking neurons within one reservoir. It is also possible to define separate analog and spiking reservoirs and then use them at the same time. This approach, as I believe, opens up new interesting possibilities. This general implementation is called "State Machine" in the context of RCNet.

State Machine conceptual view

I have no ambition to describe here the principles of the reservoir computing paradigm theoretically, there are many available documents on the Internet that explain the issue in detail. Primary aim of these pages is to describe the use of the RCNet library. Still, I will allow a very brief conceptual introduction to the reservoir computing concept to facilitate understanding of the purpose and implementation of the RCNet library.

Reservoir computing makes it possible to use the recurrent network very efficiently to process time dependent data such as

  • Forecasting the development of time series
  • Classification (pattern recognition, etc.)

Efficiency lies in the fact that synapses and weights in the recurrent network (called reservoir) are randomly chosen at the beginning and remain fixed at all times, so it is not necessary to modify them during the learning process (in contrast with traditional training methods for RNNs). Only the Readout layer is trained, most often very simply, by the linear regression.

State Machine conceptual view

Figure explanation:

  • The data flow direction is from left to right
  • The input data is inserted into the reservoir via special input neurons (yellow balls). The task of input neuron is to prepare incoming data (always considered as analog) into the desired form: analog or spike train. "Analog form" means just the same value as the incoming value (no magic). "Spike train form" means input value converted into the series of time-varying pulses (spikes) representing input value. Spike train will be explained later
  • Recurrently connected hidden neurons (blue balls) do the nonlinear transformation and provides reservoir dynamics. Input signal of each hidden neuron consists of mixed (summed) output signals from connected hidden neurons and input neurons
  • At each time point, the historical and current input data are described by the current state of the hidden neurons. The states of hidden neurons are so-called predictors
  • Predictors are sent to be processed by the readout layer

Training steps:

  1. Collect all known input and desired output data pairs
  2. Normalize and standardize the data
  3. Transform the input data through a reservoir with recurrently connected neurons into a set of predictors
  4. Train readout layer to be able to map the predictors to the desired outputs as best as possible

Usage steps:

  1. Get next known input data
  2. Normalize and standardize the data by the same way as during the training
  3. Transform the input data into predictors
  4. Let readout layer to compute output data (prediction)

Clone this wiki locally