Специальные токены
Разбираем служебные токены, которые модель использует для разметки границ и структуры.
Специальные токены — служебные метки (например,
[CLS],[SEP],[PAD]), которые токенизатор добавляет к тексту, чтобы дать модели структурную информацию.
Зачем нужны служебные токены
Модели нужно знать, где начинается и заканчивается предложение, где граница между двумя текстами, и чем заполнить пустоту при выравнивании батча. Для этого в словаре есть особые токены, не соответствующие реальным словам.
| Токен | Назначение |
[CLS] | метка начала, её вектор используют для классификации (BERT) |
[SEP] | разделитель между двумя текстами или концом |
[PAD] | заполнитель для выравнивания длины в батче |
[UNK] | неизвестный токен |
<s> / </s> | начало/конец последовательности (BOS/EOS) |
Как они появляются в тексте
При кодировании токенизатор сам добавляет нужные служебные токены. Например, BERT оборачивает текст так:
вход: "я люблю код"
стало: [CLS] я люблю код [SEP]Токен [CLS] в начале особенный: после прогона через модель его итоговый вектор содержит «сводку» всего текста и используется для классификации.
Padding и attention mask
Чтобы обработать несколько текстов разом (батч), их выравнивают до одной длины токеном [PAD]. Но модель не должна «обращать внимание» на заполнители — для этого передаётся attention_mask: единицы у настоящих токенов, нули у padding.
input_ids: [101, 1045, 2293, 102, 0, 0]
attention_mask: [ 1, 1, 1, 1, 0, 0]Как работает под капотом
Механизм внимания (attention) суммирует информацию по токенам с весами. Если бы padding участвовал на равных, он искажал бы результат. Поэтому в местах, где attention_mask равна нулю, веса внимания принудительно зануляются — модель «не видит» заполнители. Токены BOS и EOS у генеративных моделей сообщают, где начать и где остановить генерацию.
Частые ошибки
- Добавлять спецтокены вручную. Токенизатор делает это сам; дублирование ломает вход.
- Терять attention_mask при ручном батчинге. Тогда padding влияет на предсказание.
- Считать [CLS] обычным словом. Это служебный токен с особой ролью.
Итог
- Спецтокены размечают структуру: начало, разделитель, заполнитель, неизвестное.
[CLS]у BERT агрегирует смысл всего текста для классификации.[PAD]выравнивает длины в батче, аattention_maskпрячет его от модели.- Токенизатор добавляет спецтокены автоматически.