En los últimos años, las redes neuronales convolucionales (o quizás redes neuronales profundas en general) se han vuelto cada vez más profundas, con redes de vanguardia que van de 7 capas ( AlexNet ) a 1000 capas ( Redes residuales) en el espacio de 4 años. La razón detrás del aumento en el rendimiento de una red más profunda, es que se puede aprender una función no lineal más compleja. Con suficientes datos de entrenamiento, esto permite que las redes discriminen más fácilmente entre diferentes clases.
Sin embargo, la tendencia parece no haber seguido con el número de parámetros en cada capa. Por ejemplo, el número de mapas de características en las capas convolucionales, o el número de nodos en las capas completamente conectadas, se ha mantenido más o menos igual y sigue siendo de magnitud relativamente pequeña, a pesar del gran aumento en el número de capas. Sin embargo, desde mi intuición, parecería que aumentar el número de parámetros por capa le daría a cada capa una fuente más rica de datos para aprender su función no lineal; pero esta idea parece haberse pasado por alto a favor de simplemente agregar más capas, cada una con un pequeño número de parámetros.
Entonces, aunque las redes se han vuelto "más profundas", no se han vuelto "más amplias". ¿Por qué es esto?
Respuestas:
Como descargo de responsabilidad, trabajo en redes neuronales en mi investigación, pero generalmente uso redes neuronales superficiales relativamente pequeñas en lugar de las redes realmente profundas en la vanguardia de la investigación que usted cita en su pregunta. No soy un experto en las peculiaridades y peculiaridades de las redes muy profundas y me referiré a alguien que lo sea.
Primero, en principio, no hay ninguna razón por la que necesite redes neuronales profundas. Una red neuronal suficientemente amplia con una sola capa oculta puede aproximarse a cualquier función (razonable) dados suficientes datos de entrenamiento. Sin embargo, existen algunas dificultades con el uso de una red extremadamente amplia y poco profunda. El problema principal es que estas redes muy amplias y poco profundas son muy buenas para memorizar, pero no tan buenas para generalizar . Por lo tanto, si entrena la red con todos los valores de entrada posibles, una red súper amplia podría eventualmente memorizar el valor de salida correspondiente que desee. Pero eso no es útil porque para cualquier aplicación práctica no tendrá todos los valores de entrada posibles para entrenar.
La ventaja de múltiples capas es que pueden aprender características en varios niveles de abstracción . Por ejemplo, si entrena una red neuronal convolucional profunda para clasificar imágenes, encontrará que la primera capa se entrenará para reconocer cosas muy básicas como los bordes, la siguiente capa se entrenará para reconocer colecciones de bordes como formas, la siguiente la capa se entrenará para reconocer colecciones de formas como ojos o narices, y la siguiente capa aprenderá características de orden superior como caras. Las capas múltiples son mucho mejores para generalizar porque aprenden todas las características intermedias entre los datos sin procesar y la clasificación de alto nivel.
Eso explica por qué podría usar una red profunda en lugar de una red muy amplia pero poco profunda. Pero, ¿por qué no una red muy profunda y muy amplia? Creo que la respuesta es que desea que su red sea lo más pequeña posible para producir buenos resultados. A medida que aumenta el tamaño de la red, en realidad solo está introduciendo más parámetros que su red necesita aprender y, por lo tanto, aumenta las posibilidades de sobreajuste. Si construye una red muy amplia y muy profunda, corre el riesgo de que cada capa simplemente memorice lo que desea que sea la salida, y termina con una red neuronal que no se puede generalizar a nuevos datos.
Además del espectro del sobreajuste, cuanto más amplia sea su red, más tiempo le llevará entrenar . Las redes profundas ya pueden ser muy caras desde el punto de vista computacional, por lo que existe un fuerte incentivo para que sean lo suficientemente anchas como para que funcionen bien, pero no más anchas.
fuente
No creo que haya una respuesta definitiva a sus preguntas. Pero creo que la sabiduría convencional es la siguiente:
Básicamente, a medida que crece el espacio de hipótesis de un algoritmo de aprendizaje, el algoritmo puede aprender estructuras cada vez más ricas. Pero al mismo tiempo, el algoritmo se vuelve más propenso al sobreajuste y es probable que aumente su error de generalización.
Por lo tanto, en última instancia, para cualquier conjunto de datos dado, es recomendable trabajar con el modelo mínimo que tenga la capacidad suficiente para aprender la estructura real de los datos. Pero este es un consejo muy sencillo, ya que generalmente se desconoce la "estructura real de los datos" y, a menudo, incluso las capacidades de los modelos candidatos solo se entienden vagamente.
Cuando se trata de redes neuronales, el tamaño del espacio de hipótesis está controlado por el número de parámetros. Y parece que para un número fijo de parámetros (o un orden de magnitud fijo), profundizar permite que los modelos capturen estructuras más ricas (por ejemplo, este documento ).
Esto puede explicar parcialmente el éxito de los modelos más profundos con menos parámetros: VGGNet (desde 2014) tiene 16 capas con ~ 140M parámetros, mientras que ResNet (desde 2015) lo supera con 152 capas pero solo ~ 2M parámetros
(como un lado, los modelos más pequeños pueden ser computacionalmente más fáciles de entrenar, pero no creo que sea un factor importante en sí mismo, ya que la profundidad realmente complica el entrenamiento)
Tenga en cuenta que esta tendencia (más profundidad, menos parámetros) está principalmente presente en tareas relacionadas con la visión y redes convolucionales, y esto requiere una explicación específica del dominio. Así que aquí hay otra perspectiva:
Cada "neurona" en una capa convolucional tiene un "campo receptivo", que es el tamaño y la forma de las entradas que afectan a cada salida. Intuitivamente, cada núcleo captura algún tipo de relación entre las entradas cercanas. Y los núcleos pequeños (que son comunes y preferibles) tienen un pequeño campo receptivo, por lo que solo pueden proporcionar información sobre las relaciones locales.
Pero a medida que profundiza, el campo receptivo de cada neurona con respecto a una capa anterior se hace más grande. Por lo tanto, las capas profundas pueden proporcionar características con significado semántico global y detalles abstractos (relaciones de relaciones ... de relaciones de objetos), a la vez que usan solo núcleos pequeños (que regularizan las relaciones que aprende la red y la ayudan a converger y generalizar).
Por lo tanto, la utilidad de las redes convolucionales profundas en la visión por computadora puede explicarse parcialmente por la estructura espacial de imágenes y videos. Es posible que el tiempo diga que para diferentes tipos de problemas, o para arquitecturas no convolucionales, la profundidad en realidad no funciona bien.
fuente
Agregar más funciones ayuda, pero el beneficio se vuelve marginal rápidamente después de que se agregaron muchas funciones. Esa es una razón por la cual las herramientas como PCA funcionan: algunos componentes capturan la mayoría de las variaciones en las características. Por lo tanto, agregar más funciones después de algún punto es casi inútil.
Por otro lado, encontrar la funcionalidad adecuada para ma de la función siempre es una buena idea. Sin embargo, si no tienes una buena teoría, es difícil encontrar una función correcta, por supuesto. Por lo tanto, agregar capas es útil como forma de enfoque de fuerza bruta.
Sin embargo, profundizar la red fácilmente lo llevaría a la ecuación anterior con solo dos capas. Las funciones más complicadas necesitarían más capas, por eso profundizar el número de capas podría ser un camino a seguir en muchos problemas.
fuente
¿Por qué podrías estar tratando de limitar el número de parámetros? Un numero de rasones:
fuente