# Reservoir computing

El reservoir computing o cálculo de reservoir es un marco de trabajo o framework derivado de la teoría de las redes neuronales recurrentes. Este enfoque mapea las señales de entrada en espacios computacionales de mayor dimensión utilizando la dinámica de un sistema fijo y no lineal llamado "reservoir". Una vez que la señal de entrada se introduce en el reservoir, que se trata como una caja negra, se entrena un sencillo mecanismo de lectura para obtener y mapear el estado del reservoir hasta obtener el resultado deseado. La principal ventaja de este framework radica en que el entrenamiento solo se lleva a cabo en la fase de lectura, ya que la dinámica del reservoir es fija. Además, otra ventaja importante es que se puede aprovechar la potencia de cálculo de los sistemas disponibles de manera natural, tanto clásicos como mecánicos cuánticos, lo que permite reducir el costo de cálculo efectivo.

## Historia

El concepto del cálculo de reservoir surge de la utilización de conexiones recursivas en redes neuronales para crear un sistema dinámico complejo. Representa una generalización de arquitecturas previas de redes neuronales, como las redes neuronales recurrentes, las máquinas de estado líquido y las redes de estado de eco. El cálculo de reservoir también se extiende a sistemas físicos que no se ajustan a la definición clásica de redes, sino que son sistemas continuos en el espacio y/o en el tiempo. Por ejemplo, un "cubo de agua" literal puede funcionar como un reservoir que realiza cálculos sobre las entradas que se presentan como perturbaciones de la superficie.
La complejidad resultante de estas redes neuronales recurrentes ha demostrado ser útil para resolver diversos problemas, como el procesamiento de lenguaje y el modelado de sistemas dinámicos. Sin embargo, el entrenamiento de las redes neuronales recurrentes es complicado y costoso desde el punto de vista computacional. Para abordar estos problemas, el cálculo de reservoir simplifica el proceso al fijar la dinámica del reservoir y entrenar únicamente la capa lineal de salida.
Existe una amplia variedad de sistemas dinámicos no lineales que pueden utilizarse como reservoir para realizar cálculos. En los últimos años, los láseres semiconductores han despertado un gran interés debido a su capacidad para realizar cálculos de manera rápida y energéticamente eficiente en comparación con los componentes eléctricos.
Los recientes avances en inteligencia artificial y teoría de la información cuántica han dado lugar al concepto de redes neuronales cuánticas. Estas redes muestran promesa en el procesamiento cuántico de la información, lo cual representa un desafío para las redes clásicas, pero también pueden encontrar aplicaciones en la resolución de problemas clásicos.
En 2018, se logró la realización física de una arquitectura cuántica del cálculo de reservoir utilizando espines nucleares en un sólido molecular. Sin embargo, los experimentos realizados no demostraron el cálculo de reservoir cuántico propiamente dicho, ya que no implicaban el procesamiento de datos secuenciales. En cambio, los datos se presentaron como entradas vectoriales, lo que se considera más una demostración de la implementación cuántica de un algoritmo aleatorio o "fregadero de cocina" (random kitchen sink), también conocido como máquinas de aprendizaje extremo en algunas comunidades.
En 2019, se propuso otra posible implementación de procesadores reservoir cuánticos utilizando campos en redes fermiónicas bidimensionales. En 2020, se propuso la realización de cálculo de reservoir en ordenadores cuánticos basados en compuertas y se demostró en ordenadores cuánticos superconductores IBM a corto plazo basados en la nube.
El cálculo de reservoir se ha utilizado con el propósito de análisis de series temporales. En particular, se han utilizado para la predicción de series temporales caóticas, la separación de señales caóticas y la inferencia de enlaces de redes a partir de su dinámica.

## Reservoir computing clásico
### Reservoir

En cálculo de reservoir, el "reservoir" es la estructura interna del ordenador y debe cumplir dos propiedades: estar compuesta por unidades individuales no lineales y ser capaz de almacenar información.
La no linealidad describe la respuesta de cada unidad ante la entrada, lo cual permite resolver problemas complejos mediante el cálculo de reservoir. Los reservoir pueden almacenar información conectando las unidades en bucles recurrentes, donde la entrada previa afecta a la respuesta siguiente. Este cambio en la respuesta debido al pasado permite entrenar a los ordenadores para realizar tareas específicas.
Los reservoir pueden ser virtuales o físicos. Los reservoir virtuales suelen generarse aleatoriamente y se diseñan como redes neuronales. Estos reservoir virtuales pueden tener no linealidad y bucles recurrentes, pero a diferencia de las redes neuronales, las conexiones entre las unidades son aleatorias y permanecen constantes durante el cálculo.
Por otro lado, los reservoir físicos son posibles gracias a la no linealidad inherente en ciertos sistemas naturales. Por ejemplo, la interacción entre las ondulaciones en la superficie del agua posee la dinámica no lineal necesaria para la creación de reservoir físicos. Se ha desarrollado un enfoque de cálculo de reservoir para el reconocimiento de patrones utilizando ondulaciones generadas por motores eléctricos y registrando y analizando las ondulaciones en la fase de lectura.

### Readout

El readout o lectura es una capa de la red neuronal que realiza una transformación lineal en la salida del reservoir. Los pesos de esta capa de lectura se entrenan analizando los patrones espaciotemporales del reservoir después de haber sido excitado por entradas conocidas. Para esto, se utilizan métodos de entrenamiento como la regresión lineal o la regresión de Ridge. Dado que la aplicación del cálculo de reservoir depende de los patrones espaciotemporales específicos del reservoir, los detalles de los métodos de lectura se adaptan a cada tipo de reservoir. Por ejemplo, en el caso del cálculo de reservoir que utilice un recipiente de líquido como su reservoir, la lectura podría implicar la observación de los patrones espaciotemporales en la superficie del líquido.

### Tipos
#### Red de reverberación contextual

Uno de los primeros ejemplos del cálculo de reservoir fue la red de reverberación contextual. En esta red, una capa de entrada alimenta un sistema dinámico de alta dimensión que luego es leído por un perceptrón monocapa entrenable. Se describen dos tipos de sistemas dinámicos utilizados: una red neuronal recurrente con pesos aleatorios fijos y un sistema continuo de reacción-difusión inspirado en el modelo de morfogénesis de Alan Turing. En la capa entrenable, el perceptrón asocia las entradas actuales con las señales que reverberan en el sistema dinámico; se decía que estas últimas proporcionaban un "contexto" dinámico para las entradas de datos. En el lenguaje de trabajos posteriores, el sistema de reacción-difusión funcionaba como reservoir.

#### Red de estado de eco

El modelo de Red de Estado de Eco de Árbol (Tree Echo State Network o TreeESN en inglés) representa una generalización del marco de trabajo del cálculo de reservoir hacia datos estructurados en forma de árbol.

#### Máquina de estado líquido

Una Máquina de Estado Líquido (Liquid State Machine o LSM en inglés) es un tipo de calculador de reservoir que utiliza una red neuronal de impulsos.

##### Máquina de estado líquido caótico

El líquido en una Máquina de Estado Líquido Caótico (Chaotic Liquid State Machine o CLSM en inglés), también conocido como reservoir caótico, está compuesto por neuronas de impulsos caóticas. Sin embargo, estas neuronas logran estabilizar su actividad ajustándose a una única hipótesis que describe las entradas entrenadas en la máquina. Esto contrasta con otros tipos de reservoir que no logran estabilizarse. La estabilización del líquido se logra a través de la plasticidad sináptica y el control del caos que gobiernan las conexiones neuronales dentro del líquido. La CLSM ha mostrado resultados prometedores en el aprendizaje de datos de series temporales sensibles.

#### Cálculo transitorio no lineal

Este tipo de procesamiento de la información es especialmente relevante cuando las señales de entrada, que son dependientes del tiempo, se desvían de la dinámica interna del mecanismo. Estas desviaciones generan transitorios o alteraciones temporales que se reflejan en la salida del dispositivo.

#### Cálculo de reservoir profundo

La extensión del framework de cálculo de reservoir hacia el Aprendizaje Profundo, mediante la introducción del Cálculo de Reservoir Profundo (Deep Reservoir Computing) y del modelo de Red de Estado de Eco Profunda (Deep Echo State Network o DeepESN en inglés), permite desarrollar modelos eficientemente entrenados para el procesamiento jerárquico de datos temporales. Además, posibilita investigar el rol intrínseco de la composición por capas en las redes neuronales recurrentes.

## Reservoir computing cuántico

El cálculo de reservoir cuántico puede aprovechar la naturaleza no lineal de las interacciones o procesos mecánicos cuánticos para formar los reservoir no lineales característicos. Sin embargo, también es posible utilizar reservoir lineales cuando la inyección de la entrada al reservoir crea la no linealidad. La combinación del aprendizaje automático y los dispositivos cuánticos está dando lugar al surgimiento de la computación neuromórfica cuántica como un nuevo campo de investigación.

### Tipos
#### Estados gaussianos de osciladores armónicos cuánticos en interacción

Los estados gaussianos son una clase fundamental de estados en sistemas cuánticos de variables continuas. Aunque actualmente es posible crear y manipular estos estados en plataformas ópticas de última generación, que son naturalmente sólidas frente a la decoherencia, se sabe que por sí solos no son suficientes para lograr la computación cuántica universal debido a que las transformaciones que preservan la naturaleza gaussiana de un estado son lineales.
Por lo general, la dinámica lineal tampoco sería suficiente para el cálculo de reservoir no trivial. Sin embargo, es posible aprovechar esta dinámica al considerar una red de osciladores armónicos cuánticos que interactúan y al inyectar la entrada mediante reinicios periódicos del estado de un subconjunto de osciladores. Con una elección adecuada de cómo los estados de este subconjunto de osciladores dependen de la entrada, los observables de los demás osciladores pueden convertirse en funciones no lineales apropiadas para el cálculo de reservoir. De hecho, gracias a las propiedades de estas funciones, incluso es posible lograr el cálculo de reservoir universal mediante la combinación de los observables con una función de lectura polinómica.
En principio, estos calculadores de reservoir podrían implementarse utilizando procesos paramétricos ópticos multimodo controlados. Sin embargo, la extracción eficiente de la salida del sistema representa un desafío, especialmente en el régimen cuántico, donde se debe tener en cuenta la medición de retroacción.

#### Redes de puntos cuánticos bidimensionales

En esta arquitectura, el acoplamiento aleatorio entre los sitios de la red confiere al reservoir la propiedad de caja negra, que es característica de los procesadores de reservoir. Posteriormente, se produce la agitación del reservoir, que actúa como entrada, mediante un campo óptico incidente. La lectura se realiza mediante los números ocupacionales de los sitios reticulares, los cuales son naturalmente funciones no lineales de entrada.

#### Espines nucleares en un sólido molecular

En esta arquitectura, el acoplamiento mecánico cuántico entre los espines de átomos vecinos dentro del sólido molecular proporciona la no linealidad necesaria para crear el espacio computacional de mayor dimensión. Posteriormente, el reservoir se excita mediante radiación electromagnética de radiofrecuencia sintonizada con las frecuencias de resonancia de los espines nucleares relevantes. La lectura se realiza midiendo los estados de los espines nucleares.

#### Reservoir computing en ordenadores cuánticos superconductores near-term basados en compuertas

El modelo más extendido de computación cuántica es el basado en compuertas, en el cual se realiza la computación cuántica mediante la aplicación secuencial de compuertas cuánticas unitarias en los qubits de un ordenador cuántico. Se ha desarrollado una teoría para implementar el cálculo de reservoir en un ordenador cuántico basado en compuertas, y se han realizado pruebas de principio en varios ordenadores cuánticos superconductores de escala intermedia y ruidosos (NISQ, del inglés Noisy intermediate-scale quantum) de IBM.