¿Cuál es la ventaja de combinar la red neuronal convolucional (CNN) y la red neuronal recurrente (RNN)?

Hay muchas propiedades interesantes que se pueden obtener al combinar redes neuronales convolucionales (CNN) y redes neuronales recurrentes (RNN). Esa combinación hace uso de lo mejor de ambos mundos, el mundo espacial y el temporal.

Sin embargo, los RNN están completos, lo que significa que en realidad pueden aprender cualquier función computacional. Esto significa que, en teoría, no necesitamos combinar CNN con RNN para hacer las cosas, solo necesitamos el RNN. Pero, como de costumbre, en realidad necesitamos módulos especializados para señales específicas. Los CNN son buenos para tratar datos relacionados con el espacio, mientras que los RNN son buenos para las señales temporales, es solo el teorema de no almuerzo gratis en juego aquí.

Por lo tanto, los problemas en los que se requiere un par CNN-RNN son cuando se trata de:

  1. Asignación de entradas de secuencia espacial a clases de salida estáticas.
  2. Asignación de entradas espaciales estáticas a salidas de secuencia (subtítulos de voz o texto)

En el primer caso, podemos tener una entrada de video y necesitamos clasificar ese video en una categoría de clase estática. Una aplicación particular sería el reconocimiento de la acción humana, a partir de una secuencia de cuadros de video que necesitamos para identificar la acción humana, como caminar, sentarse, saltar o correr. Podría ser posible que dicho sistema identifique los delitos en curso en tiempo real y cosas como la detección de disturbios solo a través de videos.

En el segundo caso, el par CNN-RNN puede alimentarse, por ejemplo, de una imagen estática, pero generar una salida de secuencia como voz o texto que describe el contenido de esa imagen estática. En aplicaciones como el subtitulado automático de imágenes [1], dichos sistemas necesitan describir el contenido de una imagen generando subtítulos de imagen.

En ambos casos, la CNN actúa como el detector de características entrenables para la señal espacial. Aprende potentes características convolucionales que operan en una entrada espacial estática (marco) mientras el RNN recibe una secuencia de tales representaciones de alto nivel para generar una descripción del contenido o mapear a alguna clase estática de salidas. En el subtitulado de imágenes, normalmente hay un mecanismo de atención incorporado para permitir que el sistema atienda ciertas partes de la imagen mientras genera los subtítulos.

En realidad, Facebook está trabajando en sistemas que pueden describir el contenido de la imagen a las personas ciegas que utilizan estos pares CNN-RNN. Aunque también es posible realizar subtítulos de imágenes con solo una arquitectura de red neuronal totalmente avanzada con un uso inteligente de las convoluciones en el tiempo. El uso de convoluciones en el tiempo no es propenso a los problemas de gradiente de explosión / desaparición encontrados en los RNN de vainilla.

En lugar de utilizar un RNN de vainilla típico, también se pueden utilizar redes de memoria a largo plazo a corto plazo (LSTM) o de unidad recurrente cerrada (GRU) para eliminar el problema de las dependencias a largo plazo. Lo que hace que los pares CNN-LSTM o CNN-GRU sean extremadamente poderosos al tratar con señales espacio-temporales.

También tenemos las llamadas redes neuronales convolucionales recurrentes (RCNN) que tienen conexiones recurrentes directamente en los núcleos mismos. Aunque este sistema puede sufrir la incapacidad de lidiar con dependencias a largo plazo al igual que los RNN de vainilla.

Espero que esto ayude.

Notas al pie

[1] Show and Tell: subtítulos de imágenes abiertos de origen en TensorFlow

Hay 2 conceptos principales en juego aquí:

  1. Las CNN capturan información jerárquica (y en el caso de imágenes, espacial).
  1. Básicamente, lo que hace una CNN es mirar una región de la entrada a la vez, asignarla a alguna salida y repetir este proceso para cada región de la entrada.
  2. Al poner una serie de convoluciones una tras otra, conseguimos que nuestra red aprenda jerárquicamente: cada capa posterior es una convolución de los valores de la capa anterior.
  3. Esto significa que las capas posteriores en una CNN capturan características de nivel progresivamente más alto.
  4. Cuando hace esto sobre una imagen, la red aprende información espacial combinando píxeles en bordes, bordes en formas, figuras, etc.
  • Las redes neuronales recurrentes capturan el orden temporal, es decir, el orden en el tiempo.
    1. Una de mis arquitecturas RNN favoritas es la LSTM. Es una técnica muy inteligente que decide selectivamente qué “recordar” en una secuencia y qué “olvidar”. Es decir, qué entrada afectará el estado de la neurona y cuál no.
    2. Usando esta “memoria”, la neurona puede aprender una secuencia y predecir valores posteriores.

    Así que ahora está bastante claro qué ventaja obtendrá cuando combine CNN y RNN en su modelo. Su modelo será capaz de aprender información espacial y temporal en la entrada. Esto podría ser útil para aprender incrustaciones para tareas de reconocimiento de video donde la información temporal también es útil aparte de los datos espaciales.

    Dato interesante: esta es también la justificación dada por los autores de la participación ganadora en la competencia EmotiW 2016. Utilizan una red híbrida de CNN-RNN y redes convolucionales 3D, combinadas con una tubería de procesamiento de audio para lograr los mejores resultados.

    Del resumen del artículo:

    En este artículo, presentamos un sistema de reconocimiento de emociones basado en video presentado al Desafío EmotiW 2016 … Específicamente, RNN toma características de apariencia extraídas por la red neuronal convolucional (CNN) sobre cuadros de video individuales como entrada y codifica el movimiento más tarde, mientras que C3D modela la apariencia y movimiento de video simultáneamente.

    Si desea saber cómo C3D “modela la apariencia y el movimiento del video simultáneamente”, o si desea discutir algo escrito en el documento o en mi respuesta, simplemente deje un comentario a continuación.

    Gracias por el A2A Ahmed; Esta es una gran pregunta.

    Normalmente, las arquitecturas CNN-RNN funcionan muy bien en tareas donde:

    1. Los datos sin procesar están bien representados por una jerarquía (profunda) de características, que se pueden modelar utilizando una CNN.
    2. Y los datos con los que estamos trabajando tienen propiedades temporales que también queremos modelar, de ahí el uso de un RNN.

    Uno de los aspectos más poderosos del uso de una CNN es la capacidad de modelar localidades espaciales de manera efectiva utilizando pesos compartidos para los filtros. En el caso de las imágenes, esto significa que no necesitamos aprender, por ejemplo, un detector de bordes para cada “parche” de la imagen. En cambio, solo tenemos un detector de borde único (o múltiple) que escanea toda la imagen utilizando el operador de convolución.

    Y resulta que la aplicación de esta operación es bastante general, por lo que podemos usarla para datos además de imágenes. Por ejemplo, una aplicación está en la comprensión del lenguaje a nivel de caracteres. Si intentamos optimizar directamente un RNN a nivel de caracteres, nos encontraremos rápidamente con problemas al tratar de capturar las dependencias a largo plazo en las secuencias de entrada. Este problema debería ser bastante obvio si intenta resolver un ejemplo en su cabeza.

    En cambio, lo que queremos hacer es trabajar con representaciones de alto nivel dentro de la RNN, para que las dependencias a largo plazo sean más fáciles de capturar. En particular, podemos interpretar una secuencia de caracteres como una imagen 1-D, lo que significa que podemos aplicar aquí la misma técnica de convolución que hicimos para las imágenes. Tenga en cuenta que nuestras nociones de localidad espacial aún se conservan, pero es con respecto a la ubicación de los personajes. Cada uno de estos detectores de funciones podría usarse para buscar cosas como sufijos comunes (por ejemplo, “-ing”, “-ed”) o conectivos de uso común (por ejemplo, “como”, “me gusta”, “y”) para “acortar” La duración de la dependencia a través del tiempo. Esto hace que el problema de capturar las correlaciones a largo plazo entre los caracteres sea significativamente más fácil en el RNN.

    Para un tratamiento más profundo sobre los méritos de los modelos CNN-RNN en la comprensión del lenguaje, consulte este documento: [1602.02410] Explorando los límites del modelado del lenguaje

    Las otras respuestas son geniales. Agregaré dos aplicaciones más. Tal vez pueda agregar algo de diversidad al mostrarle por qué estas capas se han combinado recientemente en el campo de la genética reguladora. El otro es la síntesis de audio para videos mudos.

    Prediciendo propiedades de secuencia genética

    Las arquitecturas híbridas CNN y RNN han comenzado a usarse en biología computacional para las tareas de predicción y regresión donde la entrada es ADN. Un ejemplo moderno de tal arquitectura es la arquitectura DanQ. [1] La arquitectura DanQ toma como entrada una secuencia de ADN de longitud fija y predice 919 propiedades binarias del ADN. Si está interesado en la biología, estas tareas incluyen predecir si la secuencia es un sitio de hipersensibilidad a DNasa en varios tipos de células, si ciertos factores de transcripción se unen a la secuencia en varios tipos de células y si la secuencia tiene una marca de histona en varios tipos de células .

    Recuerde de la biología que las secuencias de ADN están formadas por secuencias de cuatro caracteres: A (adenina), C (citosina), G (guanina) y T (timina). Para DanQ, la secuencia de ADN está codificada en una matriz, que se puede ver en la parte inferior de la imagen.

    La arquitectura DanQ tiene una capa de convolución. Las capas de convolución son sensibles a los motivos del ADN, estas son solo pequeñas secciones de ADN que han demostrado ser útiles en trabajos previos en este tipo de tareas genéticas.

    A continuación, una capa recurrente identifica dependencias a largo plazo entre los motivos. La capa recurrente es bidireccional ya que la dirección de la secuencia no debería importar para las tareas.

    La razón detrás del uso de convolución y las capas recurrentes es la siguiente hipótesis que estoy citando del resumen de los artículos

    En el modelo DanQ, la capa de convolución captura motivos regulatorios, mientras que la capa recurrente captura dependencias a largo plazo entre los motivos para aprender una ‘gramática’ reguladora para mejorar las predicciones.

    En resumen, puede pensar en las capas convolucionales que detectan “palabras biológicas” y la capa recurrente que las une en una “oración biológica” que luego se alimenta a una capa densa como características predictivas.

    El modelo DanQ se basa en el modelo DeepSEA que era similar pero sin ninguna capa recurrente [2]. Las 919 tareas de predicción binaria disponibles tienen un desequilibrio significativo de ejemplos positivos y negativos, por lo que los modelos se compararon usando auPRC (área bajo curva de recuperación de precisión) que es muy adecuado para evaluar el rendimiento algorítmico en tareas de predicción binaria con desequilibrio de clase [3].

    Esta figura muestra el auPRC para ambos modelos que demuestra la superioridad del modelo DanQ sobre el modelo DeepSEA. Las dos subtramas superiores muestran las curvas para dos de las tareas (así como una línea base del modelo de regresión lineal). DanQ obtiene mayor auPRC en el 97.6% de las tareas.

    Sonidos visualmente indicados

    Vi esto en la serie de dos minutos en papel de Károly Zsolnai-Fehér en youtube. Le recomiendo que revise todo su canal. Aquí hay un episodio que discute un artículo que hace uso de la red neuronal recurrente convolucional. Una red está capacitada para sintetizar pistas de audio realistas para videos. Las capas convolucionales codifican el video y las capas recurrentes toman las características codificadas para producir características de sonido. Aquí está el modelo:

    Notas al pie

    [1] DanQ: una red neuronal profunda convolucional y recurrente híbrida para cuantificar la función de las secuencias de ADN.

    [2] http://www.nature.com/nmeth/jour

    [3] http://pages.cs.wisc.edu/~boyd/a

    Una vez abrí un libro del Dr. Seuss para leerle a mi hija justo después de estudiar IA. Fue así:

    Un pez. Dos peces. Blowfish Pez azul

    Inmediatamente, llegué a la conclusión de que el Dr. Seuss tenía la intención de entrenar la Red neuronal convolucional de mi hija, así como su Red neuronal recurrente en una sola línea. Porque para reconocer un pez, necesitas CNN. Pero para predecir la rima, necesitas RNN.

    La cognición humana implica ambos: patrones a través del espacio rastreados mientras se hacen predicciones a través del tiempo. CNN y RNN trabajan juntos para crear la narrativa en una historia inteligente.

    ConvNets puede operar sobre cualquier entrada de tensor, pero no tiene memoria y no puede manejar secuencias (a menos que se ingrese como un tensor 1D).

    Por el contrario, los RNN pueden operar sobre secuencias. Cuando necesite procesar una secuencia tensora, más comúnmente un video, esta combinación funcionará bien.

    Sin embargo, tenga en cuenta que puede reemplazar el RNN con un 1D ConvNet (es decir, un “cuasi RNN”) que realizará una función similar. Esto es ventajoso debido al paralelismo que hace que las cosas sean más manejables computacionalmente.

    CNN se usa principalmente en datos de imágenes (aunque hay otras aplicaciones para ello) y RNN se usa para el aprendizaje de secuencias.

    Una secuencia de imágenes relacionadas = video. Entonces, una respuesta general sería para las tareas de procesamiento de video.

    Pero la combinación de dos redes de este tipo, que tienen dinámicas muy complejas por sí mismas, puede mostrar algunos rasgos hermosos que podrían aplicarse para otras tareas. Dado que el uso del aprendizaje profundo sigue siendo una tarea empírica, la única forma de saberlo sería probar las cosas.

    CNN: datos espaciales como imágenes.

    RNN – datos temporales como voz, audio

    RNN + CNN – datos espaciales y temporales como ….. VIDEO

    Traté de hacerlo lo más simple posible.