E· Universitetsprakmodeller· ca 60 min· utvecklande· verifierad 2026-09-20
Byte-pair encoding
Kunna implementera BPE-träning och tokenisering och förklara ordförrådets avvägningar.
Förkunskaper
- DTokeniseringkrävs
Intuition
BPE-träning bygger ordförrådet nerifrån:
- Börja med alla enskilda tecken (eller bytes).
- Räkna alla par av intilliggande symboler i korpusen.
- Slå ihop det vanligaste paret till en ny symbol.
- Upprepa tills ordförrådet är av önskad storlek.
Resultatet: vanliga ord blir en enda token, ovanliga byggs av delar. Inget är okänt — i värsta fall stavas ordet ut tecken för tecken.
Byte-level BPE (GPT-2 och framåt) börjar på bytes i stället för tecken. Då kan vilken text som helst representeras, inklusive emojier och alla språk, utan <unk>.
Kod
from collections import Counter
def bpe_trana(ord_frekvens, antal_merges):
vokab = {tuple(w) + ("</w>",): f for w, f in ord_frekvens.items()}
merges = []
for _ in range(antal_merges):
par = Counter()
for symboler, f in vokab.items():
for a, b in zip(symboler, symboler[1:]):
par[(a, b)] += f
if not par:
break
basta = par.most_common(1)[0][0]
merges.append(basta)
nytt = {}
for symboler, f in vokab.items():
ut, i = [], 0
while i < len(symboler):
if i + 1 < len(symboler) and (symboler[i], symboler[i+1]) == basta:
ut.append(symboler[i] + symboler[i+1]); i += 2
else:
ut.append(symboler[i]); i += 1
nytt[tuple(ut)] = f
vokab = nytt
return merges
korpus = {"låg": 5, "lågt": 3, "lägre": 2, "låga": 4}
print(bpe_trana(korpus, 4))
# [('l', 'å'), ('lå', 'g'), ('lägre', '</w>')-liknande beroende på frekvenser]
Avvägningarna med ordförrådets storlek:
| Litet (8 k) | Stort (200 k) |
|---|---|
| liten embedding-matris | stor matris (200k × d parametrar) |
| långa sekvenser → dyr attention | korta sekvenser → billigare |
| varje token tränas mycket | sällsynta tokens tränas knappt |
Svenska får ofta 1,5–2× fler tokens per ord än engelska i modeller tränade mest på engelska — det betyder direkt högre kostnad och mindre effektivt kontextfönster för svenska texter.
Behärskning innebär
- Implementerar BPE-träning och kodning
- Förklarar ordförrådets avvägningar
- Ser hur tokenisering påverkar kostnad och kvalitet
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- arXiv — Neural Machine Translation of Rare Words with Subword Units — arXiv (öppen åtkomst; licens per artikel)
- Hugging Face — dokumentation (Apache-2.0) — Apache-2.0