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.[1] 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).[2]
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.[3] Atopáronse aplicacións para moitas tarefas de procesamento da linguaxe natural, como a resolución de correferencia e a resolución da polisemia.[4] É un paso evolutivo sobre ELMo e xerou o estudo de "BERToloxía", o cal tenta interpretar o que é aprendido por BERT.[2]
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 (2 500 millóns de palabras). Os pesos foron publicados en GitHub.[5] 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.[5]
BERT é unha arquitectura de transformador de "só-codificador". A alto nivel, BERT consta de 4 módulos:
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.
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 30 000, 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.
[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 30 000 dimensións usando unha capa de transformación afín básica.
A pila de codificador de BERT ten 2 parámetros libres: , o número de capas e , o tamaño oculto. Sempre hai cabezas de autoatención, e o tamaño de capa de avance/filtro é sempre . Variando estes dous números, obtense toda unha familia de modelos BERT.[6]
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.
BERT foi adestrado previamente en dúas tarefas á vez.[7]
[MASK]
cunha probabilidade do 80%,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.[8]
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:
[MASK]
5";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 30 000 dimensións.
[CLS]
o meu can é bonito [SEP]
gústalle xogar", o modelo debería mostrar o a porción [IsNext]
.[CLS]
o meu can é bonito [SEP]
como funcionan os imáns", o modelo debería emitir a porción [NotNext]
.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.[9]
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:
BERT adestrouse no BookCorpus (800 millóns de palabras) e nunha versión filtrada da Wikipedia en inglés (2 500 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.[5] O adestramento de BERTLARGE en 16 Cloud TPU (64 chips TPU en total) levou tamén 4 días.[9]
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[2][12][13] 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,[14][15] análise de representacións vectoriais internas mediante clasificadores de sondaxe,[16][17] e as relacións representadas por pesos de atención.[12][13]
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.[18]
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.[3]
O 25 de outubro de 2019, Google anunciou que comezara a aplicar modelos BERT para consultas de busca en inglés nos EUA.[19] O 9 de decembro de 2019, informouse de que BERT fora adoptado pola Busca de Google para máis de 70 idiomas.[20][21] En outubro de 2020, case todas as consultas baseadas en inglés foron procesadas por un modelo BERT.[22]
Os modelos BERT foron influentes e inspiraron moitas variantes.
RoBERTa (2019)[23] 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.[24] Do mesmo xeito, TinyBERT (2019) é un modelo destilado con só o 28% dos seus parámetros.
ALBERT (2019)[25] 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)[26] 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)[27] é 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 () e codificación de porción () nun único vector de entrada (), DeBERTa mantenos separados como unha tupla: . 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:
Tipo de atención | Tipo de consulta | Tipo de clave | Exemplo |
---|---|---|---|
Contido a contido | Porción | Porción | "europeo"; "Unión", "continente" |
Contido a posición | Porción | Posición | [adxectivo]; +1, +2, +3 |
Posición a contido | Posición | Porción | -1; "non", "moi" |
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.
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.[28]
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.[28] 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.[29]
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.[30]
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[31]) que funcionan mellor que o BERT multilingüe, investigadores galegos fixeron en 2021 un modelo monolingüe para a lingua propia de Galicia.[29]
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.[29]
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.[29]
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.[29]
Estes modelos subíronos ao portal de Hugging Face,[32][33] quen tamén creou un RoBERTa en galego (RoBERTinha),[34] baseado na aproximación presentada por Pedro Javier Ortiz, Laurent Romary e Benoît Sagot.[35]