- 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
- 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
Efficient Transformers II: destilación de conocimientos y ajuste
Esta publicación en dos partes analiza cómo hacer que la PNL de última generación sea más eficiente explorando las modificaciones de las técnicas de modelado de lenguaje basadas en Transformer , populares pero computacionalmente exigentes.
- Explicó por qué el mecanismo de autoatención de Transformer tiene una alta carga de trabajo computacional.
- Presentamos mecanismos de atención alternativos que son más eficientes de ejecutar sin comprometer significativamente el rendimiento.
Esta publicación:
- Explora métodos que entrenan modelos pequeños para reproducir los resultados de modelos grandes.
- Explicar cómo ajustar los modelos de lenguaje de forma eficiente.
- Proporciona nuestras recomendaciones para escenarios en los que utilizar los diferentes enfoques de Transformador eficiente.
La publicación anterior incluía una breve historia del aprendizaje de la representación semántica en PNL y una descripción general de cómo funciona el mecanismo de autoatención de Transformer. Sugerimos leer primero esas secciones para los lectores que puedan no estar familiarizados. Esta publicación también comparte parte de la notación introducida en la publicación anterior.
La destilación de conocimientos es un área de investigación en Transformers más eficientes que entrena modelos pequeños (estudiantes) animándolos a reproducir los resultados de modelos grandes (profesores). Se trata de una técnica que inicialmente ganó popularidad en tareas de clasificación en visión artificial, pero que se ha aplicado con éxito en varios dominios, incluido el PNL. El flujo de trabajo típico es:
- Entrena un modelo grande utilizando datos genéricos anotados.
- Entrena un modelo pequeño para imitar el modelo grande utilizando datos no anotados específicos de la tarea (y datos anotados específicos de la tarea, si están disponibles).
Aunque este proceso sigue implicando el entrenamiento de un modelo grande, se trata de un coste único. La tarea más frecuente de hacer predicciones la realizará el modelo pequeño, que es significativamente más eficiente de ejecutar. Como resultado, la destilación del conocimiento es una técnica particularmente popular para ejecutar el aprendizaje automático en entornos con restricciones de hardware, por ejemplo, en dispositivos móviles.
Considere un documento x y una etiqueta de clase y, con la etiqueta de clase perteneciente a una de las categorías C (es decir, y∈{1,2,...,C}). Indica la probabilidad con la que un modelo grande f predice que el documento x tiene la etiqueta de clase y=c como p(c;f(x)). Esta probabilidad suele calcularse utilizando una función de la forma:
donde I(c;y)=1 if y=c else 0.
Ejemplos de funciones objetivo incluyen:
- Un objetivo de estilo de máxima verosimilitud:
- Esto es equivalente a minimizar la divergencia KL entre p(c;f) y p(c;g).
- El error cuadrático medio negativo (MSE) entre logits:
Destilación específica de la tarea
El modelo biLSTM-SOFT realiza una destilación específica de la tarea al intentar reproducir las predicciones de un modelo BERT ya ajustado en las tareas de clasificación. Para el modelo de estudiante, utiliza un LSTM bidireccional de una sola capa. Aunque se trata de un modelo recurrente, como solo tiene una capa, sigue siendo rápido de ejecutar.
El objetivo de destilación es el MSE negativo entre los logits del alumno y del profesor. Es más de 400 veces más rápido de ejecutar que el modelo BERT del que se extrae, pero tiene una precisión de 4 a 7 puntos/F1 peor (dependiendo de la tarea).
Destilación durante el preentrenamiento
Hasta ahora, esta publicación ha presentado la destilación de conocimientos en el contexto del aprendizaje supervisado, ya que este es el entorno en el que se utiliza con más frecuencia. Sin embargo, DistilBERT realiza la destilación del conocimiento tanto en la etapa de preentrenamiento como en la de ajuste del modelo de lenguaje.
Como se explica en la sección Antecedentes de la publicación anterior, BERT se entrena previamente utilizando el modelado de lenguaje enmascarado; DistilBERT trata las palabras que faltan como etiquetas de clase y utiliza la función de objetivo de destilación de estilo de máxima verosimilitud. Utiliza las distribuciones de probabilidad predichas de BERT para las palabras que faltan como objetivos suaves para el objetivo de destilación. Los autores también añaden un objetivo de incrustación de coseno, que anima al modelo pequeño a alinear las direcciones de sus incrustaciones con las producidas por BERT.
DistilBERT adopta la misma arquitectura básica que BERT, pero tiene la mitad de capas y es aproximadamente un 38 % más rápido de ejecutar. Cuando se destila solo durante el preentrenamiento, conserva el 97 % del rendimiento de BERT. Los autores también descubrieron que realizar la destilación específica de la tarea durante el ajuste fino (utilizando un modelo BERT que también se había ajustado en la misma tarea) dio un impulso adicional al rendimiento.
Aprovechar la arquitectura de Transformer
TinyBERT es un enfoque similar a DistilBERT en el sentido de que realiza la destilación del conocimiento tanto en la etapa de preentrenamiento como en la de ajuste del modelo de lenguaje. Sin embargo, TinyBERT toma conocimiento directamente de las representaciones intermedias de BERT (no solo de los resultados finales) explotando específicamente las características de la arquitectura de Transformer.
Al igual que con DistilBERT, TinyBERT adopta la misma arquitectura que BERT pero con menos capas. En primer lugar, se define una asignación de cada capa del modelo de alumno a una capa del modelo de profesor, es decir, cada capa de alumno está asociada a una capa de profesor. Luego, dependiendo de la capa de estudiante, utiliza una de las tres funciones objetivo de destilación:
- Capa de incrustación
- Minimiza el MSE entre las matrices de incrustación del alumno y del profesor.
- Capas de atención
- Minimiza el MSE entre las matrices de atención del alumno y del profesor (A en la Ecuación (4) en la publicación anterior) más el MSE entre las salidas del alumno y del profesor de las capas de avance que siguen a la operación de autoatención.
- Capa final (predicción)
- Utiliza el objetivo de destilación de estilo de máxima verosimilitud para intentar hacer coincidir las probabilidades previstas del alumno y del profesor. Es lo mismo que DistilBERT.
En comparación con el modelo BERT del que se extrae, TinyBERT es entre 2 y 9 veces más rápido de ejecutar (dependiendo del número de capas y del tamaño de los estados ocultos). Supera constantemente a DistilBERT en una amplia gama de tareas, lo que indica que los objetivos de destilación en cada capa son útiles en comparación con la capa final por sí sola.
Como se ha comentado en la sección Antecedentes de la publicación anterior, el paso final del entrenamiento de modelos de lenguaje grandes suele ser ajustarlos en la tarea de interés. Aunque esta etapa puede ser relativamente rápida de ejecutar, generalmente implica actualizar todos los parámetros del modelo. Esto significa que los requisitos de hardware son los mismos que para las etapas previas al entrenamiento. Dado que el paso de ajuste fino suele ejecutarse por separado para cada tarea, sigue siendo una etapa costosa del proceso de entrenamiento. Por lo tanto, otra línea de investigación busca reducir el número de parámetros que se actualizarán durante el ajuste fino.
Ajustar un subconjunto de las ponderaciones
Una forma de evitar tener que actualizar todos los parámetros del modelo es simplemente congelar algunas de las capas. Lee et al. realizar un estudio empírico de la eficacia de este enfoque. Descubren, con un modelo BERT de 12 capas, que congelar las primeras 9 capas y ajustar solo las 3 finales alcanza al menos el 90 % del rendimiento del ajuste completo en la mayoría de las tareas. Sin embargo, congelar todo el modelo de lenguaje y simplemente entrenar la capa de predicción final tiene un rendimiento significativamente peor en todas las tareas.
Actualizar solo los términos de sesgo
La mayoría de las operaciones en la mayoría de las arquitecturas de redes neuronales implican multiplicar una entrada por una matriz y luego agregar un término de sesgo. La forma en que se componen estas operaciones es lo que define la arquitectura.
En Transformers, los términos de sesgo (por ejemplo, los términos b en las Ecuaciones (1)–(3) en la publicación anterior) representan menos del 0,1 % del total de parámetros. Por lo tanto , BitFit propone actualizarlos solo durante el ajuste fino y congelar el resto de los parámetros. Con datos de entrenamiento anotados limitados, BitFit se comporta de forma competitiva (y a veces mejor) que el ajuste fino de todo el modelo. Con grandes conjuntos de datos de entrenamiento, su rendimiento es ligeramente inferior al del ajuste fino completo.
Insertar pequeñas redes entrenables en el Transformador
Otro conjunto de métodos de ajuste fino eficientes en los parámetros congela todo el modelo de lenguaje preentrenado, pero introduce un pequeño conjunto de parámetros adicionales que se entrenan para la tarea de interés. Los adaptadores hacen esto insertando dos redes feedforward de 2 capas dentro de cada una de las capas del Transformador. Se insertan directamente antes y después de la red feedforward existente que sigue el mecanismo de autoatención. Las 2 capas realizan las siguientes operaciones:
- La primera capa proyecta hacia abajo el estado oculto del Transformador a un vector de baja dimensión y aplica una no linealidad.
- La segunda capa proyecta hacia arriba el vector de baja dimensión de nuevo al tamaño del estado oculto del Transformador.
La idea detrás de esto es que la inserción de parámetros aprendibles en toda la arquitectura de Transformer (en lugar de solo entrenar la capa de predicción final) permite que el modelo ajuste sus representaciones internas de la misma manera que lo hace el ajuste fino, pero de una manera mucho más eficiente. El ajuste del adaptador es solo un ~0,4 % peor que el ajuste fino completo, con solo un 3,6 % de los parámetros entrenados.
Estas dos publicaciones han cubierto varios métodos eficientes de Transformer diferentes. ¿Cuándo podría ser apropiado utilizarlos?
- Si trabajas con documentos particularmente largos, te recomendamos que utilices un mecanismo de atención eficiente, como los que se tratan en la publicación anterior. Esto reducirá tanto el tiempo de preentrenamiento como el de inferencia. El rendimiento puede ser incluso mejor que utilizar la atención completa.
- Si su cuello de botella es la memoria (es decir, incluso un lote de documentos cortos provoca errores de memoria insuficiente), intente utilizar un modelo destilado (p. ej. TinyBERT). Con menos capas y representaciones de menor dimensión, esto reducirá la huella de memoria del modelo y será más rápido de entrenar.
- Sin embargo, ten en cuenta que los modelos destilados aún requieren un modelo de tamaño completo preentrenado para aprender, y generalmente funcionan mejor cuando se destilan tanto durante el preentrenamiento como durante el ajuste.
- Si tiene datos anotados limitados en la etapa de ajuste, utilice un método de ajuste que congele la mayoría o todos los parámetros del modelo de lenguaje (por ejemplo, adaptadores) mitiga el riesgo de sobreajuste y, por lo general, debería funcionar mejor que ajustar todo el modelo.
- Si tienes muchas tareas posteriores supervisadas, te sugerimos que utilices un método de ajuste fino eficiente. Esto reducirá el número de parámetros que deben entrenarse y almacenarse para cada tarea.
- Aunque los métodos de ajuste fino eficientes pueden ser más rápidos de entrenar que el ajuste fino completo, por lo general no mejorarán la velocidad de inferencia (es decir, obtener predicciones de un modelo entrenado). De hecho, algunos de ellos pueden ser ligeramente más lentos para la inferencia, debido a la inserción de capas adicionales.
Esta serie de dos partes analiza cómo hacer que el procesamiento del lenguaje natural (PLN) de última generación sea ampliamente accesible mediante la exploración de alternativas eficientes a las populares pero exigentes técnicas de modelado del lenguaje basadas en Transformer.
- Explicó por qué el mecanismo de autoatención de Transformer tiene una alta carga de trabajo computacional.
- Presentamos mecanismos de atención alternativos que son más eficientes de ejecutar sin comprometer significativamente el rendimiento.
Esta publicación:
- Se analizaron las técnicas de destilación de conocimientos, que entrenan modelos pequeños y eficientes animándolos a reproducir los resultados de sus homólogos más grandes.
- Exploración de métodos eficientes para afinar los modelos de lenguaje reduciendo el número de parámetros que se actualizan.
- Proporcionamos nuestras recomendaciones para escenarios en los que utilizar los diferentes enfoques eficientes de Transformer.
Si desea probar Communications Mining en su empresa, regístrese para una prueba o vea una demostración.