Recientemente leí que una red neuronal recurrente puede aproximarse a cualquier algoritmo.
Entonces mi pregunta es: ¿qué significa esto exactamente y me puede dar una referencia donde esto se pruebe?
references
rnn
usuario3726947
fuente
fuente
Respuestas:
Fondo
Primero tenemos que repasar algunos conceptos de la teoría de la computación. Un algoritmo es un procedimiento para calcular una función. Dada la entrada, el algoritmo debe producir la salida correcta en un número finito de pasos y luego finalizar. Decir que una función es computable significa que existe un algoritmo para calcularla. Entre el conjunto infinito de todas las funciones, la mayoría no son computables. Las máquinas de Turing son un modelo matemático que formaliza la noción de computación. Existen otros modelos equivalentes, pero las máquinas de Turing son el 'modelo de referencia' estándar. De acuerdo con la tesis de Church-Turing, cualquier algoritmo puede ser implementado por una máquina de Turing, y todas las funciones computables pueden ser calculadas de esta manera. Cualquier instancia particular de una máquina de Turing solo calcula una función particular. Pero, existe una clase especial de máquinas de Turing llamadas máquinas de Turing universales Turing completoque puede simular cualquier otra máquina de Turing para cualquier entrada. Lo hacen tomando una descripción de la máquina que se simulará (y su entrada) como parte de su propia entrada. Por lo tanto, cualquier instancia particular de una máquina Universal Turing puede calcular cualquier función computable (es decir, puede implementar cualquier algoritmo). Se llama a cualquier sistema que comparta esta habilidad . Una forma de demostrar que un sistema está completo en Turing es demostrar que puede simular una máquina universal de Turing. Se ha demostrado que muchos sistemas son Turing completos (por ejemplo, la mayoría de los lenguajes de programación, ciertos autómatas celulares y la mecánica cuántica ).
Redes neuronales recurrentes
El siguiente documento muestra que, para cualquier función computable, existe una red neuronal recurrente finita (RNN) que puede computarla. Además, existen RNN finitos que están completos en Turing y, por lo tanto, pueden implementar cualquier algoritmo.
Utilizan redes que contienen un número finito de unidades conectadas de forma recurrente, que reciben entradas externas en cada punto de tiempo. El estado de cada unidad viene dado por una suma ponderada de sus entradas (más un sesgo), ejecutada a través de una función de activación no lineal. La función de activación es una función lineal saturada, que es una aproximación lineal por partes de un sigmoide. Los pesos y sesgos son fijos, por lo que no se produce aprendizaje.
La red realiza una asignación de una secuencia de entrada binaria a una secuencia de salida binaria. Hay dos entradas externas a la red, que se alimentan a todas las unidades: una 'línea de datos' y una 'línea de validación'. La línea de datos contiene la secuencia de entrada de ceros y unos, luego cero después de que finaliza la secuencia de entrada. La línea de validación le permite a la red saber cuándo está ocurriendo la secuencia de entrada. Contiene uno para la duración de la secuencia de entrada, luego cero después de que haya terminado. Una unidad se considera la 'unidad de salida'. Produce ceros para un retraso arbitrario, luego la secuencia de salida de ceros y unos, luego cero después de que la secuencia de salida ha terminado. Se considera que otra unidad es la 'unidad de validación', que nos permite saber cuándo está ocurriendo la secuencia de salida.
Aunque estos RNN asignan secuencias de entrada binarias a secuencias de salida binarias, podríamos estar interesados en funciones definidas en varios otros objetos matemáticos (otros tipos de números, vectores, imágenes, gráficos, etc.). Pero, para cualquier función computable, estos otros tipos de objetos pueden codificarse como secuencias binarias (por ejemplo, vea aquí una descripción de la codificación de otros objetos usando números naturales, que a su vez pueden representarse en binario).
Resultado
Muestran que, para cada función computable, existe un RNN finito (de la forma descrita anteriormente) que puede calcularlo. Hacen esto mostrando que es posible usar un RNN para simular explícitamente un autómata pushdown con dos pilas. Este es otro modelo que es computacionalmente equivalente a una máquina de Turing. Cualquier función computable puede ser calculada por una máquina Turing. Cualquier máquina de Turing puede ser simulada por un autómata pushdown con dos pilas. Cualquier autómata pushdown con dos pilas puede ser simulado por un RNN. Por lo tanto, cualquier función computable puede ser calculada por un RNN. Además, debido a que algunas máquinas de Turing son universales, los RNN que las simulan son completas y, por lo tanto, pueden implementar cualquier algoritmo. En particular, muestran que existen RNN completos de Turing con 1058 o menos unidades.
Otras consecuencias
Una consecuencia interesante de los resultados de la simulación es que ciertas preguntas sobre el comportamiento de los RNN son indecidibles. Esto significa que no existe un algoritmo que pueda responderlos para RNN arbitrarios (aunque pueden responder en el caso de RNN particulares ). Por ejemplo, la cuestión de si una unidad dada toma el valor 0 es indecidible; Si se pudiera responder a esta pregunta en general, sería posible resolver el problema de detención de las máquinas de Turing, que es indecidible.
Potencia de cálculo
En el documento anterior, todos los parámetros y estados de la red son números racionales. Esto es importante porque limita el poder de los RNN y hace que las redes resultantes sean más realistas. La razón es que los racionales son números computables , lo que significa que existe un algoritmo para calcularlos con precisión arbitraria. La mayoría de los números reales son indiscutibles y, por lo tanto, inaccesibles, incluso la máquina Turing más poderosa no puede representarlos, y muchas personas dudan de que puedan ser representados en el mundo físico. Cuando tratamos con 'números reales' en computadoras digitales, estamos accediendo a un subconjunto aún más pequeño (por ejemplo, números de coma flotante de 64 bits ). Representar números reales arbitrarios requeriría información infinita.
El documento dice que dar acceso a la red a números reales aumentaría aún más la potencia computacional, más allá de las máquinas Turing. Siegelmann escribió una serie de otros documentos que exploran esta capacidad de 'super-Turing'. Sin embargo, es importante tener en cuenta que estos son modelos matemáticos, y los resultados no significan que tal máquina realmente pueda existir en el mundo físico. Hay buenas razones para pensar que no podría, aunque es una pregunta abierta.
fuente
Creo que esto es lo que estás buscando. Este tipo demostró que una red de alimentación de múltiples capas o incluso una sola capa podría aproximarse a cualquier función, siempre que la red tenga suficientes unidades ocultas.
Hornik, K. (1991). Capacidades de aproximación de redes multicapa feedforward. Redes neuronales, 4 (2), 251-257.
fuente