¿Cuántos datos para el aprendizaje profundo?

9

Estoy aprendiendo sobre el aprendizaje profundo (específicamente CNN) y cómo normalmente requiere una gran cantidad de datos para evitar el sobreajuste. Sin embargo, también me han dicho que cuanto mayor capacidad / más parámetros tiene un modelo, más datos se requieren para evitar el sobreajuste. Por lo tanto, mi pregunta es: ¿por qué no puede simplemente reducir el número de capas / nodos por capa en una red neuronal profunda y hacer que funcione con una menor cantidad de datos? ¿Existe un "número mínimo de parámetros" fundamental que requiere una red neuronal hasta que "se activa"? Por debajo de un cierto número de capas, las redes neuronales no parecen funcionar tan bien como las funciones codificadas a mano.

Karnivaurus
fuente

Respuestas:

10

Esta es una gran pregunta y, de hecho, ha habido algunas investigaciones que abordan los problemas de capacidad / profundidad que mencionó.

Ha habido mucha evidencia de que la profundidad en las redes neuronales convolucionales ha llevado a aprender jerarquías de características más ricas y diversas. Empíricamente, vemos que las redes con mejor rendimiento tienden a ser "profundas": la Oxford VGG-Net tenía 19 capas, la arquitectura Google Inception es profunda, la Red Residual Profunda de Microsoft ha reportado 152 capas, y todas estas están obteniendo un punto de referencia ImageNet muy impresionante resultados.

En la superficie, es un hecho que los modelos de mayor capacidad tienden a sobreajustarse a menos que use algún tipo de regularizador. Una forma en que el sobreajuste de redes muy profundas puede dañar el rendimiento es que se acercarán rápidamente a un error de entrenamiento muy bajo en un pequeño número de épocas de entrenamiento, es decir, no podemos entrenar a la red para una gran cantidad de pases a través del conjunto de datos. Una técnica como Dropout, una técnica de regularización estocástica, nos permite entrenar redes muy profundas durante períodos de tiempo más largos. En efecto, esto nos permite aprender mejores características y mejorar nuestra precisión de clasificación porque obtenemos más pases a través de los datos de entrenamiento.

Con respecto a su primera pregunta:

¿Por qué no puede simplemente reducir el número de capas / nodos por capa en una red neuronal profunda y hacer que funcione con una menor cantidad de datos?

Si reducimos el tamaño del conjunto de entrenamiento, ¿cómo afecta eso el rendimiento de la generalización? Si utilizamos un tamaño de conjunto de entrenamiento más pequeño, esto puede resultar en el aprendizaje de una representación de características distribuidas más pequeña, y esto puede dañar nuestra capacidad de generalización. En definitiva, queremos poder generalizar bien. Tener un conjunto de entrenamiento más grande nos permite aprender una jerarquía de características distribuidas más diversa.

Con respecto a su segunda pregunta:

¿Existe un "número mínimo de parámetros" fundamental que requiere una red neuronal hasta que "se activa"? Por debajo de un cierto número de capas, las redes neuronales no parecen funcionar tan bien como las funciones codificadas a mano.

Ahora agreguemos algunos matices a la discusión anterior sobre el tema de profundidad. Parece que, dado que estamos en este momento con el estado actual de la técnica, para entrenar una red de comunicaciones de alto rendimiento desde cero, se utiliza algún tipo de arquitectura profunda.

Pero ha habido una serie de resultados centrados en la compresión del modelo . Entonces, esta no es una respuesta directa a su pregunta, pero está relacionada. La compresión del modelo está interesada en la siguiente pregunta: dado un modelo de alto rendimiento (en nuestro caso, digamos una red de conversión profunda), ¿podemos comprimir el modelo, reduciendo su profundidad o incluso el recuento de parámetros, y retener el mismo rendimiento?

Podemos ver la conferencia de alto rendimiento y alta capacidad como docentes . ¿Podemos usar al maestro para entrenar un modelo de estudiante más compacto ?

Sorprendentemente la respuesta es: . Ha habido una serie de resultados, un buen artículo para la perspectiva de la red es un artículo de Rich Caruana y Jimmy Ba ¿Las redes profundas realmente necesitan ser profundas? . Son capaces de entrenar un modelo poco profundo para imitar el modelo más profundo, con muy poca pérdida de rendimiento. También ha habido más trabajo sobre este tema, por ejemplo:

entre otras obras. Estoy seguro de que me faltan algunos otros buenos artículos.

Para mí, este tipo de resultados cuestionan cuánta capacidad tienen realmente estos modelos superficiales. En el artículo de Caruana, Ba, establecen la siguiente posibilidad:

"Los resultados sugieren que la fuerza del aprendizaje profundo puede surgir en parte de una buena coincidencia entre las arquitecturas profundas y los procedimientos de entrenamiento actuales, y que es posible idear mejores algoritmos de aprendizaje para entrenar redes de alimentación poco profundas más precisas. Para un determinado número de parámetros, la profundidad puede facilitar el aprendizaje, pero no siempre es esencial "

Es importante ser claro: en el artículo de Caruana, Ba, no están entrenando un modelo superficial desde cero, es decir, entrenando solo con las etiquetas de la clase, para obtener el rendimiento más avanzado. Más bien, entrenan un modelo profundo de alto rendimiento, y de este modelo extraen probabilidades de registro para cada punto de datos. Luego entrenamos un modelo superficial para predecir estas probabilidades de registro. Por lo tanto, no entrenamos el modelo superficial en las etiquetas de clase, sino que usamos estas probabilidades de registro.

No obstante, sigue siendo un resultado bastante interesante. Si bien esto no proporciona una respuesta directa a su pregunta, aquí hay algunas ideas interesantes que son muy relevantes.

Fundamentalmente: siempre es importante recordar que existe una diferencia entre la "capacidad" teórica de un modelo y encontrar una buena configuración de su modelo. Esto último depende de sus métodos de optimización.

AI independiente
fuente