No he visto la pregunta precisamente en estos términos, y es por eso que hago una nueva pregunta.
Lo que me interesa saber no es la definición de una red neuronal, sino comprender la diferencia real con una red neuronal profunda.
Para más contexto: sé qué es una red neuronal y cómo funciona la propagación hacia atrás. Sé que un DNN debe tener varias capas ocultas. Sin embargo, hace 10 años en la clase aprendí que tener varias capas o una capa (sin contar las capas de entrada y salida) era equivalente en términos de las funciones que una red neuronal es capaz de representar (ver el teorema de aproximación universal de Cybenko ), y que tener más capas hicieron que sea más complejo de analizar sin aumentar el rendimiento. Obviamente, ese ya no es el caso.
Supongo, tal vez erróneamente, que las diferencias están en términos de algoritmo de entrenamiento y propiedades en lugar de estructura, y por lo tanto , realmente agradecería si la respuesta pudiera subrayar las razones que hicieron posible el cambio a DNN (por ejemplo, pruebas matemáticas o jugar al azar con redes ?) y deseable (por ejemplo, ¿velocidad de convergencia?)
fuente
Respuestas:
Comencemos con una triviliaty: la red neuronal profunda es simplemente una red de avance con muchas capas ocultas.
Esto es más o menos todo lo que hay que decir sobre la definición. Las redes neuronales pueden ser recurrentes o de avance; los de avance no tienen ningún bucle en su gráfico y se pueden organizar en capas. Si hay "muchas" capas, entonces decimos que la red es profunda .
¿ Cuántas capas debe tener una red para calificar como profunda? No hay una respuesta definitiva a esto (es un poco como preguntar cuántos granos hacen un montón ), pero generalmente tener dos o más capas ocultas cuenta como profundo. En contraste, una red con una sola capa oculta se llama convencionalmente "superficial". Sospecho que habrá algo de inflación aquí, y en diez años la gente podría pensar que cualquier cosa con menos de, digamos, diez capas es poco profunda y adecuada solo para ejercicios de jardín de infantes. Informalmente, "profundo" sugiere que la red es difícil de manejar.
Aquí hay una ilustración, adaptada de aquí :
Pero la verdadera pregunta que hace es, por supuesto, ¿por qué sería beneficioso tener muchas capas?
Creo que la respuesta algo sorprendente es que nadie lo sabe realmente. Hay algunas explicaciones comunes que revisaré brevemente a continuación, pero ninguna de ellas ha demostrado ser convincentemente cierta, y uno ni siquiera puede estar seguro de que tener muchas capas sea realmente beneficioso.
Digo que esto es sorprendente, porque el aprendizaje profundo es enormemente popular, está rompiendo todos los récords (desde el reconocimiento de imágenes, pasando por Go, hasta la traducción automática, etc.) cada año, la industria lo está utilizando, etc., etc. Todavía no estamos muy seguros de por qué funciona tan bien.
Baso mi discusión en el libro de Aprendizaje profundo de Goodfellow, Bengio y Courville, que salió en 2017 y es ampliamente considerado como el libro sobre aprendizaje profundo. (Está disponible gratuitamente en línea). La sección relevante es 6.4.1 Propiedades y profundidad de aproximación universal .
Tu escribiste eso
Debe referirse al llamado teorema de aproximación universal , probado por Cybenko en 1989 y generalizado por varias personas en la década de 1990. Básicamente dice que una red neuronal poco profunda (con 1 capa oculta) puede aproximarse a cualquier función, es decir, en principio puede aprender cualquier cosa . Esto es cierto para varias funciones de activación no lineal, incluidas las unidades lineales rectificadas que la mayoría de las redes neuronales están utilizando hoy (el libro de texto hace referencia a Leshno et al. 1993 para este resultado).
Si es así, ¿por qué todos usan redes profundas?
Bueno, una respuesta ingenua es que funcionan mejor. Aquí hay una figura del libro Deep Learning que muestra que ayuda tener más capas en una tarea en particular, pero a menudo se observa el mismo fenómeno en varias tareas y dominios:
Sabemos que una red superficial podría funcionar tan bien como las más profundas. Pero no lo hace; y generalmente no lo hacen. La pregunta es ¿por qué? Respuestas posibles:
El libro Deep Learning argumenta a favor de los puntos # 1 y # 3. Primero, argumenta que el número de unidades en una red poco profunda crece exponencialmente con la complejidad de la tarea. Entonces, para ser útil, una red superficial puede necesitar ser muy grande; posiblemente mucho más grande que una red profunda. Esto se basa en una serie de documentos que prueban que las redes poco profundas necesitarían en algunos casos exponencialmente muchas neuronas; pero si, por ejemplo, la clasificación MNIST o Go playing son tales casos, no está realmente claro. Segundo, el libro dice esto:
Creo que el "consenso" actual es que es una combinación de los puntos # 1 y # 3: para las tareas del mundo real, la arquitectura profunda a menudo es beneficiosa y la arquitectura superficial sería ineficiente y requeriría muchas más neuronas para el mismo rendimiento.
Pero está lejos de ser probado. Considere, por ejemplo, Zagoruyko y Komodakis, 2016, Wide Residual Networks . Las redes residuales con más de 150 capas aparecieron en 2015 y ganaron varios concursos de reconocimiento de imágenes. Este fue un gran éxito y parecía un argumento convincente a favor de la profundidad; Aquí hay una figura de una presentación del primer autor en el documento de red residual (tenga en cuenta que el tiempo va confusamente a la izquierda aquí):
Pero el documento vinculado anteriormente muestra que una red residual "amplia" con "solo" 16 capas puede superar a las "profundas" con más de 150 capas. Si esto es cierto, entonces todo el punto de la figura anterior se rompe.
O considere Ba y Caruana, 2014, ¿Las redes profundas realmente necesitan ser profundas? :
Si es cierto, esto significaría que la explicación correcta es más bien mi viñeta # 2, y no la # 1 o # 3.
Como dije, nadie lo sabe con certeza todavía.
Observaciones finales
La cantidad de los progresos realizados en el aprendizaje profundo en los últimos ~ 10 años es realmente sorprendente, pero la mayor parte de este progreso se logró mediante ensayo y error, y que aún carecen de conocimientos básicos sobre lo que exactamente hace que las redes profundas para trabajar tan bien. Incluso la lista de cosas que las personas consideran cruciales para establecer una red profunda efectiva parece cambiar cada dos años.
El renacimiento del aprendizaje profundo comenzó en 2006 cuando Geoffrey Hinton (que había trabajado en redes neuronales durante más de 20 años sin mucho interés de nadie) publicó un par de documentos innovadores que ofrecen una forma efectiva de entrenar redes profundas ( documento de ciencia , documento de cálculo neuronal ) . El truco consistía en utilizar un pre-entrenamiento sin supervisión antes de comenzar el descenso del gradiente. Estos documentos revolucionaron el campo, y durante un par de años la gente pensó que la capacitación previa sin supervisión era la clave.
Luego, en 2010, Martens demostró que las redes neuronales profundas se pueden entrenar con métodos de segundo orden (los llamados métodos sin arpillera) y pueden superar a las redes entrenadas con preentrenamiento: aprendizaje profundo a través de la optimización sin arpillera . Luego, en 2013, Sutskever et al. demostró que el descenso de gradiente estocástico con algunos trucos muy inteligentes puede superar a los métodos libres de arpillera: sobre la importancia de la inicialización y el impulso en el aprendizaje profundo . Además, alrededor de 2010, las personas se dieron cuenta de que el uso de unidades lineales rectificadas en lugar de unidades sigmoideas hace una gran diferencia para el descenso de gradiente. La deserción escolar apareció en 2014. Las redes residuales aparecieron en 2015. La gente sigue buscando formas cada vez más efectivas de entrenar redes profundas ylo que parecía una idea clave hace 10 años a menudo se considera una molestia hoy en día. Todo eso se debe en gran medida al ensayo y error, y hay poca comprensión de lo que hace que algunas cosas funcionen tan bien y otras no. Entrenar redes profundas es como una gran bolsa de trucos. Los trucos exitosos suelen ser racionalizados post factum.
Ni siquiera sabemos por qué las redes profundas alcanzan una meseta de rendimiento; solo 10 años la gente solía culpar a los mínimos locales, pero el pensamiento actual es que este no es el punto (cuando el rendimiento se estabiliza, los gradientes tienden a permanecer grandes). Esta es una pregunta tan básica sobre redes profundas, y que ni siquiera sabe este .
Actualización: Este es más o menos el tema de la charla NIPS 2017 de Ali Rahimi sobre aprendizaje automático como alquimia: https://www.youtube.com/watch?v=Qi1Yry33TQE .
[Esta respuesta fue completamente reescrita en abril de 2017, por lo que algunos de los comentarios a continuación ya no se aplican].
fuente
Buena respuesta hasta ahora, aunque hay un par de cosas que nadie mencionó aquí, aquí está mi 0.02 $
Solo responderé en forma de una historia, debería hacer las cosas más divertidas y claras. No hay tldr aquí. En el proceso, deberías poder entender cuál es la diferencia.
Hay varias razones por las que los DNN se activaron cuando lo hicieron (las estrellas tuvieron que alinearse, como todas las cosas similares, es solo cuestión de lugar correcto, momento correcto, etc.).
Una razón es la disponibilidad de datos, muchos datos (datos etiquetados). Si desea poder generalizar y aprender algo como 'priors genéricos' o 'priors universales' (también conocidos como los bloques de construcción básicos que pueden reutilizarse entre tareas / aplicaciones), entonces necesita una gran cantidad de datos. Y los datos salvajes, debo agregar, no son conjuntos de datos estériles cuidadosamente registrados en el laboratorio con iluminación controlada y todo. Mechanical Turk hizo eso (etiquetado) posible.
En segundo lugar, la posibilidad de entrenar redes más grandes más rápido usando GPU hizo que la experimentación fuera más rápida. Las unidades ReLU también hicieron las cosas computacionalmente más rápidas y proporcionaron su regularización, ya que necesitaba usar más unidades en una capa para poder comprimir la misma información, ya que las capas ahora eran más escasas, por lo que también fue agradable con la deserción. Además, ayudaron con un problema importante que ocurre cuando se apilan varias capas. Más sobre eso más tarde. Varios trucos múltiples que mejoraron el rendimiento. Como el uso de mini lotes (que de hecho es perjudicial para el error final) o convoluciones (que en realidad no capturan tanta varianza como los campos receptivos locales) pero son computacionalmente más rápidos.
Mientras tanto, las personas debatían si les gustaban más flacos o más regordetes, más pequeños o más altos, con o sin pecas, etc. y el método newtons, finalmente se dieron cuenta de que no hay almuerzo gratis. Las redes estaban eructando.
Lo que ralentizó las cosas fue el problema del gradiente de fuga . La gente decía: ¡vaya, eso está muy lejos, hombre! En pocas palabras, significa que fue difícil ajustar el error en las capas más cercanas a las entradas. A medida que agrega más capas en el pastel, se vuelve demasiado tambaleante. No puede propagar hacia atrás un error significativo a las primeras capas. Cuantas más capas, peor se puso. Gorrón.
Algunas personas descubrieron que usar la entropía cruzada como una función de pérdida (bueno, nuevamente, clasificación y reconocimiento de imágenes) proporciona algún tipo de regularización y ayuda a que la red no se sature y, a su vez, el gradiente no pudo ocultarlo bien.
Lo que también hizo posible las cosas fue el pre-entrenamiento por capa usando métodos no supervisados. Básicamente, toma un montón de codificadores automáticos y aprende cada vez menos representaciones abstractas a medida que aumenta la relación de compresión. Los pesos de estas redes se utilizaron para inicializar la versión supervisada. Esto resolvió el problema del gradiente de fuga de otra manera: ya está comenzando el entrenamiento supervisado desde una posición de inicio mucho mejor. Entonces, todas las otras redes se levantaron y comenzaron a rebelarse. Pero las redes necesitaban supervisión de todos modos, de lo contrario era imposible mantener quietos los grandes datos.
Ahora, para la última parte, que finalmente conduce a una respuesta que es demasiado compleja para resumir: ¿por qué más capas y no solo una? ¡Porque podemos! y porque el contexto y los descriptores de características invariantes. y piscinas.
Aquí hay un ejemplo: tiene un conjunto de datos de imágenes, ¿cómo va a entrenar un plan NN utilizando esos datos? Bueno, ingenuamente, tomas digamos cada fila y la concatenas en un vector largo y esa es tu entrada. ¿Qué aprendes? Bueno, algunas funciones difusas sin sentido que podrían no parecerse a nada, debido a los muchos tipos de variaciones que contienen los objetos en la imagen y no puede distinguir entre cosas relevantes e irrelevantes. Y en algún momento la red necesita olvidarse para poder volver a aprender cosas nuevas. Entonces está el problema de capacidad. Esta es una dinámica más no lineal, pero la intuición es que necesita aumentar el número de neuronas para poder incluir más información en su red.
Entonces, el punto es que si solo ingresas la imagen como una sola pieza, agregar capas adicionales no es demasiado para ti, ya que no puedes aprender abstracciones , lo cual es muy importante. Por lo tanto, hacer las cosas de manera integral no funciona tan bien, a menos que esté haciendo cosas más simples con la red, como centrarse en un tipo específico de objeto, por lo que se limita a una clase y elige algunas propiedades globales como objetivo de clasificación.
Entonces, ¿qué hay para hacer? Mire el borde de su pantalla e intente leer este texto. ¿Problema? Por estúpido que parezca, debes mirar lo que estás leyendo. De lo contrario, es muy difuso / no hay suficiente resolución / granularidad. Llamemos al área de enfoque el campo receptivo. Las redes también deben poder concentrarse. Básicamente, en lugar de usar toda la imagen como entrada, mueve una ventana deslizante a lo largo de la imagen y luego la usa como entrada a la red (un poco menos estocástica que lo que hacen los humanos). Ahora también tiene la oportunidad de capturar correlaciones entre píxeles y, por lo tanto, objetos, y también puede distinguir entre un gato dormido sentado en un sofá y un puenting boca abajo. Aseado, la fe en la humanidad restaurada. La red puede aprender abstracciones locales en una imagen en múltiples niveles. La red aprende filtros,
Entonces, para resumir: campos receptivos / convoluciones, inicialización no supervisada, unidades lineales rectificadas, abandono u otros métodos de regularización. Si se toma muy en serio esto, le recomiendo que eche un vistazo al Aprendizaje profundo de Schmidhuber en redes neuronales: una descripción general aquí está la url para la preimpresión http://arxiv.org/abs/1404.7828
Y recuerda: gran aprendizaje, datos profundos. Palabra.
fuente
En términos simples, la principal diferencia con las redes neuronales clásicas es que tienen capas mucho más ocultas.
La idea es agregar etiquetas a las capas para hacer varias capas de abstracción:
Por ejemplo, una red neuronal profunda para el reconocimiento de objetos :
Puede encontrar una buena explicación en esta pregunta en Quora .
Y, si está interesado en este tema, le recomendaría que eche un vistazo a este libro .
fuente
También me ha confundido un poco al principio la diferencia entre las redes neuronales (NN) y las redes neuronales profundas (DNN), sin embargo, la 'profundidad' se refiere solo al número de parámetros y capas, desafortunadamente. Puede tomarlo como una especie de cambio de marca bajo la llamada 'Mafia canadiense'.
Hace varios años, también tenía Neural Networks como parte de una clase e hicimos reconocimiento de dígitos, aproximación de onda y aplicaciones similares mediante el uso de NN, que tenía múltiples capas y salidas ocultas y todo ese jazz que tienen los DNN. Sin embargo, lo que no teníamos entonces era potencia informática.
La razón que hizo posible y deseable el cambio a DNN son los avances en el desarrollo de hardware. En pocas palabras, ahora podemos calcular más, más rápido y más paralelo (DNN en las GPU), mientras que antes, el tiempo era el cuello de botella para las NN.
Como se hace referencia en la página de Wikipedia para Deep Learning , la parte 'profunda' se refiere principalmente a que las características interactúen de manera no lineal en varias capas, por lo tanto, realizan la extracción y transformación de características. Esto también se hizo en NN estándar, sin embargo a menor escala.
En la misma página, aquí tiene la definición 'Una red neuronal profunda (DNN) es una red neuronal artificial (ANN) con múltiples capas ocultas de unidades entre las capas de entrada y salida'.
fuente
Hasta donde yo sé, lo que hoy se llama Red Neural Profunda (DNN) no tiene nada fundamental o filosóficamente diferente de la antigua Red Neural estándar (NN). Aunque, en teoría, se puede aproximar un NN arbitrario utilizando un NN superficial con solo una capa oculta, sin embargo, esto no significa que las dos redes tendrán un rendimiento similar cuando se entrenan con el mismo algoritmo y datos de entrenamiento. De hecho, existe un creciente interés en la formación de redes poco profundas que funcionan de manera similar a las redes profundas. Sin embargo, la forma en que se hace esto es entrenando primero una red profunda y luego entrenando la red superficial para imitarla salida final (es decir, la salida de la penúltima capa) de la red profunda. Verán, lo que hace que las arquitecturas profundas sean favorables es que las técnicas de entrenamiento actuales (propagación hacia atrás) funcionan mejor cuando las neuronas se disponen en una estructura jerárquica.
Otra pregunta que puede hacerse es: por qué las redes neuronales (DNN en particular) se hicieron tan populares de repente. A mi entender, los ingredientes mágicos que hicieron que los DNN fueran tan populares recientemente son los siguientes:
A. Conjuntos de datos mejorados y capacidades de procesamiento de datos
1. Los conjuntos de datos a gran escala con millones de imágenes diversas estuvieron disponibles
2. La implementación rápida de GPU se puso a disposición del público
B. Algoritmos de entrenamiento y arquitecturas de red mejorados.
1. Unidades lineales rectificadas (ReLU) en lugar de sigmoide o tanh
2. Las arquitecturas de red profundas evolucionaron a lo largo de los años.
A-1) Hasta hace muy poco, al menos en Computer Vision, no podíamos entrenar modelos en millones de imágenes etiquetadas; simplemente porque no existían conjuntos de datos etiquetados de ese tamaño. Resulta que, además del número de imágenes, la granularidad del conjunto de etiquetas también es un factor crucial en el éxito de los DNN (ver Figura 8 en este documento , de Azizpour et al.).
A-2) Se ha realizado un gran esfuerzo de ingeniería para posibilitar la formación de DNN que funcionan bien en la práctica, sobre todo, el advenimiento de las implementaciones de GPU. Una de las primeras implementaciones exitosas de GPN de DNN, se ejecuta en dos GPU paralelas; Sin embargo, lleva aproximadamente una semana entrenar un DNN en 1.2 millones de imágenes de 1000 categorías usando GPU de alta gama (ver este documento, por Krizhevsky et al.).
B-1) El uso de unidades lineales rectificadas simples (ReLU) en lugar de las funciones sigmoide y tanh es probablemente el mayor bloque de construcción para hacer posible la formación de DNN. Tenga en cuenta que las funciones sigmoide y tanh tienen casi cero gradiente en casi todas partes, dependiendo de qué tan rápido transiten del nivel de activación bajo al alto; en el caso extremo, cuando la transición es repentina, obtenemos una función de paso que tiene pendiente cero en todas partes, excepto en un punto donde ocurre la transición.
B-2) La historia de cómo se desarrollaron las arquitecturas de redes neuronales a lo largo de los años me recuerda cómo la evolución cambia la estructura de un organismo en la naturaleza. El intercambio de parámetros (por ejemplo, en capas convolucionales), la regularización de abandono, la inicialización, el cronograma de la tasa de aprendizaje, la agrupación espacial, el submuestreo en las capas más profundas y muchos otros trucos que ahora se consideran estándar en la capacitación, se desarrollaron, evolucionaron y terminaron a medida años para hacer posible la formación de las redes profundas de la forma en que es hoy.
fuente
La diferencia entre un NN "profundo" y un NN estándar es puramente cualitativa: no hay una definición de lo que significa "profundo". "Profundo" puede significar cualquier cosa, desde las arquitecturas extremadamente sofisticadas que utilizan Google, Facebook y compañía que tienen 50-80 o incluso más capas, hasta arquitecturas de 2 capas ocultas (4 capas en total). No me sorprendería si pudieras encontrar artículos que afirmen que aprendes en profundidad con una sola capa oculta, porque "profundo" no significa mucho.
"Red neuronal" es también una palabra que no tiene un significado muy preciso. Cubre un conjunto extremadamente grande de modelos, desde máquinas de boltzman aleatorias (que son gráficos no dirigidos) hasta arquitecturas avanzadas con diversas funciones de activación. La mayoría de los NN se entrenarán con backprop, pero no tiene por qué ser así, incluso los algoritmos de entrenamiento no son muy homogéneos.
En general, el aprendizaje profundo, las NN profundas y las NN se han convertido en palabras generales que capturan una multitud de enfoques.
Para buenas referencias introductorias sobre "lo que cambió": Aprendizaje profundo de las representaciones: Mirando hacia adelante , Bengio, 2013 es una buena revisión + perspectiva para el futuro. También vea ¿Las redes profundas realmente necesitan ser profundas? Ba & Caruana, 2013, que ilustran que ser profundo podría no ser útil para la representación sino para el aprendizaje.
fuente
Para ampliar la respuesta de David Gasquez, una de las principales diferencias entre las redes neuronales profundas y las redes neuronales tradicionales es que no solo utilizamos la propagación hacia atrás para redes neuronales profundas.
¿Por qué? Debido a que la retropropagación entrena capas posteriores de manera más eficiente que entrena capas anteriores, a medida que avanza cada vez más temprano en la red, los errores se vuelven más pequeños y más difusos. Entonces, una red de diez capas básicamente tendrá siete capas de pesos aleatorios seguidos de tres capas de pesos ajustados, y funcionará tan bien como una red de tres capas. Mira aquí para más.
Entonces, el avance conceptual es tratar los problemas separados (las capas etiquetadas) como problemas separados: si primero intentamos resolver el problema de construir una primera capa genéricamente buena, y luego intentamos resolver el problema de construir una segunda capa genéricamente buena, eventualmente tendremos un espacio de características profundas que podemos alimentar a nuestro problema real.
fuente
NN:
DNN:
El cambio a DNN se debe a tres avances independientes que ocurrieron en 2006.
Con respecto a los teoremas sobre NN, al que alude la pregunta es:
fuente
Creo que debería retroceder y ver que esto ha creado un resurgimiento en la IA superficial, por ejemplo, la bolsa de palabras para el análisis de sentimientos y otras aplicaciones de lenguaje y la bolsa visual de palabras fue el enfoque principal para el reconocimiento de imágenes antes de DNN. Nadie dice que la bolsa de palabras es un verdadero modelo de lenguaje, pero es una solución de ingeniería efectiva. Por lo tanto, diría que DNN es una mejor 'bolsa visual de palabras' - vea, por ejemplo, Szegedy et al. 2013 Propiedades intrigantes de redes neuronales y Nguyen et al. Las redes neuronales profundas se engañan fácilmente: predicciones de alta confianza para imágenes irreconocibles donde está claro que no se están aprendiendo estructuras de orden superior, etc. (o lo que se reclama para DNN).
fuente
Fuente: Arno Candel
fuente