BERT (modelo de linguaxe)

BERT (Representacións de Codificador Bidireccional de Transformadores, en inglés, Bidirectional Encoder Representations from Transformers) é un modelo de linguaxe bidireccional introducido en outubro de 2018 por investigadores de Google. Aprendeuse mediante a aprendizaxe supervisada a representar o texto como unha secuencia de vectores. Ten a arquitectura do codificador do transformador. Destaca pola súa dramática mellora con respecto aos modelos anteriores do estado da arte, e como un dos primeiros exemplos de gran modelo de linguaxe. A partir do ano 2020, BERT foi unha liña base omnipresente nos experimentos de procesamento da linguaxe natural (PLN). BERT é adestrado pola predición de porcións enmascaradas e a predición da seguinte frase. Por mor deste proceso de adestramento, BERT aprende representacións contextuais latentes de porcións no seu contexto, similar a ELMo e GPT-2. Atopáronse aplicacións para moitas tarefas de procesamento da linguaxe natural, como a resolución de correferencia e a resolución da polisemia. É un paso evolutivo sobre ELMo e xerou o estudo de "BERToloxía", o cal tenta interpretar o que é aprendido por BERT.
BERT implementouse orixinalmente en inglés en dous tamaños de modelos, BERTBASE (110 millóns de parámetros) e BERTLARGE (340 millóns de parámetros). Ambos foron adestrados no BookCorpus de Toronto (800 millóns de palabras) e na Wikipedia en inglés (2500 millóns de palabras). Os pesos foron publicados en GitHub. O 11 de marzo de 2020 lanzáronse 24 modelos máis pequenos, sendo o máis pequeno BERTTINY con só 4 millóns de parámetros. Arquitectura
BERT é unha arquitectura de transformador de "só-codificador". A alto nivel, BERT consta de 4 módulos: Tokenizer: este módulo converte unha peza de texto en inglés nunha secuencia de números enteiros (porcións ou tokens, do inglés).
Incrustación: este módulo converte a secuencia de porcións nunha matriz de vectores con valores reais que representan as porcións. Representa a conversión de tipos de porcións discretas nun espazo euclidiano de dimensión inferior.
Codificador: unha pila de bloques de transformador con autoatención, pero sen enmascaramento causal.
Cabeza de tarefa: este módulo converte os vectores da representación final en porcións codificadas de novo, producindo unha distribución de probabilidade prevista sobre os tipos de porcións. Pódese ver como un descodificador simple, descodificando a representación latente en tipos de porcións ou como unha "capa de non incrustación".
A cabeza de tarefa é necesaria para o adestramento previo, pero adoita ser innecesaria para as chamadas tarefas posteriores, como a resposta a preguntas ou a clasificación de sentimentos. En vez diso, quita o cabezal de tarefa e substitúeo por un módulo que se acaba de inicializar adecuado para a tarefa, e fai un axuste fino do novo módulo. A representación vectorial latente do modelo introdúcese directamente neste novo módulo, o que permite unha aprendizaxe de transferencia de mostras eficiente.
Incrustación
Esta sección describe a incrustación utilizada no BERTBASE. O BERTLARGE é semellante pero máis grande.
O tokenizer de BERT é WordPiece, que é unha estratexia de subpalabras como a codificación de pares de bytes. O seu tamaño de vocabulario é de 30000, e calquera porción que non apareza no seu vocabulario substitúese por [UNK] ("descoñecido"). A primeira capa é a capa de incrustación, que contén tres compoñentes: incrustacións de tipo porción, incrustacións de posición e incrustacións de tipo segmento. Tipo de porción: o tipo de porción é unha capa de incrustación estándar, que traduce un vector con tódolos valores 0 salvo un, que vale 1, nun vector denso en función do seu tipo de porción.
Posición: as incrustacións de posición baséanse na posición dunha porción na secuencia. BERT usa incrustacións de posicións absolutas, onde cada posición da secuencia asígnase a un vector de valor real. Cada dimensión do vector consta dunha función sinusoidal que toma como entrada a posición na secuencia.
Tipo de segmento: usando un vocabulario de só 0 ou 1, esta capa de incrustación produce un vector denso en función de se o símbolo pertence ao primeiro ou segundo segmento de texto desa entrada. Noutras palabras, as porcións de tipo 1 son tódalas porcións que aparecen despois da porción especial [SEP]. Tódalas porcións anteriores son de tipo 0.
Os tres vectores de incrustación súmanse simbolizando a representación inicial da porción en función destas tres pezas de información. Despois da incrustación, a representación vectorial normalízase mediante unha capa de normalización, producindo un vector de 768 dimensións para cada porción de entrada. Despois disto, os vectores de representación pásanse cara adiante a través de 12 bloques codificador do transformador, e son descodificados de volta ao espazo de vocabulario de 30000 dimensións usando unha capa de transformación afín básica.
Familia arquitectónica
A pila de codificador de BERT ten 2 parámetros libres: L {\displaystyle L}, o número de capas e H {\displaystyle H}, o tamaño oculto. Sempre hai H / 64 {\displaystyle H/64} cabezas de autoatención, e o tamaño de capa de avance/filtro é sempre 4 H {\displaystyle 4H}. Variando estes dous números, obtense toda unha familia de modelos BERT.
Para BERT, o tamaño da capa de avance e o tamaño do filtro son sinónimos. Ambos indican o número de dimensións na capa media da rede de avance. Tamén son sinónimos o tamaño oculto e o tamaño de incrustación. Ambos indican a cantidade de números reais utilizados para representar unha porción.
A notación para a pila de codificador escríbese como L/H. Por exemplo, BERTBASE escríbese como 12L/768H, BERTLARGE como 24L/1024H e BERTTINY como 2L/128H. Adestramento
BERT foi adestrado previamente en dúas tarefas á vez.
Modelado de linguaxe enmascarada
substitúese por [MASK] cunha probabilidade do 80%,
substitúese por unha porción de palabra aleatoria cunha probabilidade do 10%,
non se substitúe cunha probabilidade do 10%.
O motivo polo que non tódalas porcións seleccionadas están enmascaradas é para evitar o problema do cambio de conxunto de datos. O problema do cambio do conxunto de datos xorde cando a distribución de entradas observadas durante o adestramento difire de forma significativa da distribución atopada durante a inferencia. Pódese aplicar un modelo BERT adestrado á representación de palabras (como Word2Vec), onde se executaría sobre frases que non conteñan ningún símbolo [MASK]. Máis tarde compróbase que os obxectivos de adestramento máis diversos son xeralmente mellores.
Como exemplo ilustrativo, considérese a oración "o meu can é bonito". Primeiro dividiríase en porcións como "o1 meu2 can3 é4 bonito5". Despois escolleríase unha porción aleatoria na oración, por exemplo, a quinta porción, "bonito5". A continuación, habería tres posibilidades: cunha probabilidade do 80%, a ficha escollida está enmascarada, resultando "o1 meu2 can3 é4 [MASK]5";
cunha probabilidade do 10%, a ficha escollida substitúese por unha ficha aleatoria mostrada uniformemente, como feliz, o que resulta en "o1 meu2 can3 é4 feliz5";
cunha probabilidade do 10%, non se fai nada, o que resulta en "o1 meu2 can3 é4 bonito5".
Despois de procesar o texto de entrada, o 5º vector de saída do modelo pásase á súa capa de descodificador, o que produce unha distribución de probabilidade sobre o seu espazo de vocabulario de 30000 dimensións.
Predición da seguinte frase
Por exemplo, dado "[CLS] o meu can é bonito [SEP] gústalle xogar", o modelo debería mostrar o a porción [IsNext].
Dado "[CLS] o meu can é bonito [SEP] como funcionan os imáns", o modelo debería emitir a porción [NotNext].
Axuste fino
BERT está pensado como un modelo xeral adestrado previamente para varias aplicacións no procesamento da linguaxe natural. É dicir, despois do adestramento previo, BERT pódese perfeccionar con menos recursos en conxuntos de datos máis pequenos para optimizar o seu rendemento en tarefas específicas, como a inferencia da linguaxe natural e a clasificación de textos, e tarefas de xeración de linguaxe baseadas en secuencia a secuencia, como a resposta a preguntas e a xeración de resposta nunha conversación. O artigo orixinal de BERT publicou resultados que demostraban que unha pequena cantidade de axustes finos (para BERTLARGE, 1 hora en 1 Cloud TPU) permitiulle acadar un rendemento de última xeración nunha serie de tarefas de comprensión da linguaxe natural: conxunto de tarefas GLUE (Avaliación Xeral da Comprensión da Linguaxe, polas súas siglas en inglés), composto por 9 tarefas;
SQuAD (Conxunto de resposta a preguntas de Stanford) v1. 1 e v2. 0;
SWAG (Situacións con xeracións adversarias).
Custo
BERT adestrouse no BookCorpus (800 millóns de palabras) e nunha versión filtrada da Wikipedia en inglés (2500 millóns de palabras) sen listas, táboas e cabeceiras.
O adestramento de BERTBASE en 4 Cloud TPU (16 chips TPU en total) levou 4 días, cun custo estimado de 500 USD. O adestramento de BERTLARGE en 16 Cloud TPU (64 chips TPU en total) levou tamén 4 días. Interpretación
Modelos lingüísticos como ELMo, GPT-2 e BERT xeraron o estudo da "BERToloxía", que intenta interpretar o que aprenden estes modelos. O seu desempeño nestas tarefas de comprensión da linguaxe natural aínda non se entende ben Varias publicacións de investigación en 2018 e 2019 centráronse en investigar a relación detrás da saída de BERT como resultado de secuencias de entrada coidadosamente escollidas, análise de representacións vectoriais internas mediante clasificadores de sondaxe, e as relacións representadas por pesos de atención.
Tamén se podería atribuír o alto rendemento do modelo BERT ao feito de que está adestrado de forma bidireccional. Isto significa que BERT, baseado na arquitectura dos transformadores, aplica o seu mecanismo de autoatención para aprender información dun texto dende o lado esquerdo e dereito durante o adestramento e, en consecuencia, adquire unha profunda comprensión do contexto. Por exemplo, a palabra fino pode ter dous significados diferentes dependendo do contexto ("Cortouse cun papel moi fino", "O seu mozo era moi fino"). BERT considera que as palabras que rodean á palabra obxectivo están ben dende o lado esquerdo e dereito.
Non obstante, ten un custo: debido a que a arquitectura só de codificador carece dun descodificador, BERT non pode ser inducido e non pode xerar texto, mentres que os modelos bidireccionais en xeral non funcionan de forma eficaz sen o lado dereito, polo que é difícil inducilos. Como exemplo ilustrativo, se se quere usar BERT para continuar un fragmento de frase "Hoxe fun a", entón inxenuamente enmascararía tódalas porcións como "Hoxe fun a [MASK] [MASK] [MASK]. .. [MASK]. " onde o número de [MASK] é a lonxitude da frase á que se desexa estender. Porén, isto constitúe un cambio de conxunto de datos, xa que durante o adestramento, BERT nunca viu frases con tantas porcións enmascaradas. En consecuencia, o seu rendemento degrada. As técnicas máis sofisticadas permiten a xeración de texto, pero cun alto custo de computación. Historia
BERT foi publicado orixinalmente polos investigadores de Google Jacob Devlin, Ming-Wei Chang, Kenton Lee e Kristina Toutanova. O deseño ten a súa orixe a partir de representacións contextuais previas ao adestramento, incluíndo a aprendizaxe de secuencias semi-supervisadas, formación previa xerativa, ELMo, e ULMFit. A diferenza dos modelos anteriores, BERT é unha representación lingüística profundamente bidireccional e non supervisada, adestrada previamente usando só un corpus de texto sinxelo. Os modelos sen contexto como word2vec ou GloVe xeran unha soa representación para cada palabra no vocabulario, mentres que BERT ten en conta o contexto para cada aparición dunha palabra determinada. Por exemplo, mentres que o vector para saltar terá a mesma representación vectorial word2vec para ambas as súas aparicións nas frases "Vai saltar este capítulo" e "Quere saltar a cancela", BERT proporcionará unha incorporación contextualizada que será diferente segundo a oración.
O 25 de outubro de 2019, Google anunciou que comezara a aplicar modelos BERT para consultas de busca en inglés nos EUA. O 9 de decembro de 2019, informouse de que BERT fora adoptado pola Busca de Google para máis de 70 idiomas. En outubro de 2020, case todas as consultas baseadas en inglés foron procesadas por un modelo BERT. Variantes
Os modelos BERT foron influentes e inspiraron moitas variantes.
RoBERTa (2019) conserva a arquitectura de BERT (un pouco máis grande, con 355 millóns de parámetros), pero mellora o seu adestramento, cambiando os hiperparámetros clave, eliminando a tarefa de predición da seguinte frase e utilizando tamaños de mini-lote moito maiores.
DistilBERT (2019) destila BERTBASE nun modelo con só o 60 % dos seus parámetros (66 millóns), á vez que conserva o 95 % das súas puntuacións de referencia. Do mesmo xeito, TinyBERT (2019) é un modelo destilado con só o 28% dos seus parámetros.
ALBERT (2019) utilizou parámetros compartidos entre capas e experimentou variando de forma independente o tamaño oculto e o tamaño de saída da capa de incrustación de palabras como dous hiperparámetros. Tamén substituíron a tarefa de predición da seguinte frase pola tarefa de predición de ordes de frases (SOP), onde o modelo debe distinguir a orde correcta de dous segmentos de texto consecutivos da súa orde inversa.
ELECTRA (2020) aplicou a idea de redes adversarias xerativas á tarefa de modelos de linguaxe enmascarados. En lugar de enmascarar as porcións, un pequeno modelo de linguaxe xera substitucións plausibles aleatorias e unha rede máis grande identifica estas porcións substituídas. O modelo pequeno pretende enganar ao modelo grande.
DeBERTa (2020) é unha variante arquitectónica significativa, cunha atención desenredada. A súa idea clave é tratar as codificacións posicionais e os símbolos por separado ao longo do mecanismo de atención. En lugar de combinar a codificación posicional ( x p o s i c i o n {\displaystyle x_{posicion}} ) e codificación de porción ( x p o r c i o n {\displaystyle x_{porcion}} ) nun único vector de entrada ( x e n t r a d a
x p o s i c i o n + x p o r c i o n {\displaystyle x_{entrada}
x_{posicion}+x_{porcion}} ), DeBERTa mantenos separados como unha tupla: ( x p o s i t i o n, x t o k e n ) {\displaystyle (x_{position}, x_{token})}. Despois, en cada capa de autoatención, DeBERTa calcula tres matrices de atención distintas, en lugar da única matriz de atención usada en BERT: As tres matrices de atención engádense por elementos, despois pásanse por unha capa softmax e multiplícanse por unha matriz de proxección.
A codificación de posición absoluta inclúese na capa de autoatención final como entrada adicional. BERT multilingüe
Despois de ter o modelo BERT funcionando para o inglés, investigadores de Google preguntáronse se se podía utilizar este modelo de linguaxe con varias linguas. Así, en 2019 crearon o BERT multilingüe, ou M-BERT, un modelo BERT que traballa con varias linguas.
En canto á súa arquitectura, M-BERT ten 12 capas de transformador, e o seu adestramento, a diferenza do BERT orixinal, fíxose con artigos da Wikipedia en 104 idiomas. No resto da súa construción e funcionamento, é semellante ao BERT orixinal. O seu refinamento baseouse no modelo de lingua cruzada, é dicir, facíase un axuste fino do modelo nunha lingua e logo avaliábase noutra diferente, para observar como o modelo relacionaba as diferentes linguas e era capaz xeneralizar. O rendemento foi impresionante, xa que o modelo daba moi bos resultados na lingua na que non foi adestrada. Mais isto non era sempre así, pois había algúns pares de linguas que non daban os números desexados, polo que non se pode usar sistematicamente para calquera idioma. Ademais, algúns autores sospeitan que, incluso nas linguas que os resultados son bos, o seu rendemento non é tan robusto como os modelos monolingües.
Destacar que ademais do M-BERT, tamén se creou a variante XLM-RoBERTa (modelo de linguaxe cruzada RoBERTa), que utiliza a filosofía de RoBERTa para adestrar ao modelo, utilizando múltiples linguas de diferentes corpus. Esta arquitectura mellorou ao BERT multilingüe. Bertinho: o BERT en galego
Dado que se demostrou que é posible crear modelos BERT monolingües para linguas con poucos recursos (collendo, ademais dos datos na propia lingua, datos doutras linguas traducidos, para ter desta forma moitos máis datos etiquetados) que funcionan mellor que o BERT multilingüe, investigadores galegos fixeron en 2021 un modelo monolingüe para a lingua propia de Galicia.
Crearon dous modelos Bertinho, un de 6 capas de transformadores (BertinhoSMALL) e outro de 12 (BertinhoBASE), adestrados cunha cantidade limitada de recursos (ao redor de 45 millóns de palabras sobre unha GPU de 24GB). Estes modelos adestráronse coa versión da Galipedia do 1 de febreiro de 2020, utilizando a ferramenta wikiextractor para poñer os artigos en texto plano. Esta ferramenta divide a saída en ficheiros de 1MB, onde escolleron o 95% para o conxunto de adestramento e o 5% restante para o conxunto de avaliación. Decidiron escoller a Galipedia por ter un formato de enciclopedia e non conter erros (como frases incompletas) como outros corpus de adestramento. O adestramento, salvando algúns detalles, foi similar ao do BERT orixinal.
Nun dos experimentos que fixeron comparando o M-BERT co Bertinho, este último separa mellor as palabras en morfemas. Na frase Os nosos amigos dixéronnos que o camiño era este, o modelo multilingüe separa a palabra nosos como nos-os, onde se interpreta que o modelo cre que nosos é o plural masculino de nos. Outro erro que comete é separar camiño como cam-iño, como se se estivese tratando dun diminutivo dunha palabra con raíz cam. No caso do verbo dixéronnos, sepárao como dix-éro-nno-s, cando a separación correcta é dix-éron-nos, indicando a raíz; o tempo, número e persoa e o pronome. Nos 3 casos, o modelo Bertinho fai a separación correcta.
Ademais de adestrar na Galipedia, utilizaron outros corpus en galego para avaliar diferentes características: o CTAG corpus, o CTG-UD e o Galician-TreeGal. Despois das numerosas probas, concluíron que o mellor modelo era o Bertinho de 12 capas. En calquera caso, ambos modelos melloraron os resultados do M-BERT na maior parte das tarefas.
Estes modelos subíronos ao portal de Hugging Face, quen tamén creou un RoBERTa en galego (RoBERTinha), baseado na aproximación presentada por Pedro Javier Ortiz, Laurent Romary e Benoît Sagot.