Как представляется текст для нейросети
Что проверяют
Понимаете ли вы весь путь от строки до тензора: токенизация, словарь, индексы, эмбеддинги. Следом обычно спрашивают, чем статические векторы вроде word2vec отличаются от контекстных в BERT и что делать со словами, которых нет в словаре.
Как отвечать
Стройте ответ как эволюцию подходов, от простого к современному:
- мешок слов и TF-IDF: разреженный вектор длиной в словарь. Порядок слов теряется, но как бейзлайн это до сих пор рабочий вариант;
- one-hot: каждое слово это вектор с одной единицей. Размерность равна словарю, все слова равноудалены друг от друга, поэтому семантики нет;
- статические эмбеддинги: word2vec, GloVe, fastText дают плотный вектор на слово, обычно в сотни измерений. Близкие по смыслу слова оказываются рядом, но у слова «лук» один вектор на все значения. fastText собирает вектор из символьных n-грамм и поэтому справляется с незнакомыми словами;
- подсловная токенизация: BPE, WordPiece, Unigram в SentencePiece. Словарь в десятки тысяч фрагментов, редкое слово распадается на куски, и проблема OOV почти исчезает;
- контекстные представления: в трансформере id токена проходит через обучаемую таблицу эмбеддингов (
nn.Embeddingразмером словарь наd_model), к ней добавляется информация о позиции (синусоиды, обучаемые позиции или RoPE), а слои внимания делают вектор зависимым от соседей.
Упомяните практическую обвязку: спецтокены ([CLS], [SEP], <eos>), паддинг до общей длины, attention_mask, обрезку по максимальной длине контекста. Для вектора на целый текст берут пулинг по токенам или готовые sentence-модели.
Где спотыкаются
Говорят, что токен это слово. В современных моделях токен чаще кусок слова, и русский текст в англоцентричном токенизаторе режется на заметно большее число токенов, что бьёт по длине контекста и стоимости.
Смешивают токенизатор и модель: берут токенизатор от одной модели, а веса от другой. Идентификаторы токенов не совпадают, и модель получает бессмыслицу без единой ошибки в логах.
Путают эмбеддинг-слой с word2vec. В трансформере таблица эмбеддингов обучается вместе со всей сетью, а контекстным вектор становится только после слоёв внимания, не на входе.