La Máquina Neuronal de Turing, NTM (Neural Turing machine) fue descrita por Alex Graves, Greg Wayne e Ivo Danihelka en un artículo del mismo nombre publicado en 2.014.
Los autores se inspiran en las teorías de la ciencia cognitiva que sugieren que los humanos poseen un “ejecutivo central” que interactúa con un “almacén de memoria”. Hasta hora nada nuevo (un controlador y una matriz de memoria), luego se complica.
Su proposición es extender las redes neuronales recurrentes y acoplarlas a recursos externos, como a una memoria externa de acceso directo y mejorar la capacidad de las RNN en el uso de determinados algoritmos complejos. Puede ser entrenada a través del aprendizaje supervisado o BPTT.
La arquitectura tiene varios parámetros libres: el tamaño de la memoria, el número de lectores/escritores y el rango de cambios de ubicación permitidos. Lo más importante es el tipo de red a utilizar como controlador, puede ser una red neuronal recurrente o feed-forward que toma los vectores de entrada y devuelve la salida, así como la gestión del paso de instrucciones y acceso a la memoria.
Un controlador recurrente como LSTM tiene su propia memoria interna que puede complementar a la memoria más grande de la matriz, esto permite que el controlador mezcle información en múltiples pasos de tiempo de operación. Por otro lado, un controlador con pre-alimentación puede limitar una red recurrente leyendo y escribiendo en la misma ubicación de memoria en cada paso. Además, los controladores con pre-alimentación a menudo confieren una mayor transparencia al funcionamiento de la red porque el patrón de lectura y escritura en la matriz de memoria suele ser más fácil de interpretar que el estado interno de una RNN, pero tienen la limitación del número de lectores/escritores simultáneos, esto provoca un cuello de botella. Los controladores recurrentes pueden almacenar internamente los vectores de lectura de los pasos de tiempo anteriores, por lo que no sufren esta limitación.
La memoria está representada por una matriz de N celdas, cada una de las cuales es un vector de dimensión M. Además de un número de lectores/escritores que facilitan el dialogo entre el controlador y la matriz de memoria.
Para probar su eficiencia, Graves, Wayne y Danihelka seleccionan cinco algoritmos (copia, clasificación,…) que puede realizarse/calcularse siguiendo un programa escrito en un lenguaje común, C, Java, etc. Los comparan con tres arquitecturas diferentes, una LSTM-RNN, una NTM con un controlador de pre-alimentación y una NTM con un controlador LSTM.
Los resultados proveen buenas generalizaciones con entradas largas y comparativamente mejores que con LSTM sin memoria o LSTM-RNN, tanto en el rendimiento del conjunto de entrenamiento como en la generalización para probar los datos.