Byte Pair Encoding (BPE) — один из самых востребованных алгоритмов токенизации в современном машинном обучении и обработке естественного языка. Изначально он был предложен ещё в 1994 году Филипом Гейджем как простой метод сжатия данных, однако настоящую известность получил спустя два десятилетия, когда исследователи адаптировали его для нейросетевых моделей. Сегодня BPE лежит в основе токенизаторов таких систем, как GPT, RoBERTa, BART и многих других крупных языковых моделей. Суть алгоритма заключается в итеративном объединении наиболее часто встречающихся пар символов или подстрок в новые токены. Начиная с набора отдельных байтов или символов, BPE последовательно ищет самую частую пару и заменяет её единым символом-словарём, повторяя процедуру заданное число раз. В результате формируется компактный словарь подслов, который отражает статистические закономерности корпуса. Такой подход позволяет балансировать между двумя крайностями токенизации: посимвольной, которая создаёт слишком длинные последовательности, и пословной, которая страдает от огромного словаря и проблемы неизвестных слов. Главное преимущество BPE — способность изящно справляться с редкими и новыми словами. Незнакомое выражение разбивается на известные подслова, что особенно важно для морфологически богатых языков, таких как русский, немецкий или финский. Модель может распознать корень, суффикс и окончание даже в слове, которое никогда не встречала целиком. Это существенно повышает обобщающую способность нейросетей и снижает зависимость от размера словаря. Существуют различные модификации классического алгоритма. Byte-level BPE, применяемый в моделях семейства GPT-2 и GPT-3, работает не с символами Юникода, а с байтами, что обеспечивает универсальное покрытие любых текстов, включая эмодзи и редкие письменности. SentencePiece, разработанный в Google, реализует похожую идею, но обходится без предварительной сегментации по пробелам, что делает его пригодным для языков вроде японского или китайского. Существует также вариант WordPiece, используемый в BERT, который при объединении пар опирается не на частоту, а на оценку правдоподобия. Несмотря на огромную популярность, BPE не лишён недостатков. Алгоритм жадный по своей природе и не всегда даёт оптимальное разбиение, а одинаковые слова в разных контекстах могут токенизироваться по-разному из-за пробелов и регистра. Кроме того, статистика обучения токенизатора сильно влияет на качество представления низкоресурсных языков, что порождает дисбаланс в многоязычных моделях.