Byte Pair Encoding
Byte Pair Encoding (BPE) w tokenizacji uczy słownik jednostek tekstu przez wielokrotne łączenie najczęstszych sąsiadujących par symboli. Powstały Token może obejmować kilka znaków, część słowa albo całe słowo.
Sennrich, Haddow i Birch dostosowali algorytm kompresji do segmentacji słów w tłumaczeniu neuronowym. Ich wariant rozpoczyna od znaków i znacznika końca słowa. Zlicza pary z uwzględnieniem częstości słów, scala najczęstszą parę i powtarza obliczenia. Nie łączy symboli przez granice słów. Opis oraz algorytm znajdują się w Neural Machine Translation of Rare Words with Subword Units, §3.2.
Reguły powstają przed użyciem tokenizera
Uproszczony własny przykład: jeśli para k + o jest najczęstsza, powstaje symbol ko. W następnym kroku może wygrać ko + t, dając kot. Każda operacja łączy dwa aktualne symbole; scalenie całego trzyliterowego słowa wymaga tu dwóch kroków. W przykładzie pomijam znacznik końca słowa.
Przy przetwarzaniu nowego tekstu tokenizer stosuje wcześniej nauczone reguły. Nie buduje słownika od nowa dla każdego promptu. Dopiero identyfikatory uzyskanych jednostek służą do odczytu wektorów przez Token Embedding. Uczenie podziału tekstu i uczenie wartości tych wektorów to odrębne operacje.
BPE kieruje się częstością, więc granice tokenów nie muszą odpowiadać morfemom ani znaczeniu. Wariant z pracy Sennricha działa na znakach; słowo „Byte” w nazwie nie oznacza, że każdy tokenizer BPE zaczyna od surowych bajtów. Przy porównaniu modeli trzeba sprawdzić konkretną implementację.
Szerszy kontekst embeddings i attention zawiera starszy artykuł o mechanizmie attention. Tutaj BPE pełni rolę osobnego hasła o powstawaniu jednostek słownika.
Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.