Back to archive
#ai#llm#glossary#aigen

Byte Pair Encoding

Słownik zawierający każde możliwe słowo byłby ogromny i ciągle brakowałoby w nim nowych nazw. Słownik samych znaków jest mały, ale zamienia tekst w bardzo długi ciąg. Potrzebujesz kompromisu: częste fragmenty zapisujemy jako całość, rzadsze składamy z mniejszych części.

Byte Pair Encoding (BPE) buduje jednostki tekstu przez kolejne łączenie częstych sąsiadujących par symboli. Te jednostki stają się tokenami, czyli kawałkami tekstu przetwarzanymi przez model.

Jeśli w danych często występują obok siebie k i o, mogą zostać połączone w ko. Następnie częsta para ko i t może utworzyć kot. Potrzeba dwóch scaleń, bo każde łączy dwie aktualne jednostki. Reguły są uczone wcześniej, a przy nowym tekście stosowane ponownie.

Podział wynika z częstości, więc nie musi pokrywać się ze znaczeniem ani budową słowa. BPE określa jednostki; Token Embedding osobno nadaje ich identyfikatorom opisy liczbowe. Demonstracja pozwala przejść kolejne scalenia.

Mechanizm i szczegóły

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.