Transformery encoder-only: BERT, embeddingi i rerankery
Część 2 serii o architekturach. Dwukierunkowa atencja, cel treningowy maskowanego modelowania języka (MLM) z regułą 80/10/10, dlaczego enkodery nie potrafią generować, ale nadal są właściwym narzędziem do klasyfikacji, embeddingów i rerankerów, oraz co zmieniły współczesne enkodery, takie jak ModernBERT.
- deep dive
- transformer
- architektura
- BERT
- embeddingi
Modele encoder-only (tylko enkoder) niczego nie piszą, a są wszędzie. Większość modeli embeddingowych stojących za wyszukiwaniem w RAG i rerankerów, które sortują jego wyniki, to enkodery. To część 2 serii o architekturach, po modelach decoder-only.
Dwukierunkowa atencja
Blok enkodera jest taki sam jak blok dekodera, czyli atencja plus MLP z połączeniami rezydualnymi i normalizacjami, z jedną różnicą: nie ma maski przyczynowej. Każdy token patrzy na każdy inny token, przed sobą i za sobą. Słowo „bank” w zdaniu „the river bank flooded” („zalało brzeg rzeki”) widzi w tej samej warstwie „river” po lewej i „flooded” po prawej.
To sprawia, że enkodery bardzo dobrze rozumieją całe wejście naraz i nie potrafią generować od lewej do prawej. Reprezentacja tokenu zależy od tokenów, których podczas generowania jeszcze by nie było.
Trening: maskowane modelowanie języka (MLM)
Nie wytrenujesz modelu dwukierunkowego do przewidywania następnego tokenu, bo model już go widzi. BERT (Devlin i in., 2019) zamiast tego ukrywa część tokenów i każe modelowi je odtworzyć:
- wybieranych jest 15% pozycji;
- z nich 80% jest zastępowanych tokenem
[MASK], 10% losowym tokenem, a 10% zostaje bez zmian; - funkcja straty jest liczona tylko na wybranych pozycjach.
Podział 80/10/10 ma znaczenie. Przy inferencji model nigdy nie widzi [MASK], więc nie może się nauczyć, że uwagi wymagają tylko zamaskowane pozycje. Każdy token musi nieść użyteczną reprezentację. BERT używał też przewidywania następnego zdania; RoBERTa (Liu i in., 2019) pokazała, że można z niego zrezygnować i zamiast tego trenować model dłużej na większej ilości danych.
Ceną jest wydajność: sygnał treningowy daje tylko 15% tokenów, podczas gdy dekoder uczy się z każdej pozycji.
Gdzie są parametry
Ta sama arytmetyka co w dekoderach: 12·L·d² plus embeddingi. BERT-base, przy L = 12, d = 768 i słowniku o rozmiarze 30 522:
bloki 12 × 12 × 768² = 84,9M
embeddingi (30 522 + 512 + 2) × 768 = 23,8M
razem ≈ 108,8M (opublikowane: 110M, z biasami i normalizacjami)
To jedna dziesiąta małego dekodera i po części właśnie o to chodzi. Enkodery można tanio uruchomić na milionach dokumentów.
Do czego służą enkodery
- Embeddingi. Połącz reprezentacje tokenów w jeden wektor na tekst (pooling), zwykle przez średnią albo token
[CLS]. Wytrenuj model tak, żeby podobne teksty lądowały blisko siebie. Te wektory napędzają wyszukiwanie gęste (tę stronę omawia notatka o RAG). - Rerankery. Cross-encoder czyta zapytanie i kandydujący fragment razem, w jednym dwukierunkowym przebiegu, i zwraca wynik trafności. Każdy token zapytania może patrzeć na każdy token fragmentu, dlatego cross-encoder jest dużo dokładniejszy niż porównanie dwóch niezależnych embeddingów i dużo droższy.
- Klasyfikacja i ekstrakcja. Wykrywanie intencji, analiza sentymentu, rozpoznawanie encji nazwanych i wykrywanie danych osobowych (PII) to tanie, szybkie zadania, w których czytanie całego wejścia w obie strony to dokładnie to, czego chcesz.
W takich zadaniach enkoder o 100–400 mln parametrów jest często dokładniejszy w przeliczeniu na milisekundę niż promptowanie dekodera 27B.
Współczesne enkodery
Oryginalny BERT zatrzymywał się na 512 tokenach i miał wyuczone embeddingi pozycji. ModernBERT (Warner i in., 2024) przeniósł z powrotem do enkoderów ulepszenia z ery dekoderów: rotacyjne embeddingi pozycji, kontekst 8192 tokenów, naprzemienną atencję globalną i lokalną ze względu na wydajność oraz trening na dużo większej ilości danych, w tym na kodzie. Enkodery nie zniknęły; po cichu nadrobiły zaległości.
Zasady, których się trzymam
- Używaj enkodera do oceniania, dopasowywania i klasyfikacji, a dekodera do generowania.
- Wyszukuj bi-encoderem, rerankuj cross-encoderem. Tani recall, potem droga precyzja.
- Rób fine-tuning małych enkoderów na własnych etykietach. W wąskich zadaniach klasyfikacji kilka tysięcy przykładów na enkoderze rzędu 100 mln parametrów często wygrywa z dużym modelem promptowanym zero-shot.
Źródła: Devlin i in., BERT (NAACL 2019). Liu i in., RoBERTa (2019). Reimers i Gurevych, Sentence-BERT (2019). Warner i in., ModernBERT (2024). Liczby parametrów są policzone na podstawie opublikowanej konfiguracji BERT-base.