сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · NLP

NLP: токенизация и эмбеддинги

Зачем это спрашивают

Токенизация - фундамент всех современных моделей, и для русского это больной вопрос: наш текст в токенах в 2-3 раза длиннее английского, а значит дороже и короче по контексту. Проверяют понимание подсловной механики.

// «Токен ≠ слово» - фраза, с которой начинается правильный ответ на половину вопросов подтемы.

Подслова: как исчез OOV

Токен - единица словаря модели: слово, подслово или символ. Современный стандарт - подсловные токенизаторы: частые слова остаются цельными токенами, редкие собираются из кусков. Незнакомое слово всегда разложится - OOV (out of vocabulary) исчез как класс.

BPE (byte pair encoding) строит словарь слиянием самых частых пар; WordPiece (BERT) и unigram (SentencePiece) - та же идея с другой процедурой отбора. SentencePiece работает по сырой строке, без пробельной предтокенизации.

// Размер словаря - компромисс: больше словарь → короче последовательности, но тяжелее матрица эмбеддингов и беднее статистика редких токенов.

BPE
словарь слиянием частых пар; OOV исчезает
SentencePiece
токенизация по сырой строке, без предтокенизации

Эмбеддинги и служебные токены

Эмбеддинг токена обучается вместе с моделью; вход трансформера - эмбеддинг плюс позиционная информация.

Служебные токены - [CLS], [SEP], [PAD], BOS (beginning of sequence)/EOS (end of sequence) - разметка входа. Паддинг маскируется attention mask'ом: забудешь - модель честно усреднит мусор паддинга в представление текста.

// Токенизатор и модель - неразделимая пара из одного чекпоинта: чужой токенизатор даёт другие индексы, и предсказания превращаются в шум.

attention mask
маска паддинга - чтобы модель его не «читала»

Русский счёт токенов

Токенизатор, обученный преимущественно на английском, режет русские слова в крошку: длина последовательности растёт в 2-3 раза против слов, с ней - цена инференса и расход контекста.

Практические следствия: оценка «влезет ли документ в контекст» делается в токенах конкретного токенизатора; сравнивать модели по «числу токенов» с разными токенизаторами - сравнивать в разных единицах.

// Для русскоязычных продуктов мультиязычность словаря токенизатора - реальный фактор выбора модели, а не примечание.

Как отвечать: «Что такое подсловная токенизация и что она значит для русского?»

Модель оперирует не словами, а единицами словаря: частые слова - цельные токены, редкие разбираются на куски, поэтому незнакомых слов не бывает - OOV исчез. Строится это BPE-семейством: словарь наращивается слиянием частых пар. Для русского есть цена: если словарь учился в основном на английском, наши слова режутся мелко, текст в токенах в 2-3 раза длиннее, чем в словах, дороже инференс и быстрее кончается контекст. Поэтому длину всегда считаю токенизатором конкретной модели, а при выборе модели для русского продукта смотрю на мультиязычность словаря.

Механика, следствие «OOV исчез» и практическая цена для русского - три слоя, которые проверяет вопрос.

На чём валят

  • Считать «токен = слово» при оценке контекста - русский в токенах в 2-3 раза длиннее.
  • Сравнивать модели по числу токенов разных токенизаторов - единицы разные.
  • Забыть attention mask при паддинге - модель усредняет мусор.
  • Токенизатор и модель из разных чекпоинтов - предсказания-шум.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 10, остальные разбираются в тренажёре.

  1. #tokenization_embeddings1 / 5
    Как размер словаря subword-токенизатора влияет на длину последовательности?
    A)Чем меньше словарь, тем на большее число кусков рвётся слово
    B)Чем меньше словарь, тем короче становится последовательность
    C)Размер словаря на длину последовательности не влияет
    D)Длина зависит только от языка, а не от размера словаря
    показать ответ и разбор
    +A)Чем меньше словарь, тем на большее число кусков рвётся слово

    // разбор: Маленький словарь содержит короткие куски, поэтому слово разбивается на много токенов: последовательности длиннее, окно контекста расходуется быстрее, инференс дороже. Большой словарь режет реже, но раздувает матрицу эмбеддингов и оставляет редким токенам мало примеров для обучения. Размер словаря — компромисс между этими двумя издержками.

  2. #tokenization_embeddings2 / 5
    Почему один и тот же текст на русском обычно занимает больше токенов, чем на английском?
    A)Кириллица кодируется двумя байтами, и токенизатор считает байты
    B)Русские слова длиннее в среднем, а токенизатор режет по длине
    C)В обучающем корпусе токенизатора преобладал английский, и под него подобраны куски
    D)Русский язык не поддерживается subword-алгоритмами напрямую
    показать ответ и разбор
    +C)В обучающем корпусе токенизатора преобладал английский, и под него подобраны куски

    // разбор: Словарь subword-токенизатора собирается по частотам обучающего корпуса. Если корпус преимущественно английский, целыми кусками в него попадают английские морфемы, а русские слова рассыпаются на мелкие фрагменты. Практические следствия прямые: тот же смысл дороже по токенам, быстрее упирается в контекстное окно и хуже влезает в лимиты.

  3. #tokenization_embeddings3 / 5
    Чем эмбеддинги из современных encoder-моделей (для поиска) отличаются от статических word2vec/GloVe?
    A)Отличаются итоговой размерностью выходного вектора
    B)Word2vec точнее трансформерных эмбеддингов на длинных документах
    C)Word2vec — один вектор на слово; трансформерные контекстуальны и контрастивны
    D)Современные эмбеддинги не требуют обучения — их публикуют уже готовыми к применению в задачах
    показать ответ и разбор
    +C)Word2vec — один вектор на слово; трансформерные контекстуальны и контрастивны

    // разбор: Статический вектор усредняет все смыслы слова — полисемия теряется. Sentence-эмбеддинги (SBERT, E5, BGE) кодируют весь текст с учётом контекста и тренируются контрастивными парами «запрос–релевантный документ», поэтому косинус между ними осмыслен для retrieval. Для RAG важно брать модель, обученную под asymmetric search (запрос ≠ документ по стилю).

  4. #tokenization_embeddings4 / 5
    Что такое токен в контексте языковой модели?
    A)Единица текста (слово, часть слова или символ), с которой работает модель
    B)Один нейрон выходного слоя нейросети языковой модели
    C)Специальный секретный авторизационный ключ для платного доступа к API модели
    D)Полное предложение целиком как минимальная единица обработки текста
    показать ответ и разбор
    +A)Единица текста (слово, часть слова или символ), с которой работает модель

    // разбор: Токен — атомарная единица, которой оперирует LLM. Обычно это сабворд (кусок слова), а не целое слово или буква: частые слова остаются одним токеном, редкие дробятся. Поэтому длина в токенах не равна числу слов, а лимиты и стоимость API считаются именно в токенах.

  5. #tokenization_embeddings5 / 5
    Что такое эмбеддинг в NLP?
    A)Специальное сжатие исходного текстового файла архиватором ради экономии места на диске
    B)Правило, по которому текст разбивается на отдельные токены
    C)Числовой вектор смысла текста: близким по смыслу — близкие векторы
    D)Название выходного слоя классификатора текстов на категории
    показать ответ и разбор
    +C)Числовой вектор смысла текста: близким по смыслу — близкие векторы

    // разбор: Эмбеддинг — плотный числовой вектор, кодирующий смысл слова или текста так, что семантически близкие объекты оказываются близки в векторном пространстве. Косинусная близость таких векторов и лежит в основе векторного поиска и RAG: похожие по смыслу запрос и документ имеют высокий косинус.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.