RNN vs CNN a un alto nivel

53

He estado pensando en las redes neuronales recurrentes (RNN) y sus variedades y las redes neuronales convolucionales (CNN) y sus variedades.

¿Sería justo decir estos dos puntos:

  • Use CNN para dividir un componente (como una imagen) en subcomponentes (como un objeto en una imagen, como el contorno del objeto en la imagen, etc.)
  • Use RNN para crear combinaciones de subcomponentes (subtítulos de imágenes, generación de texto, traducción de idiomas, etc.)

Agradecería si alguien quiere señalar cualquier inexactitud en estas declaraciones. Mi objetivo aquí es obtener una base más clara sobre los usos de CNN y RNN.

Larry Freeman
fuente

Respuestas:

42

Una CNN aprenderá a reconocer patrones en el espacio. Entonces, como usted dice, una CNN aprenderá a reconocer componentes de una imagen (por ejemplo, líneas, curvas, etc.) y luego aprenderá a combinar estos componentes para reconocer estructuras más grandes (por ejemplo, caras, objetos, etc.).

Se podría decir, de manera muy general, que un RNN aprenderá de manera similar a reconocer patrones a lo largo del tiempo. Por lo tanto, un RNN que esté capacitado para traducir texto podría aprender que "perro" debe traducirse de manera diferente si va precedido de la palabra "caliente".

Sin embargo, el mecanismo por el cual los dos tipos de NN representan estos patrones es diferente. En el caso de una CNN, está buscando los mismos patrones en todos los diferentes subcampos de la imagen. En el caso de un RNN, está (en el caso más simple) alimentando las capas ocultas del paso anterior como una entrada adicional en el siguiente paso. Si bien el RNN acumula memoria en este proceso, no está buscando los mismos patrones en diferentes segmentos de tiempo de la misma manera que un CNN está buscando los mismos patrones en diferentes regiones del espacio.

También debo tener en cuenta que cuando digo "tiempo" y "espacio" aquí, no debería tomarse demasiado literalmente. Podría ejecutar un RNN en una sola imagen para el subtitulado de imágenes, por ejemplo, y el significado de "tiempo" sería simplemente el orden en que se procesan las diferentes partes de la imagen. Por lo tanto, los objetos procesados ​​inicialmente informarán los subtítulos de los objetos procesados ​​posteriormente.

J. O'Brien Antognini
fuente
3
Puede obtener una buena intuición de las diferencias del modelo RNN en karpathy.github.io/assets/rnn/diags.jpeg , un gráfico muy copiado. Las CNN están junto con MLP y otros modelos no recursivos, ya que solo implementan el caso modelo individual.
Neil Slater
@NeilSlater Incluso conozco el artículo original de esta imagen, pero nunca pude extraer nada útil de ella. Por favor, ¿podrías elaborar lo que aprendiste de la imagen?
Hola Ángel
2
@ Hi-Angel: la imagen visualiza posibles relaciones entre secuencias y entidades individuales que un modelo puede asignar. Si ya comprende bien las permutaciones, es posible que no obtenga nada de eso. La razón por la que la imagen aparece en el artículo es porque demuestra la relativa flexibilidad de los RNN: un RNN se puede aplicar a todos los diferentes tipos de problemas mostrados (por ejemplo, se puede usar en problemas de traducción de idiomas que coinciden con el cuarto elemento), mientras que un la red de avance solo se aplica a problemas que coinciden con la primera imagen.
Neil Slater
23

Las diferencias entre CNN y RNN son las siguientes:

CNN:

  1. CNN toma una entrada de tamaño fijo y genera salidas de tamaño fijo.

  2. CNN es un tipo de red neuronal artificial alimentada hacia adelante: son variaciones de perceptrones multicapa que están diseñados para usar cantidades mínimas de preprocesamiento.

  3. Las CNN utilizan un patrón de conectividad entre sus neuronas inspirado en la organización de la corteza visual animal, cuyas neuronas individuales están dispuestas de tal manera que responden a las regiones superpuestas que recubren el campo visual.

  4. Las CNN son ideales para el procesamiento de imágenes y videos.

RNN:

  1. RNN puede manejar longitudes arbitrarias de entrada / salida.

  2. RNN, a diferencia de las redes neuronales de alimentación directa, puede usar su memoria interna para procesar secuencias arbitrarias de entradas.

  3. Las redes neuronales recurrentes usan información de series de tiempo (es decir, lo que dije la última vez afectará lo que hablaré después).

  4. Los RNN son ideales para el análisis de texto y voz.

Biranchi
fuente
Las CNN sin capas densas pueden tomar entradas de tamaño arbitrario.
Mikael Rousson el
1

Creo que las dos declaraciones no son correctas, ya que la CNN no divide el componente en subcomponentes, sino que utiliza ponderaciones compartidas en todos los subcomponentes superpuestos (campos receptivos) para encontrar el mismo patrón. No es un algoritmo de divide y vencerás.

En general, los CNN tienden a extraer características locales e invariantes de posición (independientemente de su posición), y los RNN tienden a encontrar patrones diferentes a lo largo del tiempo, incluso si están lejos.

Por ejemplo, en el caso de aplicar ambos al lenguaje natural, los CNN son buenos para extraer características locales e invariantes de posición, pero no captura dependencias semánticas de largo alcance. Solo considera frases clave locales.

Entonces, cuando el resultado está determinado por la oración completa o una dependencia semántica de largo alcance, CNN no es efectivo, como se muestra en este documento, donde los autores compararon ambas arquitecturas en las tareas de PNL.

Firas Omrane
fuente