¿Cómo seleccionar el número de capas ocultas y el número de celdas de memoria en un LSTM?

28

Estoy tratando de encontrar algunas investigaciones existentes sobre cómo seleccionar el número de capas ocultas y el tamaño de estas de un RNN basado en LSTM.

¿Hay algún artículo en el que se esté investigando este problema, es decir, cuántas células de memoria se deben usar? Supongo que depende totalmente de la aplicación y en qué contexto se está utilizando el modelo, pero ¿qué dice la investigación?

Stephen Johnson
fuente

Respuestas:

15

Su pregunta es bastante amplia, pero aquí hay algunos consejos:

Para redes de avance, vea esta pregunta :

La respuesta de @ doug me ha funcionado. Hay una regla general adicional que ayuda a los problemas de aprendizaje supervisado. El límite superior en la cantidad de neuronas ocultas que no resultará en un ajuste excesivo es:

Nh=Ns(α(Ni+No))

NiN o N s α a l p h a N s( N i + N o ) α = número de neuronas de entrada. = número de neuronas de salida. = número de muestras en el conjunto de datos de entrenamiento. = un factor de escala arbitrario usualmente 2-10. Otros recomiendan establecer en un valor entre 5 y 10, pero creo que un valor de 2 a menudo funcionará sin sobreajustar. Como se explica en este excelente texto de NN Design , desea limitar el número de parámetros libres en su modelo (su grado o número de pesos distintos de cero) a una pequeña porción de los grados de libertad en sus datos. Los grados de libertad en sus datos son el número de muestras * grados de libertad (dimensiones) en cada muestra oNoNsα
alphaNs(Ni+No) (suponiendo que todos sean independientes). Entonces es una forma de indicar qué tan general quiere que sea su modelo o cuánto desea evitar el sobreajuste.α

Para un procedimiento automatizado, comenzaría con un alfa de 2 (el doble de grados de libertad en sus datos de entrenamiento que su modelo) y avanzaría hasta 10 si el error para los datos de entrenamiento es significativamente menor que para la validación cruzada conjunto de datos

Y específicamente en LSTM, es posible que desee ver esto .

Pero el punto principal: no hay una regla para la cantidad de nodos ocultos que debe usar, es algo que debe averiguar para cada caso por prueba y error .

Thomas W
fuente
7

Seleccione el número de capas ocultas y el número de celdas de memoria en LSTM siempre depende del dominio de la aplicación y el contexto donde desea aplicar este LSTM.

Para capas ocultas. La introducción de capas ocultas hace posible que la red exhiba un comportamiento no lineal.

El número óptimo de unidades ocultas podría ser fácilmente menor que el número de entradas, no existe una regla como multiplicar el número de entradas con N ... Si tiene muchos ejemplos de entrenamiento, puede usar múltiples unidades ocultas, pero a veces solo 2 unidades ocultas funcionan mejor con pocos datos. Por lo general, las personas usan una capa oculta para tareas simples, pero hoy en día la investigación en arquitecturas de redes neuronales profundas muestra que muchas capas ocultas pueden ser fructíferas para objetos difíciles, caracteres escritos a mano y problemas de reconocimiento facial.

I assume it totally depends on the application and in which context the model is being used.

Ligade Maheshwar
fuente
55
La no linealidad se debe al uso de funciones de activación no lineal. El número de capas solo aumenta la expresividad del NN. Deberías corregir esta respuesta. Las combinaciones de funciones lineales siguen siendo funciones lineales (por lo tanto, si tuviera varias capas que solo realizaran una combinación lineal de las entradas, entonces la combinación de estas capas seguiría siendo lineal).
nbro 01 de
4

En general, no hay pautas sobre cómo determinar el número de capas o el número de celdas de memoria en un LSTM.

El número de capas y celdas requeridas en un LSTM puede depender de varios aspectos del problema:

  1. La complejidad del conjunto de datos. La cantidad de características, número de puntos de datos, etc.

  2. El proceso de generación de datos. El siguiente ejemplo de cómo el proceso de generación de datos puede desempeñar un papel importante.

Ex: predicción de los precios del petróleo en comparación con la predicción del PIB de una economía bien entendida. El último es mucho más fácil que el primero. Por lo tanto, la predicción de los precios del petróleo también podría necesitar un mayor número de celdas de memoria LSTM para predecir con la misma precisión en comparación con el PIB.

  1. La precisión requerida para el caso de uso. El número de celdas de memoria dependerá en gran medida de esto. Si el objetivo es superar el estado del arte, se necesitan más celdas LSTM en general. Compare eso con el objetivo de llegar a predicciones razonables, que necesitarían un menor número de celdas LSTM.

Sigo estos pasos cuando modelo usando LSTM:

  1. Pruebe con una sola capa oculta con 2 o 3 celdas de memoria. Vea cómo funciona en comparación con un punto de referencia. Si se trata de un problema de series de tiempo, generalmente hago un pronóstico de las técnicas clásicas de series de tiempo como punto de referencia.

  2. Intenta aumentar el número de celdas de memoria. Si el rendimiento no aumenta mucho, pase al siguiente paso.

  3. Comience a profundizar la red, es decir, agregue otra capa con un pequeño número de celdas de memoria.

Aparte:

No hay límite para la cantidad de trabajo que se puede dedicar a alcanzar esos mínimos globales de la función de pérdida y ajustar los mejores hiperparámetros. Por lo tanto, centrarse en el objetivo final del modelado debería ser la estrategia en lugar de tratar de aumentar la precisión tanto como sea posible.

La mayoría de los problemas se pueden manejar usando 2-3 capas de la red.

ingenuo
fuente