Por lo general, los RNN se usan para PNL, ¿cuándo tienen sentido los CNN en PNL?

Esta es una buena pregunta, en general tienen sentido cuando la tarea se trata más de mapear de un espacio a otro, en lugar de tratar de inferir alguna estructura interna imprecisa mal definida.

La traducción automática es un gran ejemplo de ese mapeo donde los espacios son palabras y frases en los idiomas respectivos. Es cierto que el problema no es todo el mapeo, pero también hay un estado interno relacionado con los contextos que los mejores sistemas de traducción automática tienen que manejar.

Sin embargo, se puede suponer que estos contextos son de tamaño limitado y pueden ser manejados por capas de convoluciones. La suposición de tamaño limitado es clave ya que desbloquea convoluciones apiladas ventajas potenciales tales como la eliminación de gradientes que desaparecen, lo cual es problemático en las RNN.

Otro ejemplo de mapeo sería el resumen de texto donde el contexto es nuevamente bastante limitado.

Los RNN realmente tratan sobre estructuras internas implícitas muy grandes que son difíciles de pensar. Esta es la razón por la cual el artículo seminal de Andrej Karpathy, La irrazonable efectividad de las redes neuronales recurrentes, ha resonado tanto como pudo demostrar una efectividad aparentemente sorprendente en áreas tan diversas como ensayos de Paul Graham, artículos de Wikipedia, Shakespeare y el código fuente de Linux. No estaba claro, y aún no está claro, qué estaban aprendiendo y capturando exactamente los RNN, pero las impresiones superficiales de los resultados sintetizados fueron muy buenas.

Esto fue seguido por otra aparente sorpresa, que los resultados iniciales que comenzaban con palabras podían casi reproducirse solo de los caracteres. Esto suena aún más extravagante ya que los RNN a nivel de personaje tienen que aprender no solo el estilo del corpus, por así decirlo, sino también cosas como la sintaxis y la gramática desde cero cada vez. Los resultados experimentales mostraron que es bastante factible.

En resumen, la sabiduría convencional es que los RNN deben usarse cuando el contexto es más rico y hay más información de estado que debe capturarse. Esta propuesta ha sido cuestionada por las CNN con la afirmación de que la información de estado finito de alcance limitado puede ser manejada de manera más eficiente por múltiples capas de convolución.

Creo que ambas son ciertas, y uno no debería optar por las RNN por el simple hecho de hacerlo, sino que deberían probarse CNN profundas más eficientes en situaciones de contexto limitado. Pero para los mapeos implícitos más complejos donde los intervalos de información de contexto y estado son mucho más grandes, los RNN son la mejor y, en este punto, casi la única herramienta.

Ya han sido utilizados! En el campo de la PNL, generalmente tratamos con oraciones, palabras, caracteres y similares, convertimos el texto en una incrustación usando Word2Vec o Glove {From Stanford NLP} y pasamos esta secuencia a un RNN. De la misma manera, se puede pasar un vector de Fila 1 Dimensional con la misma incrustación de palabras a través de una Red Neural Convolucional 1-D que podría realizar la operación de convolución y extraer características que podrían usarse para la clasificación de texto, sentimiento, etc. seguiría un proceso similar a las tareas de Clasificación de imágenes, pero en lugar de usar valores de píxeles, la CNN se propagaría de nuevo sobre las incrustaciones de palabras.

Los siguientes documentos pueden ayudarlo a explorar el área más a fondo:

https://arxiv.org/pdf/1502.01710 … Yann LeCunn et., al

Esta publicación de blog tiene recursos muy útiles, aunque antiguos:

Comprender las redes neuronales convolucionales para PNL

Espero que esto ayude.
Salud.

Además de las excelentes respuestas proporcionadas aquí, solo agregaría una característica importante de CNN que lo convierte en un candidato ideal para la PNL. Las arquitecturas de CNN se hicieron populares ya que preservan la información espacial. Para dar un ejemplo simple, cuando aplanamos una imagen (digamos 28px por 28px) en un vector unidimensional de 784 valores, la información espacial sobre cómo se organizó la imagen se pierde (por información espacial quiero decir algo así como cómo los píxeles se organizan en la imagen original: el 29º píxel está por debajo del 1º píxel, el 30º píxel está por debajo del 2º píxel, etc.). Pero esta información es crucial para reconocer una parte de la imagen.

Al llegar a la PNL, si observamos cuidadosamente, las palabras en las oraciones ocurren en una secuencia (aunque es una dimensión) y se argumenta que las arquitecturas como CNN que preservan esta información topológica pueden hacerlo mejor que las RNN. Sin embargo, a los RNN les va mejor modelando unidades en secuencia. Por lo tanto, hay una investigación en curso para comparar ambos (Más detalles e ideas sobre el desempeño de CNN vs RNN – https://arxiv.org/pdf/1702.01923

Como alguien ya ha señalado, las arquitecturas de CNN ya se están volviendo populares, especialmente en las áreas donde tales características invariantes de posición dominan, por ejemplo: tarea de reconocimiento de frase clave como en alguna detección de sentimientos, coincidencia de preguntas y respuestas, etc.

Espero que esto aclare!

Considere las siguientes dos tareas:

Tarea 1: análisis de opinión: se le realiza una revisión y desea predecir la calificación de la revisión.
Tarea 2 – Traducción automática: traduce una oración de algún idioma de origen al idioma de destino.

Ahora, la diferencia básica en términos de aplicabilidad de CNN y RNN es que los CNN (como la mayoría de los otros algoritmos de aprendizaje automático) toman una entrada de tamaño fijo y generan salidas de tamaño fijo. Los RNN, por otro lado, pueden manejar longitudes arbitrarias de entrada / salida, pero normalmente requerirían mucha más información en comparación con los CNN porque son modelos más complejos.

Usando esta información, vemos que la tarea 2 no puede ser realizada por CNN, ya que las entradas y salidas no son de longitud fija. Entonces RNN para la tarea 2.
Sin embargo, para la tarea 1, puede usar un RNN si tiene muchos datos. Pero también puede usar CNN: fije la longitud de la entrada y ajuste la longitud de entrada truncando o rellenando la entrada real. Tenga en cuenta que esto no afectará mucho el sentimiento de la revisión, por lo que este es un enfoque razonable.

¡De hecho, el consenso emergente es que incluso para la PNL, las CNN superan a las RNN!

Aquí hay un artículo que salió recientemente, realizando aprendizaje de secuencia a secuencia utilizando una arquitectura convolucional:

https://arxiv.org/pdf/1705.03122

Las precisiones para las tareas de traducción de idiomas no solo son superiores a esta arquitectura en comparación con las arquitecturas basadas en RNN (LSTM) de vanguardia, sino que también son “vergonzosamente” paralelizables en el momento del entrenamiento, porque no tiene el proceso de entrenamiento secuencial de desenrollar el RNN a tiempo más.

Estoy seguro de que veremos esta idea de las incorporaciones de posición explotadas para otras tareas de PNL en el futuro. No hay vuelta atrás de esto!

¡Entonces, diré que use CNN en lugar de RNN en todas partes!

More Interesting

¿Cuáles son algunos buenos ejemplos donde el agrupamiento se usa como método para la extracción de características?

El aprendizaje profundo hará que los humanos sean innecesarios para qué trabajos.

¿Por qué una red neuronal no es propensa al sobreajuste a pesar de tener tantos parámetros?

¿Cuáles son algunas preguntas abiertas relacionadas con bandidos multibrazos?

¿Cuáles son las 8 principales cosas para las que las startups utilizan el aprendizaje automático?

¿Cómo compararías hacer un doctorado en ML (principalmente aprendizaje profundo) en Duke, UC Irvine y Georgia Tech?

¿Es realmente posible comenzar una carrera seria de IA / ML con el objetivo final de trabajar en un lugar como OpenAI, Google o DeepMind a través del autoestudio?

Ahora mismo estoy aprendiendo desarrollo web, pero no creo que me sea muy útil. ¿Debo aprender el aprendizaje automático o el desarrollo de software?

¿Cuáles son algunas posibles aplicaciones interesantes del aprendizaje automático?

¿Qué tipo de habilidades de codificación se requieren para trabajar en el aprendizaje automático en empresas como Facebook, Quora, Google, Microsoft?

¿Cuál es la diferencia entre la deserción y la normalización de lotes?

Cómo entrenar un modelo word2vec como GoogleNews-vectors-negative300.bin para francés

¿Cuáles son los mejores cursos de ciencia de datos en Udemy?

En el análisis de sentimiento binario, ¿es razonable tratar el texto de baja confianza como una tercera clase neutral?

Cómo aprender a convertirse en un experto en aprendizaje profundo