Как учитывается контекст в современных моделях
Что проверяют
Понимаете ли вы, чем контекстное представление отличается от статического и за счёт чего трансформер его строит. Следом почти всегда спрашивают, почему длинный контекст дорогой и как его удлиняют.
Как отвечать
Постройте ответ как эволюцию подходов:
- статические эмбеддинги: Word2Vec и GloVe обучаются на соседних словах, но выдают один вектор на слово. «Ключ» от двери и «ключ» как родник получают одно и то же представление;
- рекуррентные сети: LSTM и GRU несут контекст в скрытом состоянии, читая последовательность шаг за шагом. Дальние зависимости затухают, а обучение не распараллеливается по длине;
- self-attention: каждый токен считает веса внимания ко всем остальным через запросы, ключи и значения,
softmax(QK^T / sqrt(d)) V. Представление слова пересобирается под конкретное предложение, отсюда контекстные эмбеддинги BERT; - позиции: attention сам по себе порядка не видит, поэтому добавляют позиционное кодирование: синусоидальное, обучаемое, в современных LLM чаще RoPE;
- маски: энкодер вроде BERT видит контекст в обе стороны, декодер вроде GPT только слева, через каузальную маску.
Дальше про цену. Внимание квадратично по длине последовательности. Помогают FlashAttention (точное внимание, которое за счёт работы по блокам не хранит всю матрицу весов), скользящее окно внимания, масштабирование RoPE для удлинения окна, а на генерации KV-кэш, чтобы не пересчитывать уже обработанные токены. Когда нужного знания нет в параметрах, контекст подают снаружи: RAG подкладывает найденные документы прямо в промпт.
Где спотыкаются
Называют Word2Vec контекстной моделью. Контекст используется при обучении, но на выходе у слова один вектор на все случаи.
Путают окно контекста с памятью. Модель ничего не помнит между вызовами, историю диалога приложение каждый раз отправляет заново.
Считают, что всё содержимое окна используется одинаково. На длинных входах модели хуже достают факты из середины, эффект известен как «lost in the middle», поэтому важное ставят в начало или в конец.