¿Por qué las redes neuronales más profundas son mejores que las redes más amplias?

Una de las cosas que recuerdo de mis estudios es que se puede demostrar que dos (o tres, no recuerdo, pero creo que dos) capas ocultas son suficientes para calcular cualquier función que sea calculable por un NN.

Esto, de hecho, ralentizó la investigación. No mucha gente en ese momento estaba interesada en experimentar 3, 4, 10, 320 capas simplemente porque “dos es suficiente” (no estoy hablando de redes de pesas o redes compartidas, para quienes no sé si hay una similar resultado).

Incluso si esto es cierto, el punto es que el número de neuronas necesarias en cada capa tiende a crecer exponencialmente si se limita a dos capas. Lo que se puede calcular con una red de 15 capas (ocultas) también se puede calcular con una red de 2 capas (ocultas); pero el número total de neuronas no es el mismo. Necesita muchas más neuronas en una red de 2 capas para aproximarse a lo que puede hacer con una arquitectura profunda y menos neuronas totales.

Entonces la respuesta es, velocidad de rastreo (y convergencia, tal vez). En teoría, dos capas ocultas son suficientes, pero en la práctica se necesitan demasiadas neuronas para lograr el mismo resultado, con problemas relacionados con la velocidad del entrenamiento y creo que también se sobreajusta.

Edición 1: esta pregunta tiene diferentes respuestas según el tipo de redes.

Vaya a este enlace: CS231n Redes neuronales convolucionales para reconocimiento visual

para una descripción detallada

Esta respuesta es para redes convolucionales, no para una red neuronal FC general.

Porque las redes más profundas capturan la “jerarquía” natural que está presente en todas partes en la naturaleza. Vea un convnet, por ejemplo, captura características de bajo nivel en la primera capa, un poco mejor pero aún características de bajo nivel en la siguiente capa y en las capas superiores se capturan partes de objetos y estructuras simples.

Puede interpretar esto como una analogía modular. ¿Por qué escribimos código modular? Dividimos el código en varios módulos e intentamos que cada módulo sea lo más independiente posible. El resultado es que terminamos con muchos módulos. Esto es mucho más eficiente que escribir algunos módulos con cada módulo más grueso o más ancho.

¿Podría estar pensando cómo se conecta esto exactamente a las redes o redes neuronales?

Debe ver las representaciones capturadas por todas las capas en la red para aclarar este punto. representaciones de capa de google de convnet, por ejemplo, y véalo usted mismo.

Esto también es lo suficientemente intuitivo sin visualizaciones. Si tiene un módulo para detectar un ojo separado de un módulo que detecta una nariz, entonces su detector de cara es mucho más potente. ¿Por qué? Digamos que la imagen de la cara está ocluida y no puedes ver los ojos en la cara pero puedes ver el resto de la cara, así que puedes ver la nariz. Ahora su detector de módulo ocular no detectará ojos. Esta bien. Pero el detector del módulo nasal aún puede detectar la nariz. Contraste esto con un solo módulo para ojos y nariz. Este módulo solo sale cuando ve ojos “y” nariz en la cara. Esto no es bueno, ya que nuestra imagen de la cara no tiene ojos, ya que está ocluida. Es posible que tenga una idea de que mantener un módulo separado para cada característica importante es muy importante. Poner un montón de características en un módulo no es bueno ya que genera o “dispara” si y solo si esas características se detectan en los datos.

Las redes más profundas son esencialmente una pila de muchas características importantes. Cuanto más profunda sea la red, se crearán más representaciones de características que ayudan a la red a hacer una predicción más fácilmente al aprovechar la cantidad de características que tiene en el banco.

Esta intuición tiene sentido pero también se basa en evidencia empírica.

Como tal, una sola capa, lo suficientemente ancha, puede modelar cualquier conjunto de entrada. Sin embargo, esto es cierto solo cuando se cumple una condición, que es que alcanzamos el mínimo global de la superficie de error durante el entrenamiento; Esta sería una solución óptima.

Sin embargo, el mínimo global (en la superficie de error) casi nunca se alcanza debido a la naturaleza compleja de la superficie de error y los algoritmos de optimización ineficientes. Por lo tanto, terminamos con una solución subóptima.

Entonces, ahora, la solución que seguimos es mejorar la decisión (o, de manera equivalente, los resultados) que salen de la enésima capa, haciendo que pase a través de la (n + 1) capa. Repetimos este proceso de improvisación agregando más capas. En el caso de CNN, una capa aprende una representación de nivel superior de la salida de la capa anterior. Por ejemplo, la primera capa aprende a “ver” líneas, luego, la segunda capa aprende a reconocer formas simples formadas por líneas: cuadrados, triángulos, etc. La tercera capa aprende a reconocer algo más complejo, como una combinación de un triángulo y un cuadrado , etc. Y este tipo de aprendizaje incremental (jerárquico) continúa. La razón para aprender esta representación de nivel superior es que con cada capa está introduciendo una no linealidad adicional. No creo que podamos aprender una representación diferente usando una red más amplia, a diferencia de una red más profunda.

Por lo tanto, dado que no podemos alcanzar el mínimo global, tratamos de refinar la solución subóptima mediante la introducción de capas, lo que no es posible, hasta donde puedo ver, al ampliar la red.

Ley 23: Concentra tus fuerzas 😉