BERT (Bidirectional Encoder Representations from Transformers)
BERT é o codificador Transformer bidirecional da Google, pré-treinado para prever palavras ocultas a partir de ambos os lados. Aborda como funciona, o ajuste fino e as variantes.
BERT (Representações de Codificadores Bidirecionais de Transformers) é um codificador Transformer que lê uma frase inteira de uma vez e cria a representação de cada palavra com base nas palavras dos dois lados. Jacob Devlin, Ming-Wei Chang, Kenton Lee e Kristina Toutanova, da Google AI Language, o apresentaram em outubro de 2018 no artigo BERT: Pré-treinamento de Transformers Profundamente Bidirecionais para Compreensão da Linguagem, que recebeu o prêmio de melhor artigo longo da NAACL 2019. Um único BERT pré-treinado, ajustado com uma camada de saída adicional, estabeleceu novos resultados de ponta em onze tarefas de processamento de linguagem natural (NLP), elevando a pontuação no benchmark GLUE para 80,5%, uma melhoria absoluta de 7,7 pontos, e a resposta a perguntas do SQuAD v1.1 para F1 de teste de 93,2.
Como o BERT é pré-treinado#
O BERT-Base empilha 12 camadas de codificador com estados ocultos de 768 dimensões e 12 cabeças de atenção, totalizando cerca de 110 milhões de parâmetros; o BERT-Large tem 24 camadas, 1.024 dimensões, 16 cabeças e 340 milhões de parâmetros. O texto de entrada é dividido por tokenização WordPiece em um vocabulário de 30.000 tokens; o token especial [CLS] inicia cada sequência, e [SEP] separa os dois segmentos de um par de frases. O Google pré-treinou os dois tamanhos com o BooksCorpus (800 milhões de palavras) e a Wikipédia em inglês (2.500 milhões de palavras), usando dois objetivos autossupervisionados.
A modelagem de linguagem mascarada (MLM) seleciona 15% das posições dos tokens, substitui 80% delas por [MASK], 10% por um token aleatório e mantém 10% inalteradas; então, o modelo prevê os tokens originais. A autoatenção do BERT não tem máscara causal, portanto cada previsão usa o contexto dos dois lados, algo que um modelo de linguagem da esquerda para a direita não consegue fazer. A previsão da próxima frase (NSP) associa cada segmento ao seu sucessor verdadeiro metade das vezes e a uma frase aleatória no restante; um classificador na saída [CLS] aprende a distinguir os dois casos.
Um checkpoint pré-treinado mantém sua cabeça de previsão de palavras mascaradas, permitindo que o modelo original preencha diretamente uma lacuna:
from transformers import pipeline
# BERT prevê uma palavra mascarada com base nas palavras dos dois lados dela
fill = pipeline("fill-mask", model="bert-base-uncased")
for text in ["She went to the [MASK] to buy bread.", "She went to the [MASK] to see a doctor."]:
predictions = fill(text, top_k=3)
print(text, [(p["token_str"], round(p["score"], 2)) for p in predictions])As duas frases diferem apenas depois da lacuna, e a principal previsão do BERT muda de "market" (0.82) para "hospital" (0.78). Um modelo que lê da esquerda para a direita vê "She went to the" nas duas frases e não tem nada que as diferencie.
Ajuste fino e aplicações#
O ajuste fino adiciona uma pequena camada específica para a tarefa e treina todos os pesos com exemplos rotulados, uma abordagem que tornou o aprendizado por transferência o padrão em NLP. O vetor [CLS] alimenta classificadores de frases, como a análise de sentimentos; cada vetor de token alimenta tarefas de marcação, como o reconhecimento de entidades nomeadas (NER); e as pontuações de início e fim dos tokens extraem trechos que contêm respostas.
O Google começou a usar o BERT em 1 em cada 10 buscas em inglês nos EUA em outubro de 2019, citando a consulta "2019 brazil traveler to usa need a visa", na qual o BERT reconheceu que "to" indica que uma pessoa brasileira está viajando para os EUA. Em outubro de 2020, ele já era usado em quase todas as consultas em inglês. Os codificadores da família BERT também produzem os embeddings por trás da busca semântica: o Sentence-BERT ajusta o BERT para mapear cada frase em um único vetor para busca vetorial, o ColBERT mantém um vetor por token, e os reordenadores com codificador cruzado pontuam pares de consulta e trecho em pipelines de geração aumentada por recuperação (RAG).
Na detecção com visão e linguagem, o Grounding DINO codifica prompts de texto com um codificador BERT-base antes de associá-los às regiões da imagem. A Ultralytics Platform hospeda o Grounding DINO para anotação inteligente guiada por classe, convertendo os nomes das classes de um conjunto de dados em caixas editáveis para treinar um detector YOLO26. A predição mascarada também chegou às imagens: o Vision Transformer (ViT) adotou o token [CLS] do BERT para classificação, e os autocodificadores mascarados (MAE) pré-treinam codificadores de imagem ocultando 75% dos recortes da imagem e reconstruindo-os.
BERT versus GPT e codificadores posteriores#
Os modelos GPT são construídos com o decodificador Transformer e uma máscara causal, por isso preveem cada próximo token a partir dos tokens anteriores e são adequados para geração de texto. O BERT produz um vetor para cada token de entrada, o que é adequado para classificação, extração e recuperação, mas não tem uma forma integrada de escrever texto da esquerda para a direita. Um grande modelo de linguagem (LLM) com bilhões de parâmetros executa muitas das mesmas tarefas de compreensão por meio de prompts, mas com um custo por consulta muitas vezes maior que o de um codificador de 110 milhões de parâmetros.
Codificadores posteriores aprimoraram a receita. O RoBERTa, da Meta, removeu o NSP e foi treinado por mais tempo, com lotes maiores e cerca de 160 GB de texto, mostrando que o BERT tinha sido significativamente subtreinado; o DistilBERT, da Hugging Face, usou destilação de conhecimento para reduzir em 40% a quantidade de parâmetros e executar 60% mais rápido, mantendo 97% do desempenho de compreensão de linguagem do BERT. O ModernBERT, lançado em dezembro de 2024 pela Answer.AI e pela LightOn, foi treinado com 2 trilhões de tokens e tem um comprimento de contexto nativo de 8.192 tokens, 16 vezes o limite de 512 tokens do BERT.










