- Clasificación de sentimientos
- Clasificación de oraciones
- Responder preguntas de opción múltiple
Autor(es) original(es) | Inteligencia artificial de Google |
---|---|
Lanzamiento inicial | 31 de octubre de 2018 |
Repositorio | github.com/google-research/bert |
Tipo | |
Licencia | Apache 2.0 |
Sitio web | arxiv.org/abs/1810.04805 |
Representaciones de codificador bidireccional a partir de transformadores ( BERT ) es un modelo de lenguaje introducido en octubre de 2018 por investigadores de Google . [1] [2] Aprende a representar texto como una secuencia de vectores mediante aprendizaje autosupervisado . Utiliza la arquitectura de transformador de solo codificador . Es notable por su mejora espectacular con respecto a los modelos de vanguardia anteriores y como un ejemplo temprano de un gran modelo de lenguaje . A partir de 2020 [actualizar], BERT es una línea de base omnipresente en los experimentos de procesamiento del lenguaje natural (PLN). [3]
BERT se entrena mediante la predicción de tokens enmascarados y la predicción de la siguiente oración. Como resultado de este proceso de entrenamiento, BERT aprende representaciones contextuales y latentes de tokens en su contexto, de manera similar a ELMo y GPT-2 . [4] Encontró aplicaciones para muchas tareas de procesamiento de lenguaje natural, como la resolución de correferencia y la resolución de polisemia . [5] Es un paso evolutivo con respecto a ELMo y generó el estudio de la "BERTología", que intenta interpretar lo que BERT aprende. [3]
BERT se implementó originalmente en inglés en dos tamaños de modelo, BERT BASE (110 millones de parámetros) y BERT LARGE (340 millones de parámetros). Ambos se entrenaron en Toronto BookCorpus [6] (800 millones de palabras) y en Wikipedia en inglés (2500 millones de palabras). Los pesos se publicaron en GitHub . [7] El 11 de marzo de 2020, se publicaron 24 modelos más pequeños, siendo el más pequeño BERT TINY con solo 4 millones de parámetros. [7]
BERT es una arquitectura de transformador "sólo codificador" . A grandes rasgos, BERT consta de 4 módulos:
El encabezado de tarea es necesario para el preentrenamiento, pero a menudo es innecesario para las llamadas "tareas posteriores", como la respuesta a preguntas o la clasificación de sentimientos . En su lugar, se elimina el encabezado de tarea y se lo reemplaza con un módulo recién inicializado adecuado para la tarea, y se ajusta el nuevo módulo. La representación del vector latente del modelo se alimenta directamente a este nuevo módulo, lo que permite un aprendizaje por transferencia eficiente de la muestra . [1] [8]
En esta sección se describe la incrustación que utiliza BERT BASE . La otra, BERT LARGE , es similar, solo que más grande.
El tokenizador de BERT es WordPiece, que es una estrategia de subpalabras similar a la codificación de pares de bytes . Su tamaño de vocabulario es de 30 000 y cualquier token que no aparezca en su vocabulario se reemplaza por [UNK]
("desconocido").
La primera capa es la capa de incrustación, que contiene tres componentes: incrustaciones de tipo token, incrustaciones de posición e incrustaciones de tipo segmento.
[SEP]
token especial. Todos los tokens anteriores son de tipo 0.Los tres vectores de incrustación se suman para representar la representación inicial del token como una función de estos tres datos. Después de la incrustación, la representación del vector se normaliza mediante una operación LayerNorm , lo que genera un vector de 768 dimensiones para cada token de entrada. Después de esto, los vectores de representación se pasan a través de 12 bloques de codificador Transformer y se decodifican nuevamente a un espacio de vocabulario de 30 000 dimensiones mediante una capa de transformación afín básica.
La pila de codificadores de BERT tiene dos parámetros libres: , el número de capas, y , el tamaño oculto . Siempre hay cabezales de autoatención y el tamaño del filtro/feed-forward es siempre . Al variar estos dos números, se obtiene una familia completa de modelos BERT. [9]
Para BERT
La notación para la pila de codificadores se escribe como L/H. Por ejemplo, BERT BASE se escribe como 12L/768H, BERT LARGE como 24L/1024H y BERT TINY como 2L/128H.
BERT fue entrenado previamente en dos tareas simultáneamente. [10]
En el modelado de lenguaje enmascarado, se seleccionaría aleatoriamente el 15 % de los tokens para la tarea de predicción enmascarada, y el objetivo de entrenamiento era predecir el token enmascarado dado su contexto. En más detalle, el token seleccionado es
[MASK]
token con probabilidad del 80%,La razón por la que no se enmascaran todos los tokens seleccionados es para evitar el problema del desplazamiento del conjunto de datos. El problema del desplazamiento del conjunto de datos surge cuando la distribución de las entradas observadas durante el entrenamiento difiere significativamente de la distribución encontrada durante la inferencia. Un modelo BERT entrenado podría aplicarse a la representación de palabras (como Word2Vec ), donde se ejecutaría sobre oraciones que no contengan ningún [MASK]
token. Más tarde se descubrió que los objetivos de entrenamiento más diversos son generalmente mejores. [11]
Como ejemplo ilustrativo, considere la oración "mi perro es lindo". Primero se dividiría en elementos como "mi perro 1 es lindo 2 " . Luego se elegiría un elemento al azar en la oración. Sea el cuarto "lindo 4 ". A continuación, habría tres posibilidades :
[MASK]
4 ";Después de procesar el texto de entrada, el cuarto vector de salida del modelo pasa a su capa decodificadora, que genera una distribución de probabilidad en su espacio de vocabulario de 30.000 dimensiones.
Dados dos fragmentos de texto, el modelo predice si estos dos fragmentos aparecieron secuencialmente en el corpus de entrenamiento, generando [IsNext]
o [NotNext]
. El primer fragmento comienza con un token especial [CLS]
(para "clasificar"). Los dos fragmentos están separados por un token especial [SEP]
(para "separar"). Después de procesar los dos fragmentos, el primer vector de salida (el vector que codifica para [CLS]
) se pasa a una red neuronal separada para la clasificación binaria en [IsNext]
y [NotNext]
.
[CLS]
mi perro es lindo [SEP]
y le gusta jugar", el modelo debería generar el token [IsNext]
.[CLS]
mi perro es lindo, [SEP]
¿cómo funcionan los imanes?", el modelo debería generar el token [NotNext]
.BERT está pensado como un modelo general preentrenado para diversas aplicaciones en el procesamiento del lenguaje natural. Es decir, después del preentrenamiento, BERT se puede ajustar con menos recursos en conjuntos de datos más pequeños para optimizar su rendimiento en tareas específicas, como la inferencia del lenguaje natural y la clasificación de texto , y tareas de generación de lenguaje basadas en secuencias, como la respuesta a preguntas y la generación de respuestas conversacionales. [12]
El artículo original de BERT publicó resultados que demuestran que una pequeña cantidad de ajustes (para BERT LARGE , 1 hora en 1 TPU de nube) le permitió lograr un rendimiento de vanguardia en una serie de tareas de comprensión del lenguaje natural : [1]
En el artículo original, se ajustan todos los parámetros de BERT y se recomienda que, para aplicaciones posteriores que sean clasificaciones de texto, el token de salida en el [CLS]
token de entrada se introduzca en una capa softmax lineal para producir las salidas de etiqueta. [1]
La base del código original definía la capa lineal final como una "capa agrupadora", en analogía con el agrupamiento global en la visión por computadora, aunque simplemente descarta todos los tokens de salida excepto el correspondiente a [CLS]
. [15]
BERT se entrenó en BookCorpus (800 millones de palabras) y una versión filtrada de Wikipedia en inglés (2500 millones de palabras) sin listas, tablas ni encabezados.
El entrenamiento de BERT BASE en 4 TPU en la nube (16 chips de TPU en total) tomó 4 días, con un costo estimado de 500 USD. [7] El entrenamiento de BERT LARGE en 16 TPU en la nube (64 chips de TPU en total) tomó 4 días. [1]
Los modelos de lenguaje como ELMo, GPT-2 y BERT dieron origen al estudio de la "BERTología", que intenta interpretar lo que aprenden estos modelos. Su desempeño en estas tareas de comprensión del lenguaje natural aún no se comprende bien. [3] [16] [17] Varias publicaciones de investigación en 2018 y 2019 se centraron en investigar la relación detrás de la salida de BERT como resultado de secuencias de entrada cuidadosamente elegidas, [18] [19] análisis de representaciones vectoriales internas a través de clasificadores de sondeo, [20] [21] y las relaciones representadas por pesos de atención . [16] [17]
El alto rendimiento del modelo BERT también podría atribuirse [ cita requerida ] al hecho de que se entrena de forma bidireccional. Esto significa que BERT, basado en la arquitectura del modelo Transformer, aplica su mecanismo de autoatención para aprender información de un texto desde el lado izquierdo y derecho durante el entrenamiento y, en consecuencia, obtiene una comprensión profunda del contexto. Por ejemplo, la palabra fine puede tener dos significados diferentes según el contexto ( I feel fine today , She has fine blond hair ). BERT considera las palabras que rodean la palabra objetivo fine desde el lado izquierdo y derecho.
Sin embargo, esto tiene un costo: debido a que la arquitectura de solo codificador carece de un decodificador, BERT no puede ser activado y no puede generar texto , mientras que los modelos bidireccionales en general no funcionan de manera efectiva sin el lado derecho, por lo que es difícil activarlos. Como ejemplo ilustrativo, si uno desea usar BERT para continuar un fragmento de oración "Hoy, fui a", entonces ingenuamente enmascararía todos los tokens como "Hoy, fui a [MASK]
[MASK]
[MASK]
... [MASK]
", donde el número de [MASK]
es la longitud de la oración que uno desea extender. Sin embargo, esto constituye un cambio de conjunto de datos, ya que durante el entrenamiento, BERT nunca ha visto oraciones con tantos tokens enmascarados. En consecuencia, su rendimiento se degrada. Las técnicas más sofisticadas permiten la generación de texto, pero a un alto costo computacional. [22]
BERT fue publicado originalmente por los investigadores de Google Jacob Devlin, Ming-Wei Chang, Kenton Lee y Kristina Toutanova. El diseño tiene su origen en representaciones contextuales de preentrenamiento, incluyendo el aprendizaje de secuencias semisupervisado , [23] preentrenamiento generativo, ELMo , [24] y ULMFit. [25] A diferencia de los modelos anteriores, BERT es una representación del lenguaje profundamente bidireccional y no supervisada , preentrenada utilizando solo un corpus de texto simple . Los modelos independientes del contexto como word2vec o GloVe generan una única representación de incrustación de palabras para cada palabra del vocabulario, mientras que BERT tiene en cuenta el contexto para cada ocurrencia de una palabra dada. Por ejemplo, mientras que el vector para "correr" tendrá la misma representación vectorial word2vec para ambas ocurrencias en las oraciones "Él está dirigiendo una empresa" y "Él está corriendo un maratón", BERT proporcionará una incrustación contextualizada que será diferente según la oración. [4]
El 25 de octubre de 2019, Google anunció que había comenzado a aplicar modelos BERT para consultas de búsqueda en inglés en los EE. UU . [26] El 9 de diciembre de 2019, se informó que Google Search había adoptado BERT para más de 70 idiomas. [27] [28] En octubre de 2020, casi todas las consultas en inglés fueron procesadas por un modelo BERT. [29]
Los modelos BERT fueron influyentes e inspiraron muchas variantes.
RoBERTa (2019) [30] fue una mejora de ingeniería. Conserva la arquitectura de BERT (un poco más grande, con 355 millones de parámetros), pero mejora su entrenamiento, modificando hiperparámetros clave, eliminando la tarea de predicción de la siguiente oración y utilizando tamaños de minilotes mucho más grandes .
DistilBERT (2019) destila BERT BASE a un modelo con solo el 60% de sus parámetros (66M), mientras que conserva el 95% de sus puntajes de referencia. [31] [32] De manera similar, TinyBERT (2019) [33] es un modelo destilado con solo el 28% de sus parámetros.
ALBERT (2019) [34] utilizó parámetros compartidos entre capas y experimentó con la variación independiente del tamaño oculto y el tamaño de salida de la capa de inserción de palabras como dos hiperparámetros. También reemplazaron la tarea de predicción de la siguiente oración con la tarea de predicción del orden de oraciones (SOP), donde el modelo debe distinguir el orden correcto de dos segmentos de texto consecutivos de su orden inverso.
ELECTRA (2020) [35] aplicó la idea de redes generativas adversarias a la tarea MLM. En lugar de enmascarar tokens, un modelo de lenguaje pequeño genera sustituciones plausibles aleatorias, y una red más grande identifica estos tokens reemplazados. El modelo pequeño tiene como objetivo engañar al modelo grande.
DeBERTa (2020) [36] es una variante arquitectónica importante, con atención desenredada . Su idea clave es tratar las codificaciones posicional y de token por separado a lo largo del mecanismo de atención. En lugar de combinar la codificación posicional ( ) y la codificación de token ( ) en un único vector de entrada ( ), DeBERTa las mantiene separadas como una tupla: ( ). Luego, en cada capa de autoatención, DeBERTa calcula tres matrices de atención distintas, en lugar de la matriz de atención única utilizada en BERT: [nota 1]
Tipo de atención | Tipo de consulta | Tipo de clave | Ejemplo |
---|---|---|---|
De contenido a contenido | Simbólico | Simbólico | "Europa"; "Unión", "continente" |
Contenido a posición | Simbólico | Posición | [adjetivo]; +1, +2, +3 |
Posición-contenido | Posición | Simbólico | -1; "no", "muy" |
Las tres matrices de atención se suman elemento por elemento, luego se pasan a través de una capa softmax y se multiplican por una matriz de proyección.
La codificación de posición absoluta se incluye en la capa de autoatención final como entrada adicional.