Hoppa till innehållet
AI-grafen
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

Intuition

BPE-träning bygger ordförrådet nerifrån:

  1. Börja med alla enskilda tecken (eller bytes).
  2. Räkna alla par av intilliggande symboler i korpusen.
  3. Slå ihop det vanligaste paret till en ny symbol.
  4. 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-matrisstor matris (200k × d parametrar)
långa sekvenser → dyr attentionkorta sekvenser → billigare
varje token tränas mycketsä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

Alla källor och licenser