- Documentos de la API
- Introducción
- Uso de la API
- Tutorial de la API
- Resumen
- Fuentes
- Conjuntos de datos
- Comentarios
- Archivos adjuntos
- Predictions
- Crear una transmisión
- Actualizar una transmisión
- Obtener una transmisión por nombre
- Obtener todas las transmisiones
- Eliminar una transmisión
- Obtener resultados de la transmisión
- Obtener comentarios de una transmisión (heredado)
- Avanzar una transmisión
- Restablecer una transmisión
- Etiquetar una excepción
- Desetiquetar una excepción
- Eventos de auditoría
- Obtener todos los usuarios
- CLI
- Guías de integración
- Integración de Exchange con el usuario del servicio de Azure
- Integración de Exchange con la autenticación de aplicaciones de Azure
- Automatización en tiempo real
- Obtener datos para Tableau con Python
- Integración de Elasticsearch
- Integración de EWS autohospedado
- Marco de automatización de UiPath
- Actividades de UiPath Marketplace
- Actividades oficiales de UiPath
- Blog
- Cómo aprenden las máquinas a entender palabras: una guía para las incrustaciones en PNL
- Aprendizaje basado en solicitudes con Transformers
- Efficient Transformers II: destilación de conocimientos y ajuste
- Transformadores eficientes I: mecanismos de atención
- Modelado de intenciones jerárquico profundo no supervisado: obtener valor sin datos de entrenamiento
- Corrección del sesgo de anotación con Communications Mining
- Aprendizaje activo: mejores modelos ML en menos tiempo
- Todo está en los números: evaluar el rendimiento del modelo con métricas
- Por qué es importante la validación del modelo
- Comparación de Communications Mining y Google AutoML para la inteligencia de datos conversacional
Transformadores eficientes I: mecanismos de atención
El negocio se basa en las comunicaciones. Los clientes se ponen en contacto cuando necesitan algo. Los compañeros se conectan para trabajar. En Communications Mining, nuestra misión es cambiar fundamentalmente la economía del trabajo de servicio en la empresa: desbloquear el valor en cada interacción y hacer que el servicio sea eficiente y escalable. Lo hacemos democratizando el acceso a NLP y NLU de última generación.
En concreto, los modelos de Communications Mining utilizan arquitecturas de aprendizaje profundo llamadas Transformers. Los transformadores facilitan grandes mejoras en el rendimiento de NLU. Sin embargo, también son muy intensivos en cálculo, tanto en el entrenamiento de los modelos para aprender nuevos conceptos como en su uso para hacer predicciones. Esta serie de dos partes analizará múltiples técnicas para aumentar la velocidad y reducir el coste de cálculo del uso de estas grandes arquitecturas de Transformer.
Esta publicación:
- Presentar una breve historia de la incorporación de modelos en PNL.
- Explique por qué el mecanismo de autoatención de Transformer tiene una alta carga de trabajo computacional.
- Revise las modificaciones a la arquitectura tradicional de Transformer que son más eficientes desde el punto de vista computacional para entrenar y ejecutar sin comprometer significativamente el rendimiento.
La siguiente publicación analizará técnicas computacionales y de aproximación adicionales que producen más ganancias de eficiencia. La siguiente publicación:
- Explore las técnicas de destilación, en las que los modelos más pequeños se entrenan para aproximarse al rendimiento de los modelos más grandes.
- Explicar las técnicas eficientes de ajuste fino, en las que las actualizaciones de parámetros están restringidas.
- Proporcione nuestras recomendaciones sobre cuándo utilizar cada uno de estos métodos.
Durante la última década, los métodos de PNL se han vuelto significativamente mejores para realizar una amplia variedad de tareas. Esto puede atribuirse en gran medida a un cambio de enfoques guiados a mano y basados en la ingeniería de características hacia métodos impulsados por el aprendizaje automático. Las mayores mejoras en el rendimiento se han debido a los avances en el aprendizaje de la representación semántica preentrenada no supervisada. Esto implica entrenar un modelo que asigna secuencias de lenguaje natural (por ejemplo, palabras, frases) a vectores (secuencias de números) que representan su significado semántico. Estos vectores pueden utilizarse para realizar la tarea de interés, por ejemplo reconocimiento de intenciones, clasificación de sentimientos, reconocimiento de campos generales con nombre, etc.
Incrustaciones de Word
El cambio de paradigma comenzó en la década de 2010 con métodos de inserción de palabras como word2vec y GloVe. Estas técnicas utilizan grandes conjuntos de datos de lenguaje natural para aprender incrustaciones (otro término para vectores) de palabras de forma no supervisada. Las incrustaciones codifican información semántica basada en los contextos en los que aparecen con frecuencia las palabras. Por ejemplo, la palabra "ordenador" puede aparecer a menudo junto a palabras como "teclado", "software" e "internet"; estas palabras vecinas comunes incorporan la información que la incrustación de "computadora" debe codificar.
Las incrustaciones de palabras tradicionales tienen una debilidad clave: son estáticas, es decir, la incrustación de una palabra determinada es siempre la misma. Por ejemplo, considera la palabra "banco": puede referirse a la orilla de un río o a una institución financiera; su incrustación tendría que codificar ambos significados.
Inserciones contextuales
Para abordar esta debilidad, se desarrollaron métodos de inserción contextual. Estos tienen una incrustación diferente para cada palabra dependiendo de la secuencia (p. ej. oración, documento) en el que aparece. Esta línea de trabajo ha cambiado las reglas del juego; ahora es extremadamente raro encontrar métodos de última generación que no se basen en incrustaciones contextuales.
Una de las primeras técnicas populares de inserción contextual fue ELMo, que implica el entrenamiento previo de un modelo de red neuronal recurrente (RNN) en un gran corpus de lenguaje natural utilizando un objetivo de predicción de la siguiente palabra. Las representaciones internas de este modelo se utilizan como entradas de modelos (normalmente pequeños) para realizar tareas supervisadas. En ese momento, este enfoque mejoró significativamente el estado de la técnica anterior en varias tareas.
Los RNN procesan cada palabra en una secuencia una tras otra, por lo que pueden ser lentos cuando se trata de documentos largos. Como resultado, modelos como BERT y RoBERTa, que sustituyen el componente recurrente de ELMo por el Transformer, más sencillo para el cálculo paralelo, se han convertido en los enfoques de referencia. Estos modelos suelen estar preentrenados con un objetivo de modelado de lenguaje enmascarado: se elimina un subconjunto de palabras en una secuencia, y el modelo tiene la tarea de predecir cuáles son las palabras que faltan.
Sin embargo, los modelos de lenguaje modernos basados en Transformer son generalmente muy grandes: pueden contener miles de millones de parámetros y su ejecución es muy exigente desde el punto de vista computacional. El flujo de trabajo típico es:
- Preentrena el modelo de lenguaje en un conjunto de datos genérico no anotado.
- Preentrena más el modelo de lenguaje en un conjunto de datos no anotados específico del dominio.
- Ajusta el modelo de lenguaje, utilizando datos anotados, para realizar la tarea supervisada de interés.
Aunque el primero de estos pasos suele ser un coste único, los dos últimos no lo son. Y mientras la potencia de cálculo es cada vez más barata, las arquitecturas de Transformer son cada vez más grandes. Esto significa que el coste del rendimiento de última generación no está necesariamente disminuyendo.
Por lo tanto, esta publicación presentará una gama de técnicas que reducen la carga de trabajo computacional y minimizan el impacto en el rendimiento.
La arquitectura de Transformer comienza con una capa de incrustación aprendible. Cada capa posterior crea sus representaciones internas utilizando un mecanismo de "autoatención", es decir, la representación de cada palabra examina todas las demás palabras de la secuencia (consulte la Figura 1 para ver un ejemplo). Cada capa de autoatención comprende múltiples "cabezas" (cada cabeza hace su propia autoatención).
Estos se concatenan en las matrices N×D Q, K y V respectivamente. La matriz de atención se calcula como:
La salida de la capa de autoatención se calcula como:
La salida final para cada capa se calcula concatenando las salidas de autoatención para cada encabezado, y alimentándola a través de una pequeña red de retroalimentación.
Aunque (a diferencia de los RNN) el cálculo se puede realizar en paralelo, la Figura 1 muestra que habrá que realizar N2 operaciones de autoatención para una secuencia con N palabras. Es decir, la complejidad computacional escala cuadráticamente con la longitud de la oración. Si se tiene en cuenta que los Transformers modernos utilizan decenas de capas, cada una con decenas de cabezas que constan de miles de dimensiones, hay muchas operaciones que realizar incluso para una sola secuencia.
Naturalmente, una línea de investigación tiene como objetivo reducir esta complejidad de N2 con mecanismos de autoatención más simples; esta es el área más grande de investigación en arquitecturas eficientes de Transformer. A continuación se revisan algunos enfoques populares; consulta este documento de encuesta para obtener una cobertura más completa.
Prestar atención bloque a bloque
Una forma de reducir el número de operaciones es restringir el número de palabras de la secuencia que analiza el mecanismo de autoatención. BlockBERT hace esto segmentando la secuencia en trozos. En un encabezado de atención dado, el mecanismo de atención dentro de un fragmento solo busca las palabras dentro de uno de los fragmentos (consulta la Figura 2 para ver un ejemplo). Cada cabeza de atención en cada capa permuta los fragmentos que mira el mecanismo de atención. Esto significa que después de decenas de capas, la incrustación de cada palabra probablemente se ha extendido a toda la secuencia. En función del tamaño del modelo, en comparación con RoBERTa, BlockBERT es entre un 12 % y un 25 % más rápido de entrenar, requiere entre un 19 % y un 36 % menos de memoria y funciona casi igual de bien en tareas de respuesta a preguntas (las puntuaciones F1 son ~0,8 puntos más bajas en SQuAD 2.0 ).
Combinar múltiples patrones de atención
De manera similar, el Longformer también restringe cuántas palabras mira el mecanismo de autoatención. Lo hace combinando múltiples patrones de atención simples (consulta la Figura 3 para ver un ejemplo).
- Ventana deslizante
- Presta atención solo a las k palabras vecinas.
- Ventana deslizante dilatada
- Presta atención a cada enésima palabra, hasta un límite predefinido.
- Atención global
- En algunas posiciones preseleccionadas, presta atención a toda la secuencia.
- En cada posición, presta atención a las posiciones preseleccionadas.
Con esta combinación de patrones de atención, después de varias capas, es probable que la incrustación de cada palabra haya atendido a toda la secuencia. Particularmente en secuencias largas, el Longformer es mucho más rápido y utiliza menos memoria que RoBERTa. Sorprendentemente, Longformer supera a RoBERTa en una variedad de tareas: respuesta a preguntas, resolución de correferencias y clasificación de sentimientos.
BigBird es otro enfoque popular y es muy similar al Longformer, excepto que en lugar de la ventana deslizante dilatada, utiliza un patrón de atención aleatorio (es decir, cada representación atiende a un número fijo de palabras aleatorias en la secuencia).
Uso de una aproximación de rango bajo
Un tipo de enfoque diferente a los presentados hasta ahora es el Linformer, que se basa en el resultado teórico de que la operación de autoatención es de bajo rango. El Linformer proyecta linealmente las matrices de clave y valor (K y V) hacia abajo, a lo largo de la dimensión de longitud, a una secuencia más corta (longitud fija) sobre la que se puede aplicar toda la atención (consulte la Figura 4 para ver un ejemplo). En comparación con la autoatención estándar, para secuencias cortas, el Linformer es de 1,3 a 3 veces más rápido y para secuencias largas, es de 3 a 20 veces más rápido de ejecutar. En una variedad de tareas de clasificación de texto, tiene un rendimiento comparable (y en ciertas tareas, ligeramente mejor) que RoBERTa.
Esta serie de dos partes analiza cómo hacer que la PNL de última generación sea más eficiente mediante la exploración de modificaciones a las técnicas de modelado de lenguaje basadas en Transformer, populares pero computacionalmente exigentes. Esta publicación:
- Se presentó una breve historia del aprendizaje de la representación semántica en PNL, incluidas las incrustaciones de palabras tradicionales y los modelos de incrustación contextual.
- Se ha explicado el mecanismo de autoatención que se encuentra en el corazón de la arquitectura de Transformer, y por qué su ejecución es costosa desde el punto de vista informático.
- Exploración de mecanismos de atención alternativos que son más eficientes desde el punto de vista computacional, sin sacrificar el rendimiento.
La próxima publicación cubrirá:
- Una descripción general de los métodos que entrenan modelos pequeños para reproducir los resultados de modelos grandes.
- Cómo ajustar los modelos de lenguaje de forma eficiente en cuanto a los parámetros.
- Nuestras recomendaciones para escenarios en los que utilizar los diferentes enfoques de Transformador eficiente.
Si desea probar Communications Mining en su empresa, regístrese para una prueba o vea una demostración.