-
Notifications
You must be signed in to change notification settings - Fork 5
Home
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 ESN and LSM are based on very similar principles, RCNet brings the option to combine 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.
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 introduction to the reservoir computing concept to facilitate understanding of RCNet library purpose.
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 the synapses and their weights in the recurrent network (called reservoir) are randomly chosen at the beginning and remain fixed (in contrast with traditional training methods for RNNs). Only the Readout layer is trained, most often very simply, by the linear regression.

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 summed weighted output signals (states) from connected hidden neurons and input neurons. This can be a little confusing. Everyone probably thinks of the order in which the hidden neurons count their new state? The answer is simple. It does not matter. Each neuron provides its finished state, i.e., the state before the current reservoir recomputation. This allows to use parallel processing.
- At each time point, the historical and current input data are described by the current state of the reservoir neurons. The states of reservoir neurons are so-called predictors
- Predictors are sent to be processed by the readout layer
Hints:
- The reservoir is simply the data preprocessor
- The reservoir typically contains hundreds (and sometimes thousands) of recurrently connected neurons
- The influence of historical data on the current states of hidden neurons is weakening in time. Memory capacity of the reservoir depends on the number of hidden neurons, their interconnection density, their type and the processing parameters of the neurons
- The rich reservoir dynamics allows to readout different outputs (predicted values) from the same predictors at the same time
- Different uses require different reservoir handling. There is a big difference between the continuous predictions of time series and classifications. For the time series, it is necessary to ensure that the states of the neurons are not affected by the initial state of the reservoir. This is solved by the fact that the first N samples are not sent to the readout layer. It is also necessary to keep the current neuron states in the reservoir for the next prediction when new input data (T + 1 time) is available. In the case of a classifier, it is different. Here is a complete input pattern that represents time-dependent data and a decision is expected. In this case, it is not necessary to keep the status of the reservoir from the previous decision. The reservoir starts for each pattern from the beginning. The entire pattern is processed by the reservoir and only the final state of the neurons is sent for processing.
Training a State Machine:
- Collect all known input and desired output data
- Normalize and standardize the data
- Transform the input data through a reservoir into a set of predictors
- Train readout layer to be able to map the predictors to the desired outputs as best as possible
The use of a trained State Machine:
- Get next known input data
- Normalize and standardize the data by the same way as during the training
- Transform the input data through a reservoir into the predictors
- Push predictors into the readout layer and let it to compute outputs (predictions)
Questions, ideas, suggestions for improvement and constructive comments are welcome at my email address oldrich.kozelsky@email.cz or newly you can use github discussions.