Изменения

Перейти к навигации Перейти к поиску
2440 байт добавлено ,  1 месяц назад
Строка 38: Строка 38:     
Предположим, что мы кодируем предыдущий пример «aaabdaaabac» с заданным размером словаря 6. Тогда сначала он будет закодирован как «0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 3» с словарем «a=0, b=1, d=2, c=3». Затем всё продолжится, как и раньше, и получится «4, 5, 2, 4, 5, 0, 3» с словарем «a=0, b=1, d=2, c=3, aa=4, ab=5». Пока что это, по сути, то же самое, что и раньше. Однако, если бы мы указали размер словаря 5, то процесс остановился бы на слове «a=0, b=1, d=2, c=3, aa=4», так что пример был бы закодирован как «4, 0, 1, 2, 4, 0, 1, 0, 3». И наоборот, если бы мы указали размер словаря 8, то он был бы закодирован как «7, 6, 0, 3» со словарем «a=0, b=1, d=2, c=3, aa=4, ab=5, aaab=6, aaabd=7». Это не максимально эффективно с точки зрения сжатия последовательности, но модифицированный BPE не стремится к максимальному сжатию набора данных, а стремится к его эффективному<ref>При этом эффективность кодирования для целей обучения конкретной языковой модели определяется соображениями её разработчика о её архитектуре и доступными аппаратными средствами.</ref> кодированию для обучения языковой модели<ref>{{Cite book|last=Pai|first=Suhas|title=Designing Large Language Model Applications: A Holistic Approach to LLMs|publisher=[[O'Reilly Media]]|date=2025-03-06|isbn=978-1-0981-5046-4|language=en}}</ref>.
 
Предположим, что мы кодируем предыдущий пример «aaabdaaabac» с заданным размером словаря 6. Тогда сначала он будет закодирован как «0, 0, 0, 1, 2, 0, 0, 0, 1, 0, 3» с словарем «a=0, b=1, d=2, c=3». Затем всё продолжится, как и раньше, и получится «4, 5, 2, 4, 5, 0, 3» с словарем «a=0, b=1, d=2, c=3, aa=4, ab=5». Пока что это, по сути, то же самое, что и раньше. Однако, если бы мы указали размер словаря 5, то процесс остановился бы на слове «a=0, b=1, d=2, c=3, aa=4», так что пример был бы закодирован как «4, 0, 1, 2, 4, 0, 1, 0, 3». И наоборот, если бы мы указали размер словаря 8, то он был бы закодирован как «7, 6, 0, 3» со словарем «a=0, b=1, d=2, c=3, aa=4, ab=5, aaab=6, aaabd=7». Это не максимально эффективно с точки зрения сжатия последовательности, но модифицированный BPE не стремится к максимальному сжатию набора данных, а стремится к его эффективному<ref>При этом эффективность кодирования для целей обучения конкретной языковой модели определяется соображениями её разработчика о её архитектуре и доступными аппаратными средствами.</ref> кодированию для обучения языковой модели<ref>{{Cite book|last=Pai|first=Suhas|title=Designing Large Language Model Applications: A Holistic Approach to LLMs|publisher=[[O'Reilly Media]]|date=2025-03-06|isbn=978-1-0981-5046-4|language=en}}</ref>.
 +
 +
== BPE на уровне байтов ==
 +
В приведённом выше примере результатом работы BPE является словарь, который можно использовать для кодирования любого текста, состоящего из букв «abcd». Он не сможет кодировать текст, содержащий другие символы, например, «no». Даже если добавить каждую из 26 букв в словарь, поскольку в мире существует множество языков с различными письменностями, некоторые символы неизбежно будут некодируемы таким словарём. Одним из решений является замена любого некодируемого символа специальным символом UNK («неизвестно»). BPE на уровне байтов — это другой подход. Он просто сначала преобразует текст в [[UTF-8]] и обрабатывает его как поток [[Байт|байтов]]. Это гарантирует, что любой текст, закодированный в UTF-8, может быть закодирован BPE. Этот подход используется в моделях типа [[BERT]], таких как [[RoBERTa]], [[BART]] и [[DeBERTa]], а также в моделях типа [[GPT]], таких как [[GPT-2]]<ref>{{Cite web|title=Byte-Pair Encoding tokenization|url=https://huggingface.co/learn/nlp-course/en/chapter6/5|access-date=2025-01-27|website=Hugging Face NLP Course}}</ref><ref>{{Cite book|last1=Yıldırım|first1=Savaş|last2=Chenaghlu|first2=Meysam Asgari|title=Mastering Transformers: Build state-of-the-art models from scratch with advanced natural language processing techniques|publisher=[[Packt Publishing Ltd]]|date=2021-09-15|isbn=978-1-80107-889-4|language=en}}</ref><ref>{{Cite journal|last1=Wang|first1=Changhan|last2=Cho|first2=Kyunghyun|title=Neural Machine Translation with Byte-Level Subwords|journal=Proceedings of the AAAI Conference on Artificial Intelligence|date=2020-04-03|language=en|volume=34|issue=5|pages=[https://pdfguru.com/compress-pdf 9154–9160]|doi=10.1609/aaai.v34i05.6451|issn=2374-3468|doi-access=free|arxiv=1909.03341}}</ref>.
    
== Примечания ==
 
== Примечания ==
 
[[Категория:Сжатие данных]]
 
[[Категория:Сжатие данных]]
 
[[Категория:Токенизаторы]]
 
[[Категория:Токенизаторы]]

Реклама:

Навигация