30 votos

Perceptrón multicapa frente a red neuronal profunda

Se trata de una cuestión terminológica. A veces veo que la gente se refiere a las redes neuronales profundas como "perceptrones multicapa", ¿por qué? Un perceptrón, me enseñaron, es un clasificador (o regresor) de una sola capa con un umbral de salida binario que utiliza una forma específica de entrenar los pesos (no back-prop). Si la salida del perceptrón no coincide con la salida objetivo, sumamos o restamos el vector de entrada a los pesos (dependiendo de si el perceptrón dio un falso positivo o un falso negativo). Es un algoritmo de aprendizaje automático bastante primitivo. El procedimiento de entrenamiento no parece generalizarse a un caso de multicapas (al menos no sin modificación). Una red neuronal profunda se entrena mediante backprop, que utiliza la regla de la cadena para propagar los gradientes de la función de coste a través de todos los pesos de la red.

Entonces, la pregunta es. ¿Es un "perceptrón multicapa" lo mismo que una "red neuronal profunda"? Si es así, ¿por qué se utiliza esta terminología? Parece que es innecesariamente confusa. Además, asumiendo que la terminología es en cierto modo intercambiable, sólo he visto la terminología "perceptrón multicapa" cuando se refiere a una red feed-forward formada por capas totalmente conectadas (sin capas convolucionales ni conexiones recurrentes). ¿Cómo de amplia es esta terminología? ¿Se utilizaría el término "perceptrón multicapa" para referirse, por ejemplo, a la red Inception? ¿Y para una red recurrente con módulos LSTM utilizada en PNL?

29voto

DJCasey Puntos 16

Se puede considerar que el perceptrón multicapa (MLP) es un subconjunto de las redes neuronales profundas (DNN), pero a menudo se utilizan indistintamente en la literatura.

La suposición de que los perceptrones se nombran en función de su regla de aprendizaje es incorrecta. La clásica "regla de actualización del perceptrón" es una de las formas que se pueden utilizar para entrenarlo. El rechazo temprano de las redes neuronales se debió a esta misma razón, ya que la regla de actualización del perceptrón era propensa a la desaparición y explosión de gradientes, lo que hacía imposible entrenar redes con más de una capa.

El uso de la retropropagación en el entrenamiento de redes llevó a utilizar funciones de activación de aplastamiento alternativas como tanh y sigmoide .

Así que, para responder a las preguntas,

la pregunta es. ¿Es un "perceptrón multicapa" lo mismo que una "red neuronal profunda"?

MLP es un subconjunto de DNN. Mientras que las DNN pueden tener bucles y las MLP son siempre feed-forward, es decir,

Un perceptrón multicapa (MLP) es un gráfico acíclico finito

¿por qué se utiliza esta terminología?

Mucha de la terminología utilizada en la literatura científica tiene que ver con las tendencias de la época y se ha puesto de moda.

¿Cómo de amplia es esta terminología? ¿Se utilizaría el término "perceptrón multicapa" para referirse, por ejemplo, a la red Inception? ¿Y para una red recurrente con módulos LSTM utilizada en PNL?

Así que, sí inception, red convolucional, resnet etc son todos MLP porque no hay ciclo entre las conexiones. Incluso si hay un atajo de conexiones que se salta las capas, siempre y cuando sea en dirección hacia adelante, se puede llamar un perceptrón multicapa. Pero las LSTM, o las RNN de vainilla, etc., tienen conexiones cíclicas, por lo que no pueden llamarse MLP, sino que son un subconjunto de las DNN.

Esta es mi forma de entender las cosas. Por favor, corríjanme si me equivoco.

Enlaces de referencia:

https://cs.stackexchange.com/questions/53521/what-is-difference-between-multilayer-perceptron-and-multilayer-neural-network

https://en.wikipedia.org/wiki/Multilayer_perceptron

https://en.wikipedia.org/wiki/Perceptron

http://ml.informatik.uni-freiburg.de/former/_media/teaching/ss10/05_mlps.printer.pdf

11voto

OmaL Puntos 106

Buena pregunta: ten en cuenta que en el campo del Deep Learning las cosas no siempre están tan bien cortadas y claramente definidas como en el Aprendizaje Estadístico (también porque hay mucho hype), así que no esperes encontrar definiciones tan rigurosas como en Matemáticas. De todos modos, el perceptrón multicapa es una arquitectura específica de red neuronal de avance, en la que se apilan múltiples capas totalmente conectadas (por tanto, no hay capas de convolución), donde las funciones de activación de las unidades ocultas suelen ser una sigmoide o una tanh. Los nodos de la capa de salida suelen tener funciones de activación softmax (para la clasificación) o lineales (para la regresión). Las arquitecturas MLP típicas no son "profundas", es decir, no tenemos muchas capas ocultas. Suelen tener, por ejemplo, de 1 a 5 capas ocultas. Estas redes neuronales eran comunes en los años 80, y se entrenan por retropropagación.

Ahora bien, con Red Neuronal Profunda nos referimos a una red que tiene muchas capas (19, 22, 152,...incluso > 1200 Aunque hay que reconocer que eso es muy extremo). Tenga en cuenta que

  • no hemos especificado la arquitectura de la red, por lo que podría ser feed-forward, recurrente, etc.
  • no hemos especificado la naturaleza de las conexiones, por lo que podríamos tener capas totalmente conectadas, capas convolucionales, de recurrencia, etc.
  • "muchas" capas, hay que reconocerlo, es no una definición rigurosa.

Entonces, ¿por qué sigue teniendo sentido hablar de DNNs (aparte de por razones de hype)? Porque cuando empiezas a apilar más y más capas, en realidad necesitas utilizar nuevas técnicas (nuevas funciones de activación, nuevos tipos de capas, nuevas estrategias de optimización... incluso nuevo hardware) para poder 1) entrenar tu modelo y 2) hacer que generalice en nuevos casos. Por ejemplo, supongamos que tomamos un MLP clásico para clasificación de 10 clases, funciones de activación tanh, capas de entrada y oculta con 32 unidades cada una y capa de salida con 10 unidades softmax $\Rightarrow 32\times32+32\times10 = 1344$ pesos. Se añaden 10 capas $\Rightarrow 11584$ pesos. Se trata de una NN minúscula para los estándares actuales. Sin embargo, cuando se entrena con un conjunto de datos suficientemente grande, se comprueba que la velocidad de convergencia se ha ralentizado enormemente. Esto no sólo se debe al mayor número de pesos, sino a la problema del gradiente de fuga - La retropropagación calcula el gradiente de la función de pérdida multiplicando los errores a través de cada capa, y estos pequeños números se vuelven exponencialmente más pequeños cuantas más capas se añaden. Por lo tanto, los errores no se propagan (o se propagan muy lentamente) por la red, y parece que el error en el conjunto de entrenamiento deja de disminuir con las épocas de entrenamiento.

Y ésta era una red pequeña: la red neuronal convolucional profunda llamada AlexNet tenía 5 capas pero 60 millones de pesos, ¡y se considera pequeña para los estándares actuales! Cuando tienes tantos pesos, cualquier conjunto de datos es "pequeño" - incluso ImageNet, un conjunto de datos de imágenes utilizado para la clasificación, tiene "sólo" alrededor de 1 millón de imágenes, por lo que el riesgo de sobreajuste es mucho mayor que para una red superficial.

Así, el aprendizaje profundo puede entenderse como el conjunto de herramientas que se utilizan en la práctica para entrenar redes neuronales con un gran número de capas y pesos, consiguiendo un bajo error de generalización. Esta tarea plantea más desafíos que para las redes más pequeñas. Definitivamente puedes construir un Perceptrón Multicapa Profundo y entrenarlo - pero (aparte del hecho de que no es la arquitectura óptima para muchas tareas en las que se utiliza el Aprendizaje Profundo hoy en día) probablemente utilizarás herramientas que son diferentes de las que se utilizaban cuando las redes solían ser "poco profundas". Por ejemplo, es posible que prefieras las unidades de activación ReLU a las sigmoides o tanh, porque suavizan el problema del gradiente de fuga.

0voto

ayc Puntos 161

Quiero añadir que según lo que he leído de muchos posts :

Hay muchas arquitecturas diferentes a través de DNN como : Los MLP (Perceptrón Multicapa) y las CNN (Redes Neuronales Convolucionales) son diferentes tipos de DNN diseñadas para resolver diferentes tipos de problemas.

MLP es el tipo clásico de NN que se utiliza para :

  • Conjuntos de datos tabulares (contienen datos en formato de columna como en una tabla de base de datos ).
  • Clasificación / Regresión , predicción pbs.

Los MLP son muy y pueden usarse generalmente para inclinar el mapeo de las entradas a las salidas.

Pero puede probar con otro formato, como los datos de imagen, como punto de comparación de la línea base para confirmar que otros modelos son más adecuados.

CNNs diseñado para asignar datos de imagen a una variable de salida. se utiliza para :

  • Datos de la imagen,
  • clasificación/previsión de regresión pbs,

Funciona bien con datos que tienen Relaciones espaciales .

Tradicionalmente se usa para datos 2D pero puede usarse para datos 1D, las CNN alcanzan el estado del arte en algunos pbs 1D.

Primero hay que "definir claramente" qué pretende resolver como problema (con qué tipo de datos trabajar, problema de clasificación/regresión...etc) para saber qué tipo de arquitectura utilizar.

Puedes consultar esos enlaces que tanto me han servido para entender mejor esos conceptos :).

Espero que este añadido sea útil :p.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X