¿Cuáles son los principios para elegir estructuras para redes neuronales recurrentes?

Elegir arquitecturas de redes neuronales profundas es mucho más un arte que una ciencia y generalmente es una combinación de intuición, heurística y experimentación.

Un enfoque que generalmente es útil es comenzar con versiones “de juguete” del problema (con un tamaño de conjunto de entrenamiento mucho más pequeño) para tener una idea de la compensación de sesgo / varianza en función del número de capas, el número de unidades por capa y Otros hiperparámetros.

En el ejemplo específico de DeepSpeech , los autores optaron por usar una capa recurrente, que era una de las capas superiores de la red.


¿Por qué usar una capa recurrente? Debido a la naturaleza secuencial de las capas recurrentes, la capa recurrente es más difícil de paralelizar en las GPU (mientras que las capas no recurrentes son trivialmente paralelizadas a lo largo de la dimensión de tiempo): tener más de una capa recurrente sería un cuello de botella computacional.

¿Por qué la capa recurrente está más arriba en la red? Las redes neuronales profundas aprenden cada vez más representaciones de alto nivel de los datos de entrada sin procesar (por ejemplo, espectrogramas de voz) más arriba en la red, por lo que la capa recurrente es más efectiva utilizando estas representaciones de alto nivel en lugar de características sin formato o de bajo nivel.

Intentaré agregar algo a la respuesta de Maurizio.

Básicamente, para hacer que tu NN sea más poderoso, debes darle muchos pesos. E incluso si teóricamente pudieras poner todo tu peso en dos capas, es mucho más eficiente colocarlas en varias capas. Le da mucha más expresividad a su modelo.

Pero existen limitaciones tanto en la cantidad de peso en su modelo como en la cantidad de capas.

De hecho, para aprender pesos significativos, necesita tener muchos más datos de entrenamiento que pesos, de lo contrario, “sobreajustará” su conjunto de entrenamiento y aprenderá algo que no es útil en la práctica.

Además, mientras que distribuir pesos en capas tiende a ayudar a su modelo, también enfrenta nuevos problemas como el “gradiente de fuga” específico de NN profundo. De hecho, cuando tiene 5 capas de neuronas, la influencia de una neurona de la primera capa en la salida es muy pequeña, por lo que es difícil saber cuál debería ser su activación.
Estos problemas pueden limitarse con la correcta inicialización del peso, pero todavía están ahí.

Entonces, eso le da más idea sobre el intercambio que hace cuando diseña un NN.

Tenga en cuenta que Ng usa la deserción cuando entrena es NN. El uso del abandono evita que su NN se sobreajuste, por lo que una práctica común es: agregar capas y pesos a su NN hasta que comience a sobreajustar su conjunto de entrenamiento, luego entrenarlo con el abandono. Eso le garantiza que su modelo es lo suficientemente potente como para aprender sobre su conjunto de datos, mientras que el abandono lo obliga a extraer regularidades y generalizar bien.

Así que se trataba de cómo generalmente se elige la cantidad de capas y la cantidad de pesos.

En este caso, todo se optimizó también para la informática GPU. Lo que significa que las capas no tienen demasiado peso, por lo que pueden caber fácilmente en una memoria de GPU.

La elección de las dos capas recurrentes (una de izquierda a derecha y otra de derecha a izquierda) se debe a la naturaleza de la tarea. Cuando escuches a alguien hablar, si escuchas mal una palabra, usarás toda la oración para corregirla. Entonces, eso es lo que pretende hacer la capa recurrente: proporcionar un poco de contexto antes de producir la palabra.

Como explicó Maurizio anteriormente, estas capas son computacionalmente caras porque no pueden ser paralelizadas. Por lo tanto, desea proporcionarles características de alto orden en la entrada para que no tenga que poner demasiado peso en estas capas recurrentes.

Y estoy seguro de que el equipo de Baidu no obtuvo estos resultados en su primer intento. Es probable que requiera muchas iteraciones, con diferentes números de pesos y capas, diferentes descensos de gradiente, diferentes tasas de abandono, etc.

Un principio también podría ser observar el patrón de conectividad recurrente presente en el cerebro, por ejemplo, en la corteza visual, e intentar replicarlo.

Esto podría estar motivado, porque la naturaleza tuvo millones de años para optimizar sus circuitos.
Vea un ejemplo de este enfoque, la Pirámide de abstracción neural, aquí:

Redes neuronales jerárquicas para la interpretación de imágenes.
Lecture Notes in Computer Science 2766, Springer, 2003.

More Interesting

¿Qué beneficios se obtienen al pensar mucho en los fundamentos de la Inteligencia Artificial?

¿El chatbot Tay de Microsoft le costó reputación de marca en aprendizaje automático e inteligencia artificial?

¿Qué es lo que los humanos valoran que, incluso si los robots pueden hacer, podría no ser atractivo para los humanos?

¿Qué algoritmos de minería de datos / reconocimiento de patrones toman los datos como entrada y luego generan modelos / fórmulas matemáticas?

¿Cómo cambiará el desarrollo de la IA el mercado laboral en el futuro?

¿Cómo se puede comenzar a desarrollar un bot de chat utilizando el aprendizaje automático y el procesamiento del lenguaje natural desde cero?

¿Cómo funciona Siri?

Cómo comenzar a crear un bot de Python

¿Es posible ingresar al Aprendizaje Automático profesionalmente sin un título de posgrado en CS, Matemáticas o Estadística?

¿Cuáles son los temas candentes en el aprendizaje automático en 2016?

¿Cuáles son todas las referencias de Inteligencia Artificial en Ex Machina?

¿Cuáles son algunas de las charlas TED imperdibles sobre temas de tecnología, especialmente Internet, IA, robótica y SMR?

Fui aceptado en el AI Nanodegree de Udacity. ¿Cuáles son los posibles trabajos que puedo obtener como ingeniero de IA?

Cómo comenzar a aprender inteligencia artificial y construir una aplicación de inteligencia artificial real usando Python o Java

¿Puedo usar la programación de expresión génica para desarrollar programas C ++?