Problem z Całkowitymi Słowy
Najwyraźniejszy sposób na tokencjonizację tekstu polega na podziale na spację i traktowaniu każdego odstępu jako jednostki w vokabularzu. To działa dobrze, dopóki model nie napotka słowa, które jeszcze nigdy przedtem nie widział. Język naturalny jest pełen rzadkich nazwisk, pismisterek, nazw firm stworzonych z myślą, terminologii technicznej i słów po innych językach, a stały vokabularz słówek nie ma sposobu na reprezentację żadnego z nich, oprócz generycznego, informacjodestroyingego tokena
run
runs
running
i
runner
jako cztery całkowicie niepowiązane symbole. W związku z tym model nie ma żadnego wskazania, że te słowa mają wspólny pierwotny korzeń. Aby pokryć nawet modestną część słów, które mogą pojawić się prawdopodobnie, vokabularz oparty na słowach musiałby być ogromny, a nadal byłby zaskoczony pierwszym razem, gdy ktoś wpisze pismo lub stworzy nowe słowo.
Problem z Tokenizacją Jednoznakową
Przeciwnym ekstremem jest tokenizacja tekstu jednoznakiem po raz. To rozwiązuje problem zakrycia, ponieważ dowolny ciąg znaków można stworzyć z małej alfabetu znaków, a nie istnieje taka rzecz jak znak poza słownikiem. Kosztem jest długość: zdanie, które mogło składać się z 8 lub 10 tokenów słówek, teraz staje się 40 lub 50 tokenów znaków. Ponieważ modele transformatorowe przetwarzają każdy token w sekwencji i ich koszt obliczeniowy rośnie z długości sekwencji, tokenizacja na poziomie znaku sprawia, że trening i wnioskowanie są drastycznie bardziej drogowskazowe. To również wymusza modelowi pracę znacznie trudniejszą do przeprowadzenia, ponieważ pojedynczy znak, tak jak „t”, nie przekazuje prawie żadnej informacji w samostatnim użyciu. Gdzieś między ogromnym słownikiem całych słów a małym słownikiem jednoznakowym leży idealny punkt, i to dokładnie tam, gdzie Byte Pair Encoding jest zaprojektowany do znalezienia.
Nauczanie z połączeniami na podstawie częstotliwości
Byte Pair Encoding zaczyna każdą frazę w korpusie treningowym, dzieląc ją na poszczególne symbole, więc „lower” zaczyna swoją drogę jako pięć symboli: l, o, w, e, r. Algorytm liczy następnie każdą parę sąsiednich symboli po całym korpusie i znajduje parę, która występuje najczęściej, np. parę (l, o), jeśli frazy „low”, „lower” i „lowest” są powszechnie spotykane w tekście treningowym. Ta najczęściej występująca para jest połączona w nowy symbol „lo”, który dodawany jest do słownictwa, a każda jej wystąpienie w całym korpusie zastępuje się tokenem połączonym. Korpus jest następnie ponownie przeszukiwany z tym nowym symbolem, liczone są nowe częstotliwości par, a nastepne najczęściej występujące parę połączono. Każdy połączenie jest zapisywane w porządku, ponieważ ten porządek ma znaczenie: gdy tokenizer treningowy napotka nowy tekst, stosuje on te same połączenia w tym samym porządku do decyzji, jak go podzielić.
Od Charakterów do Wspólnych Podsłów
Tłumaczenie tego kroku scalającego tysiące razy jest źródłem tej mocy. Wczesne scalenia tendują do połączenia pary charakterów powszechnych w małe skupiska, takie jak „in”, „er” lub „th”. Późniejsze scalenia łączą te skupiska w większe jednostki, a wystarczająco często uzywane całe słowa, takie jak „the”, „and” lub „tokenizacja”, mogą w końcu znaleźć się jako pojedyncze symboli połączonych, dokładnie tak jak tokenizer na poziomie słów tworzy powszechne słowa. Liczba wykonanych operacji scalania jest hiperparametrem wybranym przed treningiem, zazwyczaj tysiące, i bezpośrednio kontroluje rozmiar końcowego słownika: zatrzymując się wcześnie, otrzymujesz więcej, krótszych podsłów; wykonując więcej scalen, otrzymujesz mniej, dłuższych. Krytycznie, rzadkie lub nowe słowa nigdy nie otrzymują własnego scalenia, więc upadają do reprezentacji zapisanej ze mniejszych już nauczonych części, jak np. „tokenizacja” rozkłada się na „token” i „izacja”, jeśli całe słowo samego siebie nie było wystarczająco powszechne, aby zasłużyć sobie na własne scalenie.
Kluczowe Podstawy Tokenizatorów Współczesnych
Dzięki temu GPT-stylowe modele, RoBERTa oraz wiele innych transformatorów mogą obsłużyć błędy ortograficzne, rzadkie terminy techniczne, emoji i tekst w językach barely reprezentowanych podczas treningu, nie wydzielając nigdy miejsca zastępczego dla niewiadomego tokenu. GPT-2 oraz jego potomki stosują BPE bezpośrednio nad bajty wrawy zamiast unikodowych znaków, co gwarantuje, że dowolny wejściowy, w tym niezwykłe symbole lub mieszane skrypty, może być zawsze przedstawiony przy użyciu ustalonego alfabetu bazowego składającego się z 256 wartości bajtów plus poznane złączenia. Wynikowy słownictwo, które zawiera od 30 tysięcy do 100 tysięcy tokenu podsłownych, osiąga praktyczne równowagę: czesto występujące słowa i fragmenty słów są jednymi wydajnymi tokenami, podczas gdy wszystko nieznane gracjonalnie degradowa się do mniejszych, nadal znaczących części zamiast rozbić model całkowicie. Ta równowaga między wielkością słownictwa, długością sekwencji i universalną pokryciem jest przyczyną tego, dlaczego BPE oraz jego bliskie kreacje, takie jak WordPiece i tokenizacja Unigram, pozostają standardowym pierwszym krokiem w prawie każdym procesie obecnego dużych modeli językowych.
Często zadawane pytania
Czy BPE rozumie znaczenie podsłów, które tworzy?
Nie. BPE jest pureszystym procedurą statystyczną i frekwencyjną działającą na niewy]){{
▶ Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Byte Pair Encoding: How Tokenizers Learn Subwords i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.