¿Podemos mejorar el rendimiento de las redes neuronales simplemente aumentando su profundidad?

Explicaré el uso de la visión por computadora como ejemplo.

Digamos que tienes una foto y estás tratando de darle sentido.

Puede mirarlo con ojos de perro, verlo en escala de grises y probablemente un poco borroso / distorsionado. Eso no ayuda mucho, pero ves algunas características útiles. Esos son los métodos de CV de la vieja escuela y las redes neuronales poco profundas.

Puedes mirarlo con ojos humanos. Líneas continuas, colores, alta resolución, mucho mejor que la vieja escuela. Esto es lo que obtienes cuando juntas varias capas de conv con agrupación y otras cosas elegantes. Las enormes ganancias inmediatas proporcionadas por esto hicieron que esas redes fueran tan populares y crearon la esperanza de obtener resultados aún mejores … si apila más capas.

Y luego tienes los ojos de un camarón Mantis, el instrumento óptico más sorprendente del reino animal. No puedo describir exactamente lo que verías, pero la ciencia dice que los colores serían salvajes. En términos de complejidad, esa es su típica red neuronal súper profunda. Las líneas son aún más sólidas y los detalles son aún más precisos.

¿Eso ayuda? No, no lo hace, porque para dar sentido a la imagen, debe inferir el contexto, realizar una segmentación mental de la imagen y aplicar su conocimiento externo sobre los objetos que ha reconocido. Más capas = mejores ojos, pero no piensas con los ojos, después de que se vuelven lo suficientemente buenos, depende de tu cerebro tomar decisiones.

En principio, ayudarán “más capas”. Pero no solo haciendo que una arquitectura existente sea más gorda. La intercambiabilidad y la redundancia en el cerebro humano funcionan bien solo para el cerebro humano, las computadoras sobresalen en modularidad y funciones claramente definidas. Por lo tanto, combinar diferentes arquitecturas bien diseñadas para sus tareas específicas de manera adecuada es el camino correcto, al menos para los sistemas de aprendizaje estadístico tal como los conocemos hoy.

La complejidad, especialmente la computacional, es una especia costosa y deberíamos ser frugales con ella, agregando solo cuando sea absolutamente necesario.

Hablaré sobre redes neuronales convolucionales

El equipo de VGG proporciona dos versiones de 16 y 19 capas ponderadas con un buen rendimiento y una arquitectura simple como en la siguiente figura en C y D

su documento está disponible en https://arxiv.org/pdf/1409.1556v

La investigación del equipo de Microsoft (MSRA) demostró que la red más profunda proporciona un mayor error como en la figura

Entonces, proporcionaron la red residual para permitir redes más profundas. su modelo ganador en el concurso ILSRVC 2015 tiene 152 capas

Provocaron que las redes residuales más profundas funcionen mejor que las redes simples

Aquí hay una comparación entre el rendimiento de su modelo y otros modelos

puede leer más detalles de su artículo [1512.03385] Aprendizaje residual profundo para el reconocimiento de imágenes

Aumentar la profundidad no necesariamente conduce a un mejor rendimiento, porque es mucho más difícil de entrenar y el modelo puede ser más fácil de sobreajustar, y así sucesivamente. Se propone un aprendizaje residual profundo para este propósito. Es decir, con el mecanismo residual, profundizar puede mejorar mucho más en comparación con la misma estructura de red pero sin el mecanismo residual.

El problema se puede ver desde una perspectiva diferente. Cada estructura de red tiene su propio poder de representación. Con más capas y una mejor estrategia de entrenamiento, puedes acercarte al límite de potencia. Por ejemplo, si medimos el poder de representación como un valor dentro de (0, 100). La red tipo A tiene un límite teórico de potencia 80. Entrenas una red tipo A con 20 capas con SGD regular y logras un modelo final con potencia 60. Luego, agregas más capas, digamos 50 en total, y entrenas con el esquema de Adam . Obtiene un modelo con potencia 65. Finalmente, agrega un mecanismo residual a la red tipo A de 50 capas y obtiene un modelo con potencia 75, que está muy cerca de su límite. Más tarde, las personas inventan una red tipo B, cuyo límite de potencia de representación es 99. Simplemente se entrena con 20 capas y SGD normal, es posible que ya obtenga un modelo con potencia 80, que puede vencer fácilmente a la red tpye-A.

La respuesta es “no necesariamente”, por razones que varios otros encuestados han mencionado, pero en realidad se aplican de manera mucho más amplia que solo a las redes neuronales.

Las redes neuronales constituyen una clase específica de modelos matemáticos paramétricos . Es decir, son construcciones que aceptan entradas y generan salidas basadas en esa entrada, y tienen una “función de costo” asociada, que mide qué tan cerca está una salida de la salida “correcta” para la entrada dada. Son “paramétricos” porque el comportamiento del modelo depende de una serie de constantes o parámetros numéricos; en el caso de las redes neuronales, estos son (generalmente) los pesos en las conexiones de red.

El despliegue exitoso de modelos paramétricos implica encontrar conjuntos de parámetros que, en promedio, hacen un buen trabajo al minimizar la función de costos, es decir, producir resultados correctos o casi correctos. Aquí “en promedio” significa que hacen un buen trabajo en la mayoría de las entradas que el modelo verá en la práctica. Entonces, ¿cómo encontramos estos buenos parámetros? Una respuesta es que “ajustamos” los parámetros a una muestra de entradas para las cuales sabemos cuáles son las salidas correctas; intentamos encontrar parámetros que produzcan una salida (casi) correcta sobre este conjunto de entradas de muestra (para redes neuronales, esto se describe como “entrenamiento” de la red). Para muchas clases de modelos paramétricos hay algoritmos matemáticos que lo lograrán, por ejemplo, la propagación inversa , como se usa comúnmente en muchas redes neuronales, o “mínimos cuadrados ordinarios” para modelos predictivos lineales.

Pero, por supuesto, no estamos interesados ​​en generar respuestas correctas para las entradas de muestra, ya las conocemos. Queremos que el modelo genere la salida correcta “fuera de la muestra”, es decir, para entradas que no ha visto antes. Y aquí está el problema: por un lado, puede ser que incluso para los datos de la muestra (entrenamiento), el modelo no pueda generar resultados (casi) correctos. Esto suele indicar que nuestro modelo no es lo suficientemente complejo como para modelar los datos. Necesitamos un modelo “más grande”, uno con más parámetros (una red neuronal más profunda o más amplia, tal vez). Decimos que el modelo está “subadaptando” los datos. Por otro lado, podríamos encontrar que, si bien el modelo ajustado hace un buen trabajo al generar salidas correctas sobre los datos en muestra, falla miserablemente “fuera de muestra”, es decir, en entradas que no ha visto antes. El modelo no puede generalizarse a datos nunca vistos anteriormente. Decimos que el modelo está “sobreajustado”, y esto es con frecuencia una indicación de que nuestro modelo es demasiado complejo; tenemos demasiados parámetros, y el modelo se ha adaptado a las peculiaridades de los datos de entrada que no son típicos de una entrada más general.

Entonces, ¿cómo elegimos la complejidad de un modelo para alcanzar un punto óptimo entre el sobreequipamiento y la falta de equipamiento? Esto se llama “selección de modelo”, y en general es un problema difícil . Para algunas clases de modelos, existen métodos matemáticos sofisticados que pueden ayudar (estos se denominan “Criterio de información de Akaike” o “Criterio de información bayesiano”, y con frecuencia no llegan a un acuerdo sobre la respuesta). Pero para modelos más sofisticados (en particular no lineales), como las redes neuronales típicas, estos métodos tienden a ser difíciles o imposibles de aplicar. Existen otras técnicas para la selección de modelos basadas solo en datos de muestra; estos tienden a involucrar subconjuntos de ajuste y probar el modelo contra otros subconjuntos de los datos de la muestra (esencialmente, los datos de la muestra se dividen, repetida y aleatoriamente, en subconjuntos dentro y fuera de la muestra). Pero estas técnicas son extremadamente costosas computacionalmente.

En la práctica, hay una cierta cantidad de vudú involucrado; Por lo tanto, los expertos en redes neuronales desarrollan una “sensación” de la complejidad óptima de una red para una tarea determinada, combinada con cantidades juiciosas de prueba y error.

Si está seguro de que su modelo actual es insuficiente (¡y tiene suficientes datos!). La respuesta simple es sí . ¡De otra manera no! 🙂

Andrew Ng dio una maravillosa conferencia sobre cómo “depurar” algoritmos de aprendizaje profundo. Mi respuesta se puede ver en la parte superior de este diagrama a continuación (¡el crédito va para Andrew!).

Hay una pequeña pero importante advertencia para mi respuesta. Ir más profundo tiene rendimientos decrecientes. Si nos fijamos en cómo las personas están ganando competencias hoy, más profundo tiene sus límites. Los investigadores comienzan a observar el contexto y la complejidad general del modelo (GBD-Net y ResNext, que obtuvieron el primer y segundo lugar en imagenet son ejemplos de esta tendencia).

Según mi experiencia, aumentar el número de capas mejora el rendimiento en los casos en que los datos son escasos e identificar objetos jerárquicos en una red convolucional. Por ejemplo, en la capa convolucional inferior aprende objetos más pequeños como una línea, un arco, y cuando se mueve más arriba, puede aprender objetos complejos como la cara y la nariz, etc. El aumento del número de neuronas en una capa oculta no siempre mejora el rendimiento,

Agregamos más capas para obtener más rendimiento. Pero, hay un punto de rendimientos decrecientes, es decir, agregar toneladas de capas termina no siendo demasiado útil (~ .1% de aumento). Se necesitan ResNets para propagar gradientes; de lo contrario, terminaremos con problemas cuando profundicemos tanto. El truco es, entonces, equilibrar entre cuánto rendimiento queremos y cuán eficiente computacionalmente queremos que sea.

A veces, pero no siempre, en cualquier medida. Cosas que pueden suceder:

  • Sobreajuste
  • Los gradientes inevitablemente caen más allá de cierta profundidad con las NN tradicionales
  • Problemas con el rendimiento finito o la complejidad predecible que ya está maximizada por la red

More Interesting

¿Cuáles son los principales problemas abiertos en la visión por computadora?

¿Cuáles son algunas de las principales conferencias sobre procesamiento del lenguaje natural para un investigador potencial?

¿Cómo funcionan los juegos con una gran cantidad de artículos de IA, mapas y coleccionables? Por ejemplo, AOE. Puede que no sean visibles en la pantalla, pero seguirán consumiendo recursos.

¿Qué pasaría si estallara una guerra entre humanos y robots en el año 2100?

¿Qué significará la presidencia de Trump para la forma en que EE. UU. Se enfrenta al aumento de la toma de empleos por parte de AI / robot?

¿Qué 5 trabajos muy específicos serán asumidos en último lugar por la inteligencia artificial?

¿Qué es el "aprendizaje de refuerzo disperso"?

¿El correo electrónico de resumen de Quora es personalizado y, de ser así, qué técnicas de aprendizaje automático se utilizan para crear estos correos electrónicos?

¿Cuál es la diferencia entre el aprendizaje en línea y el aprendizaje fuera de línea en la red neuronal?

¿Qué tipo de avances en hardware necesitan tener lugar para acercarnos a la Singularidad?

¿Cómo se crean los grandes juegos como FIFA 14?

Puedo usar una red neuronal y ejecutarla sobre un problema. ¿Cómo lo optimizo y mejoro los resultados?

¿En qué se diferencia un ingeniero de software de aprendizaje automático con más de 3 años de experiencia de un doctorado sin experiencia en ML para resolver problemas a escala de Google? ¿Qué ventajas tiene la persona con experiencia? ¿Qué diferencias en el resultado podemos esperar?

¿Qué le falta a la comunidad de aprendizaje automático?

¿Cómo se usa el modelado bayesiano para la inteligencia artificial?