La comprensión de máquinas es una tarea muy interesante pero desafiante tanto en el procesamiento del lenguaje natural (PNL) como en la investigación de inteligencia artificial (IA). Existen varios enfoques para las tareas de procesamiento del lenguaje natural. Con los avances recientes en algoritmos de aprendizaje profundo, hardware y API fáciles de usar como TensorFlow, algunas tareas se han vuelto factibles hasta cierta precisión. Este artículo contiene información sobre las implementaciones de TensorFlow de varios modelos de aprendizaje profundo, con un enfoque en los problemas del procesamiento del lenguaje natural. El propósito de este artículo de proyecto es ayudar a la máquina a comprender el significado de las oraciones, lo que mejora la eficiencia de la traducción automática, y a interactuar con los sistemas informáticos para obtener información útil de ellos.
Comprender el procesamiento del lenguaje natural:
Nuestra capacidad para evaluar la relación entre oraciones es esencial para abordar una variedad de desafíos del lenguaje natural, como el resumen de texto, la extracción de información y la traducción automática. Este desafío se formaliza como la tarea de inferencia del lenguaje natural de Recognizing Textual Entailment (RTE), que implica clasificar la relación entre dos oraciones como una de vinculación, contradicción o neutralidad. Por ejemplo, la premisa «Garfield es un gato», naturalmente implica la afirmación «Garfield tiene patas», contradice la afirmación «Garfield es un pastor alemán» y es neutral a la afirmación «A Garfield le gusta dormir».
El procesamiento del lenguaje natural es la capacidad de un programa de computadora para comprender el lenguaje humano tal como se habla. NLP es un componente de la inteligencia artificial que se ocupa de las interacciones entre las computadoras y los lenguajes humanos en lo que respecta al procesamiento y análisis de grandes cantidades de datos de lenguaje natural. El procesamiento del lenguaje natural puede realizar varias tareas diferentes mediante el procesamiento de datos naturales a través de diferentes medios eficientes. Estas tareas podrían incluir:
- Responder preguntas sobre cualquier cosa (lo que pueden hacer Siri*, Alexa* y Cortana*).
- Análisis de sentimiento (determinar si la actitud es positiva, negativa o neutral).
- Asignaciones de imagen a texto (creación de subtítulos usando una imagen de entrada).
- Traducción automática (traducción de texto a diferentes idiomas).
- Reconocimiento de voz
- Etiquetado de parte del discurso (POS).
- Identificación de la entidad
El enfoque tradicional de la PNL implicaba mucho conocimiento del dominio de la propia lingüística.
El aprendizaje profundo en su nivel más básico tiene que ver con el aprendizaje de representación. Con las redes neuronales convolucionales (CNN), la composición de diferentes filtros se utiliza para clasificar objetos en categorías. Con un enfoque similar, este artículo crea representaciones de palabras a través de grandes conjuntos de datos.
IA conversacional: funciones de procesamiento del lenguaje natural
- Procesamiento del lenguaje natural (PNL)
- Minería de texto (TM)
- Lingüística Computacional (CL)
- Aprendizaje automático en datos de texto (ML en texto)
- Enfoques de aprendizaje profundo para datos de texto (DL en texto)
- Comprensión del lenguaje natural (NLU)
- Generación de lenguaje natural (NLG)
La IA conversacional ha experimentado varios avances sorprendentes en los últimos años, con mejoras significativas en el reconocimiento automático de voz (ASR), texto a voz (TTS) y reconocimiento de intenciones, así como el crecimiento significativo de los dispositivos de asistente de voz como Amazon Echo y Google. Hogar.
El uso de técnicas de aprendizaje profundo puede funcionar de manera eficiente en problemas relacionados con la PNL. Este artículo utiliza algoritmos de propagación inversa y descenso de gradiente estocástico (SGD)4 en los modelos NLP.
La pérdida depende de cada elemento del conjunto de entrenamiento, especialmente cuando es intensivo en computación, lo que en el caso de los problemas de NLP es cierto ya que el conjunto de datos es grande. Como el descenso de gradiente es iterativo, debe realizarse a través de muchos pasos, lo que significa revisar los datos cientos y miles de veces. Estime la pérdida tomando la pérdida promedio de un pequeño conjunto de datos aleatorio elegido del conjunto de datos más grande. Luego calcule la derivada para esa muestra y suponga que la derivada es la dirección correcta para usar el descenso de gradiente. Incluso podría aumentar la pérdida, no reducirla. Compensa haciéndolo muchas veces, dando pasos muy pequeños cada vez. Cada paso es más barato de calcular y, en general, producirá un mejor rendimiento. El algoritmo SGD es el núcleo del aprendizaje profundo.
Vectores de palabras:
Las palabras deben representarse como entrada para los modelos de aprendizaje automático, una forma matemática de hacerlo es usar vectores. Se estima que hay 13 millones de palabras en el idioma inglés, pero muchas de ellas están relacionadas.
Buscar un espacio vectorial N-dimensional (donde N << 13 millones) que sea suficiente para codificar toda la semántica en nuestro lenguaje. Para hacer esto, es necesario que haya una comprensión de la similitud y la diferencia entre las palabras. El concepto de vectores y distancias entre ellos (coseno, euclidiano, etc.) se puede explotar para encontrar similitudes y diferencias entre palabras.
¿Cómo representamos el significado de las palabras?
Si se usan vectores separados para todos los +13 millones de palabras en el vocabulario en inglés, pueden ocurrir varios problemas. Primero, habrá vectores grandes con muchos ‘ceros’ y un ‘uno’ (en diferentes posiciones que representan una palabra diferente). Esto también se conoce como codificación one-hot. En segundo lugar, al buscar frases como «hoteles en Nueva Jersey» en Google, se esperan resultados relacionados con «motel», «alojamiento», «alojamiento» en Nueva Jersey. Y si se usa la codificación one-hot, estas palabras no tienen una noción natural de similitud. Idealmente, los productos punto (ya que estamos tratando con vectores) de palabras sinónimas/similares estarían cerca de uno de los resultados esperados.
Word2vec8
es un grupo de modelos que ayuda a derivar relaciones entre una palabra y sus palabras contextuales. Comenzando con una pequeña inicialización aleatoria de vectores de palabras, el modelo predictivo aprende los vectores minimizando la función de pérdida. En Word2vec, esto sucede con una red neuronal feed-forward y técnicas de optimización como el algoritmo SGD. También hay modelos basados en conteo que hacen una array de conteo de co-ocurrencia de palabras en el corpus; con una gran array con una fila para cada una de las “palabras” y columnas para el “contexto”. El número de «contextos» es, por supuesto, grande, ya que su tamaño es esencialmente combinatorio. Para superar el problema del tamaño, se puede aplicar la descomposición de valores singulares a la array, reduciendo las dimensiones de la array y reteniendo la máxima información.
Software y hardware:
el lenguaje de programación que se utiliza es Python 3.5.2 con Intel Optimization for TensorFlow como marco. Para fines de capacitación y computación, se utilizó Intel AI DevCloud con tecnología de procesadores Intel Xeon Scalable. Intel AI DevCloud puede proporcionar un gran aumento de rendimiento de la CPU host para la aplicación y el caso de uso correctos debido a que tiene más de 50 núcleos y su propia memoria, interconexión y sistema operativo.
Modelos de Entrenamiento para PNL: Langmod_nn y Memn2n-master
Modelo Langmod_nn:
el modelo Langmod_nn6 construye una red neuronal del modelo de bigrama directo de tres capas que consiste en una capa de incrustación, una capa oculta y una capa final de softmax donde el objetivo es usar una palabra dada en un corpus para intentar predecir la siguiente palabra .
Para pasar la entrada a un vector codificado en caliente de dimensiones de 5000.
Entrada:
Una palabra en un corpus. Debido a que el tamaño del vocabulario puede ser muy grande, hemos limitado el vocabulario a las 5000 palabras principales del corpus, y el resto de las palabras se reemplazan con el símbolo UNK. Cada oración en el corpus también tiene doble relleno con símbolos de parada.Salida:
La siguiente palabra en el corpus también codificó one-hot en un vector del tamaño del vocabulario.
Capas –
El modelo consta de las siguientes tres capas:
Capa de incrustación: cada palabra corresponde a un vector de incrustación único, una representación de la palabra en algún espacio de incrustación. Aquí, la incrustación, todos tienen una dimensión de 50. Encontramos la incrustación de una palabra dada al hacer una array de multiplicación (esencialmente una búsqueda en la tabla) con una array de incrustación que se entrena durante la retropropagación regular.
Capa oculta: una capa de retroalimentación completamente conectada con tamaño de capa oculta 100 y activación de unidad lineal rectificada (ReLU).
Capa Softmax: una capa de retroalimentación completamente conectada con un tamaño de capa igual al tamaño del vocabulario, donde cada elemento del vector de salida (logits) corresponde a la probabilidad de que esa palabra en el vocabulario sea la siguiente palabra.
Pérdida : la pérdida de entropía cruzada normal entre los logits y las etiquetas verdaderas como el costo del modelo .
Optimizer:
un SGD Optimizer normal con una tasa de aprendizaje de 0,05.
Cada época (alrededor de 480 000 ejemplos) tarda unos 10 minutos en entrenarse en la CPU. La probabilidad del registro de prueba después de la época cinco es -846493.44
Memn2n-master:
Memn2n-master7 es una red neuronal con un modelo de atención recurrente sobre una memoria externa posiblemente grande. La arquitectura es una forma de red de memoria pero, a diferencia del modelo en ese trabajo, se entrena de extremo a extremo y, por lo tanto, requiere una supervisión significativamente menor durante el entrenamiento, lo que la hace más aplicable en general en entornos realistas.
Datos de entrada:
este directorio incluye el primer conjunto de 20 tareas para evaluar la comprensión y el razonamiento del texto en el proyecto bAbI5. El motivo detrás de estas 20 tareas es que cada tarea prueba un aspecto único del texto y el razonamiento y, por lo tanto, prueba las diferentes habilidades de los modelos entrenados.
Tanto para pruebas como para entrenamiento, tenemos 1000 preguntas cada uno. Sin embargo, no hemos utilizado esta cantidad de datos, ya que podría no ser de mucha utilidad.
Los resultados de este modelo fueron una precisión de prueba del 99,6 %, precisión de entrenamiento del 97,6 % y precisión de validación del 88 %.
El marco TensorFlow ha mostrado buenos resultados para entrenar modelos de redes neuronales con modelos NLP que muestran una buena precisión. Los resultados de entrenamiento, pruebas y pérdidas han sido excelentes. El modelo Langmod_nn y las redes de memoria dieron como resultado buenas tasas de precisión con un bajo valor de pérdida y error. La flexibilidad del modelo de memoria permite aplicarlo a tareas tan diversas como la respuesta a preguntas y el modelado del lenguaje.
Conclusión:
Como se muestra, la PNL proporciona un amplio conjunto de técnicas y herramientas que se pueden aplicar en todos los ámbitos de la vida. Al aprender los modelos y usarlos en las interacciones cotidianas, la calidad de vida mejoraría mucho. Las técnicas de PNL ayudan a mejorar las comunicaciones, alcanzar objetivos y mejorar los resultados recibidos de cada interacción. La PNL ayuda a las personas a utilizar las herramientas y técnicas que ya están disponibles para ellos. Al aprender correctamente las técnicas de PNL, las personas pueden alcanzar metas y superar obstáculos.
En el futuro, la PNL irá más allá de los sistemas estadísticos y basados en reglas hacia una comprensión natural del lenguaje. Ya hay algunas mejoras realizadas por gigantes tecnológicos. Por ejemplo, Facebook* trató de usar el aprendizaje profundo para comprender el texto sin análisis, etiquetas, reconocimiento de entidad nombrada (NER), etc., y Google está tratando de convertir el lenguaje en expresiones matemáticas. La detección de puntos finales mediante el uso de redes de memoria de cuadrícula a largo plazo y redes de memoria de extremo a extremo en la tarea bAbI realizada por Google y Facebook, respectivamente, muestra el avance que se puede lograr en los modelos NLP.
Publicación traducida automáticamente
Artículo escrito por RajatSharma16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA