Слова в числа
Перекладач на кордоні
Мовна модель ніколи не бачить текст. Вона бачить цілі числа. Токенізатор стоїть на пункті пропуску: людські слова надходять, ідентифікатори цілих чисел виходять. Генерація обертає потік: ідентифікатори цілих чисел повертаються, токенізатор генерує текст.
Три завдання:
1. Сегментація. Розділити рядок на частини (токени).
2. Відображення. Присвоїти кожній частині унікальний цілочисельний ID з фіксованого словника.
3. Зворотне. Реконструювати текст з ID під час генерації.
Чому частини, а не цілі слова
Словник цілих слів вибухає. Англійська сама по собі має сотні тисяч форм. Гірше, модель, навчена на цілих словах, не може впоратися з помилкою друку, новим ім'ям чи іноземною фразою: будь-яке небачене слово відображається в єдиний слот <UNK>.
Підтокенізація це виправляє. Словник поширених частин складається в будь-яке слово, включно з тими, що ніколи не бачили під час тренування. Дві стратегії домінують: BPE (byte pair encoding) та distributional segmentation. ANDREA обирає другу стратегію.
Чому Підтокени
Де відбувається розрив слова
Зелліг Гарріс, 1955
Лінгвіст на ім'я Зелліг Гарріс помітив дещо. Всередині слова кількість різних літер, що слідують за заданою послідовністю літер, різко варіюється. Після un можна знайти десятки літер: a, b, c, d, e ... Після unbel слідує лише крихітний набір: i (потім ievable).
Різкий стрибок у різноманітності наступників позначає ймовірну межу морфеми. Після un (префікса) різноманітність зростає, бо за ним може йти багато коренів. Всередині кореня, як believ, різноманітність залишається низькою, бо літери передбачають одна одну. На переході між морфемами різноманітність знову стрибає.
Від стрибків різноманітності до сегментів
Запустіть цей детектор по тренувальному корпусу. Кожне слово жертвує статистичними доказами. Токенізатор збирає високочастотні сегменти, які повторюються на межах, схожих на морфеми: un, re, pre, believ, know, ing, able, ly, tion, ed.
Без міток. Лінгвіст не позначає морфеми вручну. Статистика спільного входження літер виконує роботу.
Harris проти BPE
| Властивість | Harris | BPE |
|---|---|---|
| Критерій межі | Спадок різноманітності (spike) | Частота пари |
| Лінгвістична форма | Вирівняні за морфемою (префікс, корінь, суфікс) | Часті пари байтів |
Приклад: unbelievably | un + believ + abl + y | unb + eli + eva + bly |
| Генералізація | Сильна (корінь + афікс рекомбінуються) | Слабша (пари не обов'язково вирівняні) |
Обидва методи створюють підслівні шматки. Шматки Харріса схильні вирівнюватися з тим, що лінгвіст назвав би морфемою: найменшою значущою одиницею. Шматки BPE оптимізують стиснення: найчастіша пара байтів об'єднується, незалежно від значення.
Сегментація слова
Три Слої Словника
Анатомія Словника ANDREA
Токенізація Harris створює словник з трьох шарів:
Слой 1: 256 базових байтів. Кожен можливий байт UTF-8 (0x00 через 0xFF) отримує свій унікальний ID токена. Сітка безпеки: будь-який символ, що міститься в корпусі, токенізатор може представити як послідовність байтів. <UNK> ніколи не спрацьовує.
Слой 2: N морфемних сегментів. Поширені фрагменти, виявлені через distributional analysis. ANDREA-12M тренував N = 4096; ANDREA-120M тренував N = 8192. Кожен сегмент стискає повторюваний багатобайтовий рядок в один токен.
Слой 3: 1 токен BOS. Спеціальний маркер, розміщений на початку кожної тренувальної послідовності. Дозволяє моделі навчитися 'ця позиція не має минулого'. ANDREA-12M та ANDREA-120M обидві резервують рівно один ID для BOS.
Розміри словників
| Модель | Базові байти | Морфемні сегменти (N) | BOS | Розмір словника |
|---|---|---|---|---|
| ANDREA-12M | 256 | 4096 | 1 | 4353 |
| ANDREA-120M | 256 | 8192 | 1 | 8449 |
256 + N + 1 = розмір словника. Просто. Відтворювано. Відкрито.
Чому байтовий шар має значення
Байтовий запасний варіант гарантує покриття. Якщо модель зустрічає 日本語 та токенізатор не має японських морфем, окремі UTF-8 байти пропускають послідовність. Модель навчається на байтах; якість на рідкісних скриптах залежить від ємності та експозиції, але жоден вхід ніколи не крашить токенізатор.
Обчисліть словник
Початок послідовності
Чому послідовності потрібен маркер
Декодер-онлі трансформер прогнозує наступний токен на основі попереднього контексту. Позиція 0 не має попереднього контексту. Без маркера позиція 0 перебуває в логічній дірі: модель не має до чого звертатися.
BOS заповнює діру. Один спеціальний токен (ID = 256 + N) розміщується на початку кожної послідовності під час тренування. Модель вивчає:
- 'Коли ти бачиш BOS, прогнозуй ймовірний перший токен природного тексту.'
- 'Коли ти бачиш BOS, за яким іде слово, це слово є початком послідовності, а не продовженням.'
Один токен, багато застосувань
BOS з'являється в:
- Час тренування: додається на початок кожного шматка тексту, що подається в модель.
- Час інференсу: додається на початок запиту, щоб модель побачила знайомий сигнал 'нового початку'.
- Позначення меж: у деяких конвеєрах, як роздільник між з'єднаними документами.
ANDREA резервує рівно один ID для BOS. Без EOS, без PAD, без спеціальних токенів понад те, що потрібно словнику. Простота залишається перманавчальною цінністю: кожен токен заробляє своє місце.
Продовження Діяльності 3
Діяльність 3 (grow_a_language_model_tokenizer_diet) охоплює те, що відбувається, коли N занадто велике або корпус токенізатора відхиляється від корпусу навчання. ANDREA-12M витратила 63.6% свого словника; ANDREA-120M це виправила. Читайте далі.