BERT och maskerad språkmodellering
Kunna förklara MLM-träning och använda en BERT-modell för klassificering.
Förkunskaper
Intuition
GPT läser från vänster: varje token ser bara det som kom före. Bra för att generera. Men för att förstå en mening — klassificera, hitta entiteter, jämföra — vill man se hela meningen åt båda håll.
BERT är en encoder: ingen kausal mask. Träning: maskera 15 % av tokens ([MASK]) och gissa dem — masked language modeling. Modellen lär sig kontextuella representationer men kan inte generera text.
Användning: lägg ett litet klassificeringshuvud ovanpå [CLS]-tokenens vektor (eller medelpoola alla), finjustera hela modellen några epoker. Med små datamängder (hundratals exempel) slår en finjusterad encoder ofta en promptad LLM i både träffsäkerhet och kostnad.
Kod
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
namn = "KB/bert-base-swedish-cased" # svensk BERT (KB-lab)
tok = AutoTokenizer.from_pretrained(namn)
modell = AutoModelForSequenceClassification.from_pretrained(namn, num_labels=3)
batch = tok(["Servicen var utmärkt", "Aldrig mer"], padding=True, truncation=True, return_tensors="pt")
print(batch["input_ids"].shape) # (2, T)
logits = modell(**batch).logits # (2, 3) — otränat huvud tills du finjusterat
# MLM-demo
fill = pipeline("fill-mask", model=namn)
print(fill("Stockholm är Sveriges [MASK].")[0]["token_str"]) # huvudstad
Finjustering: Trainer eller en vanlig PyTorch-loop, lr ≈ 2e-5, 3 epoker, batch 16–32. Frys inget — hela modellen uppdateras.
Formellt
MLM-målet: för maskerade positioner , minimera där är sekvensen med mask. BERT använder 80/10/10 (mask/slumptoken/oförändrad) för att minska diskrepansen mellan träning och finjustering, då [MASK] aldrig förekommer vid inferens. Encoder-attention är full ( utan mask), vilket ger bidirektionell kontext men gör modellen icke-autoregressiv. Sentence-embeddings (SBERT) tränas kontrastivt så att cosinuslikhet mellan poolade vektorer speglar semantisk likhet — grunden för semantisk retrieval.
Behärskning innebär
- Förklarar MLM-träning och skillnaden mot kausal LM
- Använder en encoder för klassificering via [CLS] eller pooling
- Väljer encoder eller decoder efter uppgift
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — BERT: Pre-training of Deep Bidirectional Transformers — arXiv (öppen åtkomst; licens per artikel)
- Hugging Face — dokumentation (Apache-2.0) — Apache-2.0