Un gran modelo de lenguaje desarrollado por Google AI
XLNet fue un transformador autorregresivo diseñado como una mejora de BERT , con 340 millones de parámetros y entrenado con 33 mil millones de palabras. Se lanzó el 19 de junio de 2019, bajo la licencia Apache 2.0 . [1] Logró resultados de vanguardia en una variedad de tareas de procesamiento de lenguaje natural, incluido el modelado de lenguaje, la respuesta a preguntas y la inferencia de lenguaje natural.
Arquitectura
La idea principal de XLNet es modelar el lenguaje de forma autorregresiva como los modelos GPT , pero permitiendo todas las permutaciones posibles de una oración. [2] Concretamente, considere la siguiente oración:
Mi perro es lindo.
En el modelado de lenguaje autorregresivo estándar, el modelo tendría la tarea de predecir la probabilidad de cada palabra, condicionada a las palabras anteriores como su contexto:
Factorizamos la probabilidad conjunta de una secuencia de palabras utilizando la regla de la cadena:
Por ejemplo, la oración "Mi perro es lindo" se factoriza como:
Esquemáticamente, podemos escribirlo como
Sin embargo, para XLNet, el modelo debe predecir las palabras en un orden generado aleatoriamente. Supongamos que hemos tomado una muestra de un orden generado aleatoriamente de 3241 palabras; entonces, esquemáticamente, el modelo debe realizar la siguiente tarea de predicción:
Al considerar todas las permutaciones, XLNet puede capturar dependencias de mayor alcance y modelar mejor el contexto bidireccional de las palabras.
Autoatención de dos corrientes
Para implementar el modelado de lenguaje de permutación, XLNet utiliza un mecanismo de autoatención de dos flujos. Los dos flujos son:
- Flujo de contenido: este flujo codifica el contenido de cada palabra, como en la autoatención causalmente enmascarada estándar.
- Flujo de consultas: este flujo codifica el contenido de cada palabra en el contexto de lo que ha sucedido antes. En más detalle, es un mecanismo de atención cruzada enmascarada , donde las consultas provienen del flujo de consultas y los pares clave-valor provienen del flujo de contenido.
El flujo de contenido utiliza la máscara causal permutada por una matriz de permutación aleatoria para .
El flujo de consulta utiliza la máscara de atención cruzada , donde la diagonal se resta específicamente para evitar que el modelo "haga trampa" al buscar en el flujo de contenido cuál es el token enmascarado actual.
Al igual que el enmascaramiento causal para los modelos GPT, esta arquitectura enmascarada de dos flujos permite que el modelo se entrene en todos los tokens en una sola pasada hacia adelante.
Capacitación
Se lanzaron dos modelos: [1] [2]
- XLNet-Large, encapsulado: 110 M de parámetros, 24 capas, 1024 ocultos, 16 cabezales
- XLNet-Base, encapsulado: 340 millones de parámetros, 12 capas, 768 ocultos, 12 cabezales.
Se entrenó con un conjunto de datos que ascendió a 32,89 mil millones de tokens después de la tokenización con SentencePiece. El conjunto de datos estaba compuesto por BooksCorpus , Wikipedia en inglés, Giga5, ClueWeb 2012-B y Common Crawl .
Se entrenó en 512 chips TPU v3 durante 5,5 días. Al final del entrenamiento, todavía no se ajustaba a los datos, lo que significa que podría haber logrado una pérdida menor con más entrenamiento. Tomó 0,5 millones de pasos con un optimizador Adam , una tasa de aprendizaje lineal y un tamaño de lote de 8192. [3]
Véase también
Referencia
- ^ ab "xlnet". GitHub . Consultado el 2 de enero de 2024 .
- ^ ab "Modelos preentrenados: documentación de transformers 2.0.0". huggingface.co . Consultado el 5 de agosto de 2024 .
- ^ Yang, Zhilin; Dai, Zihang; Yang, Yiming; Carbonell, Jaime; Salakhutdinov, Ruslan; Le, Quoc V. (2 de enero de 2020). "XLNet: preentrenamiento autorregresivo generalizado para la comprensión del lenguaje". arXiv : 1906.08237 [cs.CL].