
Hola habrozhiteli! El procesamiento del lenguaje natural (PNL) es una tarea extremadamente importante en el campo de la inteligencia artificial. La implementación exitosa permite productos como Amazon Amazon y Google Translate. Este libro lo ayudará a aprender PyTorch, una biblioteca de aprendizaje profundo para Python, una de las herramientas líderes para científicos de datos y desarrolladores de software de PNL. Delip Rao y Brian McMahan lo pondrán al día con NLP y algoritmos de aprendizaje profundo. Y muestre cómo PyTorch le permite implementar aplicaciones que usan análisis de texto.
En este libro • Gráficos computacionales y el paradigma de aprendizaje con un maestro. • Conceptos básicos de la biblioteca PyTorch optimizada para trabajar con tensores. • Una visión general de los conceptos y métodos tradicionales de PNL. • Redes neuronales proactivas (perceptrón multicapa y otros). • Mejora de RNN con memoria a corto plazo a largo plazo (LSTM) y bloques de recurrencia controlados • Modelos de predicción y transformación de secuencias. • Patrones de diseño de sistemas de PNL utilizados en producción.
Extracto Palabras anidadas y otros tipos
Al resolver problemas de procesamiento de textos en lenguajes naturales, uno tiene que lidiar con varios tipos de tipos de datos discretos. El ejemplo más obvio son las palabras. Muchas palabras (diccionario), por supuesto. Entre otros ejemplos, símbolos, etiquetas de partes del discurso, entidades con nombre, tipos de entidades con nombre, atributos asociados con el análisis, posiciones en el catálogo de productos, etc. De hecho, cualquier característica de entrada tomada de un finito (o infinito, pero contables) conjuntos.
La base de la aplicación exitosa del aprendizaje profundo en PNL es la representación de tipos de datos discretos (por ejemplo, palabras) en forma de vectores densos. Los términos "aprendizaje de representación" e "incrustación" significan aprender a mostrar / representar desde un tipo de datos discreto hasta un punto en un espacio vectorial. Si los tipos discretos son palabras, una representación vectorial densa se denomina incrustación de palabras. Ya hemos visto ejemplos de métodos de anidación basados en el número de ocurrencias, por ejemplo, TF-IDF ("frecuencia de término es la frecuencia inversa de un documento") en el capítulo 2. En este capítulo, nos centraremos en métodos de anidación basados en entrenamiento y métodos de anidación basados en predicciones (ver artículo de Baroni et al. (Baroni et al., 2014]), en el que el entrenamiento de desempeño se realiza maximizando la función objetivo para una tarea de aprendizaje específica; por ejemplo, prediciendo una palabra por contexto. Los métodos de inversión basados en la capacitación son actualmente el estándar debido a su amplia aplicabilidad y alta eficiencia. De hecho, la incrustación de palabras en tareas de PNL está tan extendida que se les llama "sriracha de PNL", ya que se puede esperar que su uso en cualquier tarea aumente la eficiencia de la solución. Pero este apodo es un poco engañoso, porque, a diferencia de Syraci, los archivos adjuntos generalmente no se agregan al modelo después del hecho, sino que son su componente básico.
En este capítulo, discutiremos las representaciones de vectores en relación con la inserción de palabras: métodos de inclusión de palabras, métodos de optimización de inclusión de palabras para enseñar tareas con y sin un maestro, métodos de visualización de inclusión visual y también métodos de combinación de inclusión de palabras para oraciones y documentos. Sin embargo, no olvide que los métodos descritos aquí se aplican a cualquier tipo discreto.
¿Por qué capacitación en inversiones?
En los capítulos anteriores, le mostramos los métodos habituales para crear representaciones vectoriales de palabras. Es decir, aprendió a usar representaciones unitarias: vectores con una longitud que coincide con el tamaño del diccionario, con ceros en todas las posiciones, excepto uno que contiene el valor 1 correspondiente a una palabra específica. Además, se encontró con representaciones del número de ocurrencias: vectores de longitud igual al número de palabras únicas en el modelo, que contienen el número de ocurrencias de palabras en la oración en las posiciones correspondientes. Dichas representaciones también se denominan representaciones distributivas, ya que su contenido / significado significativo se refleja en varias dimensiones del vector. La historia de las representaciones distributivas ha estado ocurriendo durante muchas décadas (ver el artículo de Firth [Firth, 1935]); son excelentes para muchos modelos de aprendizaje automático y redes neuronales. Estas representaciones se construyen de forma heurística1 y no están formadas en datos.
La representación distribuida obtuvo su nombre porque las palabras en ellas están representadas por un vector denso de una dimensión mucho más pequeña (por ejemplo, d = 100 en lugar del tamaño de todo el diccionario, que puede ser del orden

), y el significado y otras propiedades de la palabra se distribuyen en varias dimensiones de este vector denso.
Las representaciones densas de baja dimensión obtenidas como resultado del entrenamiento tienen varias ventajas en comparación con los vectores unitarios que contienen el número de ocurrencias que encontramos en los capítulos anteriores. Primero, la reducción de dimensionalidad es computacionalmente eficiente. En segundo lugar, las representaciones basadas en el número de ocurrencias conducen a vectores de alta dimensión con codificación excesiva de la misma información en diferentes dimensiones, y su poder estadístico no es demasiado grande. En tercer lugar, demasiada dimensionalidad de los datos de entrada puede conducir a problemas en el aprendizaje automático y la optimización, un fenómeno a menudo llamado la maldición de la dimensionalidad (
http://bit.ly/2CrhQXm ). Para resolver este problema con la dimensionalidad, se utilizan varios métodos para reducir la dimensión, por ejemplo, la descomposición de valores singulares (SVD) y el método de análisis de componentes principales (PCA), pero, irónicamente, estos enfoques no se adaptan bien a las dimensiones del orden de millones ( caso típico en PNL). En cuarto lugar, las representaciones aprendidas de (o ajustadas en base a) datos específicos de un problema son ideales para esta tarea en particular. En el caso de algoritmos heurísticos como TF-IDF y métodos de reducción dimensional como SVD, no está claro si la función de optimización objetiva es adecuada para una tarea particular con este método de inclusión.
Eficiencia de la inversión
Para comprender cómo funcionan las incrustaciones, considere un ejemplo de un vector unitario por el cual la matriz de peso en una capa lineal se multiplica, como se muestra en la Fig. 5.1. En los capítulos 3 y 4, el tamaño de los vectores unitarios coincidió con el tamaño del diccionario. Un vector se llama unitario porque contiene 1 en la posición correspondiente a una palabra en particular, lo que indica su presencia.

Fig. 5.1. Un ejemplo de multiplicación matricial para el caso de un vector unitario y una matriz de pesos de una capa lineal. Como el vector unitario contiene todos los ceros y solo una unidad, la posición de esta unidad desempeña el papel del operador de elección al multiplicar la matriz. Esto se muestra en la figura como un oscurecimiento de las células de la matriz de peso y el vector resultante. Aunque este método de búsqueda funciona, requiere un gran consumo de recursos informáticos y es ineficiente, ya que el vector unitario se multiplica por cada uno de los números en la matriz de peso y la suma se calcula en filas
Por definición, el número de filas de la matriz de pesos de una capa lineal que recibe un vector unitario en la entrada debe ser igual al tamaño de este vector unitario. Al multiplicar la matriz, como se muestra en la Fig. 5.1, el vector resultante es en realidad una cadena correspondiente a un elemento distinto de cero de un vector unitario. Según esta observación, puede omitir el paso de multiplicación y usar un valor entero como índice para extraer la fila deseada.
Una última nota con respecto al rendimiento de la inversión: a pesar del ejemplo en la Figura 5.1, donde la dimensión de la matriz de peso coincide con la dimensión del vector unitario de entrada, esto está lejos de ser siempre el caso. De hecho, los archivos adjuntos a menudo se usan para representar palabras de un espacio de menor dimensión de lo que sería necesario si se usa un vector unitario o representa el número de ocurrencias. Un tamaño de inversión típico en artículos científicos es de 25 a 500 mediciones, y la elección de un valor específico se reduce a la cantidad de memoria de GPU disponible.
Enfoques de aprendizaje de apego
El propósito de este capítulo no es enseñarle técnicas específicas para invertir palabras, sino ayudarlo a descubrir qué son las inversiones, cómo y dónde se pueden aplicar, cuál es la mejor manera de usarlas en los modelos y cuáles son sus limitaciones. El hecho es que, en la práctica, uno rara vez tiene que escribir nuevos algoritmos de aprendizaje para la inserción de palabras. Sin embargo, en esta subsección daremos una breve descripción de los enfoques modernos de dicha capacitación. El aprendizaje en todos los métodos de anidación de palabras se realiza utilizando solo palabras (es decir, datos sin etiquetar), pero con un maestro. Esto es posible debido a la creación de tareas de enseñanza auxiliar con el maestro, en las que los datos se marcan implícitamente, por las razones por las cuales la representación optimizada para resolver la tarea auxiliar debe capturar muchas propiedades estadísticas y lingüísticas del corpus de texto con el fin de traer al menos algún beneficio. Aquí hay algunos ejemplos de tales tareas auxiliares.
- Predecir la siguiente palabra en una secuencia de palabras dada. También lleva el nombre del problema de modelado de idiomas.
- Predecir una palabra que falta por palabras ubicadas antes y después.
- Predecir palabras dentro de una ventana específica, independientemente de la posición, para una palabra determinada.
Por supuesto, esta lista no está completa y la elección de un problema auxiliar depende de la intuición del desarrollador del algoritmo y los costos computacionales. Los ejemplos incluyen GloVe, Bolsa de palabras continua (CBOW), Skipgrams, etc. Los detalles se pueden encontrar en el Capítulo 10 del libro de Goldberg (Goldberg, 2017), pero discutiremos brevemente el modelo CBOW aquí. Sin embargo, en la mayoría de los casos, es suficiente usar archivos adjuntos de palabras previamente entrenados y ajustarlos a la tarea existente.
Aplicación práctica de archivos adjuntos pre-entrenados
La mayor parte de este capítulo, así como el resto del libro, trata sobre el uso de archivos adjuntos de palabras previamente entrenados. Entrenado previamente usando uno de los muchos métodos descritos anteriormente en un cuerpo grande, por ejemplo, el cuerpo completo de Google News, Wikipedia o Common Crawl1, los archivos adjuntos de palabras se pueden descargar y usar libremente. Más adelante en el capítulo, mostraremos cómo encontrar y cargar correctamente estos archivos adjuntos, estudiar algunas propiedades de las incrustaciones de palabras y dar ejemplos de uso de incrustaciones de palabras previamente capacitadas en tareas de PNL.
Descargar archivos adjuntos
Los archivos adjuntos de palabras se han vuelto tan populares y extendidos que muchas opciones diferentes están disponibles para descargar, desde Word2Vec2 original a Stanford GloVe (
https://stanford.io/2PSIvPZ ), incluido FastText3 de Facebook (
https://fasttext.cc / ) y muchos otros. Por lo general, los archivos adjuntos se entregan en el siguiente formato: cada línea comienza con una palabra / tipo seguido de una secuencia de números (es decir, una representación vectorial). La longitud de esta secuencia es igual a la dimensión de la presentación (dimensión del archivo adjunto). La dimensión de las inversiones suele ser del orden de cientos. El número de tipos de tokens suele ser igual al tamaño del diccionario y asciende a aproximadamente un millón. Por ejemplo, aquí están las primeras siete dimensiones de los vectores de perros y gatos de GloVe.
Para una carga y manejo eficiente de los archivos adjuntos, describimos la clase auxiliar PreTrainedEmbeddings (Ejemplo 5.1). Crea un índice de todos los vectores de palabras almacenados en la RAM para simplificar la búsqueda rápida y las consultas de los vecinos más cercanos con la ayuda del paquete de cálculo de vecino más cercano, molesto.
Ejemplo 5.1. Uso de archivos adjuntos de palabras previamente entrenados
En estos ejemplos, usamos la incrustación de las palabras GloVe. Debe descargarlos y crear una instancia de la clase PreTrainedEmbeddings, como se muestra en la Entrada [1] del Ejemplo 5.1.
Relaciones entre archivos adjuntos de palabras
La propiedad clave de las incrustaciones de palabras es la codificación de relaciones sintácticas y semánticas, manifestadas en forma de patrones de uso de palabras. Por ejemplo, generalmente se habla de gatos y perros de manera muy similar (discuten sobre sus mascotas, hábitos alimenticios, etc.). Como resultado, los apegos por las palabras gatos y perros están mucho más cerca uno del otro que los apegos por los nombres de otros animales, digamos patos y elefantes.
Hay muchas formas de estudiar las relaciones semánticas codificadas en archivos adjuntos de palabras. Uno de los métodos más populares es utilizar la tarea de analogía (uno de los tipos comunes de tareas de pensamiento lógico en exámenes como SAT):
Palabra1: Palabra2 :: Palabra3: ______
En esta tarea, es necesario determinar el cuarto, dada la conexión entre los dos primeros, por las tres palabras dadas. Con la ayuda de palabras anidadas, este problema puede codificarse espacialmente. Primero, reste Word2 de Word1. El vector de diferencia entre ellos codifica la relación entre Word1 y Word2. Esta diferencia se puede agregar a Slovo3 y el resultado será el vector más cercano a la cuarta palabra que falta. Para resolver el problema de analogía, es suficiente consultar a los vecinos más cercanos por índice utilizando este vector obtenido. La función correspondiente que se muestra en el ejemplo 5.2 hace exactamente lo que se describió anteriormente: utiliza la aritmética vectorial y un índice aproximado de los vecinos más cercanos para encontrar el elemento que falta en la analogía.
Ejemplo 5.2. Resolver un problema de analogía usando incrustaciones de palabras
Curiosamente, usando una analogía verbal simple, se puede demostrar cómo las incrustaciones de palabras pueden capturar una variedad de relaciones semánticas y sintácticas (Ejemplo 5.3).
Ejemplo 5.3 Codificación con la ayuda de incrustaciones de palabras de muchas conexiones lingüísticas en el ejemplo de tareas en la analogía de SAT
Aunque parezca que las conexiones reflejan claramente el funcionamiento del lenguaje, no todo es tan simple. Como lo demuestra el ejemplo 5.4, las conexiones se pueden definir incorrectamente porque los vectores de palabras se determinan en función de su aparición conjunta.
Ejemplo 5.4. Un ejemplo que ilustra el peligro de codificar el significado de las palabras en función de la coincidencia. ¡A veces no funciona!
El ejemplo 5.5 ilustra una de las combinaciones más comunes al codificar roles de género.
Ejemplo 5.5 Tenga cuidado con los atributos protegidos, como el género, codificados por archivos adjuntos de palabras. Pueden conducir a sesgos no deseados en modelos futuros.
Resulta que es bastante difícil distinguir entre patrones de lenguaje y prejuicios culturales profundamente arraigados. Por ejemplo, los médicos no son siempre hombres y las enfermeras no siempre son mujeres, pero tales prejuicios son tan persistentes que se reflejan en el lenguaje y, como resultado, en los vectores de palabras, como se muestra en el ejemplo 5.6.
Ejemplo 5.6. Prejuicios culturales "cosidos" en los vectores de palabras
No debemos olvidar los posibles errores sistemáticos en las inversiones, teniendo en cuenta el crecimiento de su popularidad y prevalencia en las aplicaciones de PNL. La erradicación de errores sistemáticos en la inclusión de palabras es un campo nuevo y muy interesante de investigación científica (ver el artículo de Bolukbashi et al. [Bolukbasi et al., 2016]). Le recomendamos que consulte
ethicsinnlp.org donde puede encontrar información actualizada sobre ética
transversal y PNL.
Sobre los autores
Delip Rao es el fundador de la firma de consultoría Joostware con sede en San Francisco, especializada en aprendizaje automático e investigación en PNL. Uno de los cofundadores del Fake News Challenge, una iniciativa diseñada para reunir a hackers e investigadores en el campo de la IA sobre las tareas de verificación de hechos en los medios. Delip trabajó anteriormente en investigación y productos de software relacionados con la PNL en Twitter y Amazon (Alexa).
Brian McMahan es investigador en Wells Fargo y se centra principalmente en PNL. Anteriormente trabajó en Joostware.
»Se puede encontrar más información sobre el libro en
el sitio web del editor»
Contenidos»
ExtractoCupón de 25% de descuento para
vendedores ambulantes -
PyTorchTras el pago de la versión en papel del libro, se envía un libro electrónico por correo electrónico.