# Reservoir computing

Con reservoir computing ci si riferisce ad un insieme di metodologie per la progettazione e l'allenamento di reti neurali ricorrenti, nel cui ambito sono ricompresi Echo State Network, Liquid State Machine e l'algoritmo Backpropagation-Decorrelation. Il termine è stato introdotto nel 2007 per sottolineare come queste metodologie condividano la stessa idea fondamentale di base, la separazione fra la parte ricorrente (dinamica) della rete, il reservoir, dalla parte non-ricorrente, il readout. Questo permette di separare l'allenamento complessivo della rete ricorrente in due fasi distinte. In particolare, una volta fissato il reservoir (ad esempio con una generazione casuale delle sue connessioni interne), la scelta più comune è quella di allenare il readout tramite una regressione lineare (in modalità batch) o tramite un approccio basato sulla discesa al gradiente, nel caso online. Questo evita il ricorso a tecniche di error backpropagation sull'intera rete ricorrente, come la backpropagation through time.

## Tipologie di Reservoir Computing
### Echo State Networks

La Echo State Network (ESN) è stata introdotta da Herbert Jaeger nel 2001, in un report del German National Research Center for Information Technology. L'obiettivo era sviluppare un algoritmo di apprendimento efficiente per reti neurali ricorrenti, per applicazioni di apprendimento automatico ed elaborazione del segnale. In questa formulazione, gli stati del reservoir vengono visti come feature (anche dette echi dell'input originario), usate come input dal successivo readout non-ricorrente. Da questo punto di vista, affinché la ESN risultante abbia buone proprietà di generalizzazione, le connessioni interne del reservoir possono anche essere generate in maniera casuale, purché siano mantenute tre proprietà principali:
* Il reservoir deve essere sufficientemente grande.
* Il reservoir deve essere stabile, ovvero l'effetto di un input sulla dinamica interna deve svanire dopo un certo lasso temporale. Nel contesto delle ESN, questa proprietà viene chiamata echo state property.
* Le connessioni interne al reservoir devono essere sparse, in modo da generare un insieme eterogeneo di feature.
Nel suo lavoro originale del 2001, Jaeger stesso introdusse alcuni criteri per cercare di soddisfare la echo state property, in termini del raggio spettrale della matrice dei pesi interni del reservoir. Tali condizioni sono poi state migliorate nel 2007, e nuovamente nel 2012. Un approccio alternativo, basato sulla teoria dell'informazione, è stato invece proposto nel 2007 da Mustafa Ozturk, Dongming Xu e José Príncipe. Ad oggi, il Fraunhofer Institute for Intelligent Analysis and Information Systems detiene un brevetto per lo sfruttamento commerciale delle Echo State Networks.

### Liquid State Machines

La Liquid State Machine (LSM) è stata introdotta nel 2002, in maniera indipendente dalla Echo State Network, da Wolfgang Maass, Thomas Natschläger ed Henry Markram. Seppur condividendo molto idee di base della Echo State Network, la LSM è stata introdotta come un modello computazionale per studiare determinati tipi di circuiti neurali. A causa di ciò, le LSM utilizzano in genere modelli di neuroni con maggiore plasubilità biologica, il più semplice dei quali è noto come integrate-and-fire spiking neuron. Inoltre, la connettività all'interno di una LSM tende a ricalcare modelli plausibili di connessioni sinaptiche. Poiché questo richiede operazioni più complesse di codifica/decodifica dell'informazione, le LSM sono state applicate in maniera minore a problemi di apprendimento automatico, ma ne sono state studiate a fondo le proprietà computazionali esibite.

### Backpropagation-Decorrelation

Il terzo esempio di Reservoir Computing è l'algoritmo Backpropagation-Decorrelation (BD), introdotto nel 2004 da Jochen Steil. BD è sostanzialmente equivalente ad una delle varianti di Echo State Network formulate da Jaeger, ma è derivato da Steil come approssimazione ad un algoritmo già noto per l'allenamento di reti neurali ricorrenti, detto Atiya–Parlos learning (APRL). Il punto chiave dell'analisi di Steil è che APRL agisce in maniera separata sulla parte ricorrente della rete, dove i cambiamenti dei pesi sinaptici sono lenti ed estremamente correlati, dalla parte non ricorrente, dove i cambiamenti sono molto più rapidi. Tale lavoro è importante in quanto mostra come gli approcci di tipo Reservoir Computing, seppur euristici, possono essere visti come approssimazioni teoreticamente motivate di algoritmi globalmente ottimi.

## Aspetti teorici del reservoir

La distinzione netta tra reservoir e readout ha permesso di separare l'analisi dinamica del primo dalle capacità meglio note di generalizzazione del secondo. Un elemento essenziale dell'analisi del reservoir, oltre a quanto già menzionato prima, si è rivelata esserne la cosiddetta memoria a breve termine, di cui Jaeger diede una prima definizione in un lavoro del 2002. In linea generale, la memoria a breve termine in una Echo State Network con neuroni digitali è massima quando la funzione di attivazione dei suoi neuroni costituenti è lineare, e si contrappone alla sua capacità di elaborare relazioni altamente non-lineari. Essa spiega alcune differenze di comportamento osservate fra reservoir con neuroni digitali ed analogici,, ed è essenziale anche nell'analisi di reti ricorrenti a tempo continuo.
Un altro aspetto della ricerca teorica sul reservoir si concentra sulla possibilità di eliminare il processo di generazione casuale delle sue connessioni, o quantomeno di ridurne l'effetto. Esempi di ciò sono lo studio sui reservoir a complessità minima, e sul meccanismo della plasticità intrinseca. Altra possibilità è quella invece di combinare diversi reservoir per aumentarne le capacità di elaborazione, come avviene nei reservoir disaccoppiati o la possibilità di costruire reservoir gerarchici. L'approccio del Reservoir Computing è stato esteso nella direzione del Deep Learning con l'introduzione del Deep Reservoir Computing e del modello Deep Echo State Network (DeepESN).
Infine, alcuni ricercatori hanno investigato la possibilità di generare reservoir in maniera non convenzionale, tra cui si possono ricordare i lavori sui reservoir di tipo opto-elettronici, reservoir costruiti a partire da circuiti analogici, ed altri.

## Applicazioni del reservoir computing

Le tecniche di reservoir computing sono state applicate a numerose classi di problemi, tra cui:
* predizione di serie temporali caotiche e finanziarie;
* controllo motorio di piattaforme robotiche;
* modellamento acustico nel riconoscimento del parlato;
* rilevamento in tempo reale di crisi epilettiche.