Słowa na liczby
Tłumacz na granicy
Model językowy nigdy nie widzi tekstu. Widzi liczby całkowite. Tokenizator znajduje się na przejściu granicznym: ludzkie słowa wpływają, identyfikatory liczbowe wypływają. Generowanie odwraca przepływ: identyfikatory liczbowe wracają, tokenizator renderuje tekst.
Trzy zadania:
1. Segmentacja. Podziel ciąg znaków na fragmenty (tokeny).
2. Mapowanie. Przypisz każdemu fragmentowi unikalny identyfikator liczbowy z ustalonego słownika.
3. Odwrotne mapowanie. Odtwórz tekst z identyfikatorów w czasie generowania.
Dlaczego fragmenty, a nie całe słowa
Słownik całych słów rośnie eksplozywnie. Sam angielski ma setki tysięcy form. Co gorsza, model trenowany na całych słowach nie radzi sobie z literówką, nowym nazwiskiem czy obcym zwrotem: każde nieznane słowo mapuje się na pojedynczy slot <UNK>.
Tokenizacja subwordowa to naprawia. Słownik powszechnych fragmentów składa się w dowolne słowo, w tym te nigdy niewidziane podczas treningu. Dwie strategie dominują: BPE (byte pair encoding) i segmentacja dystrybucyjna. ANDREA wybiera drugą strategię.
Dlaczego Subword
Gdzie następuje podział słowa
Zellig Harris, 1955
Lingwista o imieniu Zellig Harris zauważył coś interesującego. Wewnątrz słowa liczba różnych liter następujących po danej sekwencji liter zmienia się gwałtownie. Po un możesz znaleźć dziesiątki liter: a, b, c, d, e ... Po unbel następuje tylko niewielki zestaw: i (następnie ievable).
Skok w różnorodności następników oznacza prawdopodobną granicę morfemu. Po un (prefiksie) różnorodność rośnie, ponieważ wiele rdzeni może nastąpić. Wewnątrz rdzenia jak believ różnorodność pozostaje niska, ponieważ litery przewidują się nawzajem. Na przejściu między morfemami różnorodność rośnie ponownie.
Od skoków różnorodności do segmentów
Przeprowadź ten detektor na korpusie treningowym. Każde słowo dostarcza statystycznych dowodów. Tokenizator zbiera często występujące segmenty, które powtarzają się na granicach w kształcie morfemów: un, re, pre, believ, know, ing, able, ly, tion, ed.
Brak etykiet. Żaden lingwista nie oznacza morfemów ręcznie. Statystyka współwystępowania liter wykonuje tę pracę.
Harris vs BPE
| Właściwość | Harris | BPE |
|---|---|---|
| Kryterium granicy | Skok różnorodności następników | Częstotliwość par |
| Kształt językowy | Wyrównane do morfemów (prefiks, rdzeń, sufiks) | Częste pary bajtów |
Przykład: unbelievably | un + believ + abl + y | unb + eli + eva + bly |
| Uogólnienie | Silne (rdzeń + afiks rekombinują się) | Słabsze (pary nie muszą się wyrównywać) |
Oba produkują fragmenty podjednostek. Fragmenty Harrisa tendencją do wyrównywania się z tym, co lingwista nazwałby morfemem: najmniejszą jednostką znaczącą. Fragmenty BPE optymalizują kompresję: najbardziej częsta para bajtów jest scalana, niezależnie od znaczenia.
Segmentuj słowo
Trzy Bloki Słownictwa
Anatomia Słownictwa ANDREA
Tokenizacja Harris produkuje słownictwo z trzema blokami:
Płyta 1: 256 bazowych bajtów. Każdy możliwy bajt UTF-8 (0x00 przez 0xFF) otrzymuje swój własny identyfikator tokenu. Sieć bezpieczeństwa: każdy znak zawarty w korpusie, tokenizer może przedstawić jako sekwencję bajtów. Nigdy nie aktywuje się <UNK>.
Płyta 2: N segmentów morfemów. Powszechne fragmenty odkryte poprzez analizę dystrybucyjną. ANDREA-12M trenowane N = 4096; ANDREA-120M trenowane N = 8192. Każdy segment kompresuje powtarzający się ciąg wielobajtowy do pojedynczego tokenu.
Płyta 3: 1 token BOS. Specjalny znacznik umieszczony na początku każdej sekwencji treningowej. Pozwala modelowi nauczyć się 'ta pozycja nie ma przeszłości'. ANDREA-12M i ANDREA-120M oba rezerwują dokładnie jeden ID dla BOS.
Rozmiary słownictwa
| Model | Base bytes | Morpheme segments (N) | BOS | Vocab size |
|---|---|---|---|---|
| ANDREA-12M | 256 | 4096 | 1 | 4353 |
| ANDREA-120M | 256 | 8192 | 1 | 8449 |
256 + N + 1 = rozmiar słownictwa. Proste. Powtarzalne. Otwarte.
Dlaczego blok bajtów ma znaczenie
Rezerwowy mechanizm bajtowy gwarantuje pełne pokrycie. Jeśli model napotka 日本語 i tokenizer nie ma japońskich morfemów, pojedyncze bajty UTF-8 przenoszą sekwencję dalej. Model trenuje się na bajtach; jakość na rzadkich skryptach zależy od pojemności i ekspozycji, ale żaden wejściowy tekst nigdy nie powoduje awarii tokenizera.
Oblicz słownik
Początek sekwencji
Dlaczego sekwencja potrzebuje znacznika
Dekoder-only transformer przewiduje następny token na podstawie wcześniejszego kontekstu. Pozycja 0 nie ma wcześniejszego kontekstu. Bez znacznika pozycja 0 znajduje się w logicznej luce: model nie ma do czego się odwołać.
BOS rozwiązuje lukę. Pojedynczy specjalny token (ID = 256 + N) znajduje się na początku każdej sekwencji podczas treningu. Model uczy się:
- 'Gdy widzisz BOS, przewiduj prawdopodobny pierwszy token naturalnego tekstu.'
- 'Gdy widzisz BOS po którym następuje słowo, to słowo jest początkiem sekwencji, a nie kontynuacją.'
Jeden token, wiele zastosowań
BOS pojawia się w:
- Czasie treningu: dołączany na początku każdego fragmentu tekstu podawanego modelowi.
- Czasie inferencji: dołączany na początku promptu, aby model zobaczył znajomy sygnał „nowego początku”.
- Oznaczanie granic: w niektórych potokach, separator między sklejonymi dokumentami.
ANDREA rezerwuje dokładnie jeden ID dla BOS. Brak EOS, brak PAD, brak specjalnych tokenów poza tym, co potrzebne dla słownika. Prostota pozostaje wartością permakomputera: każdy token musi zasłużyć na swoje miejsce.
Aktywność 3 cd.
Aktywność 3 (grow_a_language_model_tokenizer_diet) omawia, co się dzieje, gdy N jest zbyt duże lub korpus tokenizera różni się od korpusu treningowego. ANDREA-12M zmarnowało 63,6% swojego słownika; ANDREA-120M to naprawiło. Czytaj dalej.