# Технологии LLM и RAG в MIT: как работают современные языковые модели

Источник: https://www.youtube.com/watch?v=KGDe1QvfKJ8
Канал: MIT OpenCourseWare
Опубликовано: 07.01.2026

---

В рамках курса «Архитектура систем искусственного интеллекта» в Массачусетском технологическом институте (MIT) профессор Рама Рамакришнан представил глубокий технический разбор механизмов, лежащих в основе современных языковых моделей. Лекция была сосредоточена на переходе от архитектуры BERT к генеративным моделям семейства GPT, особенностях их обучения и нюансах работы с выходом нейросетей.

## 🤖 От маскирования к предсказанию следующего слова
[[JUMP:0:16]]

Рама Рамакришнан начал с краткого обзора пройденного материала, напомнив об архитектуре BERT. Ключевая особенность BERT — использование метода «маскирования» (masking) [1:09]. В этом процессе из предложения случайным образом удаляются слова (заменяются токеном `[MASK]`), а модель обучается восстанавливать их, анализируя двусторонний контекст. Этот подход относится к самообучению (self-supervised learning) на огромных массивах текста, таких как Wikipedia [1:21].

Однако основной темой лекции стал другой метод самообучения — **предсказание следующего слова (next word prediction)** [1:47]. Профессор пояснил, что этот метод можно считать частным случаем маскирования, где «маской» всегда является последнее слово во фрагменте предложения [2:01].

Процесс подготовки данных выглядит так:

*   Берется исходное предложение, например: «Миссия школы менеджмента Слоуна» [2:14].
*   Оно разбивается на фрагменты:
    1. «Миссия» -> предсказать «школы».
    2. «Миссия школы» -> предсказать «менеджмента».
    3. «Миссия школы менеджмента» -> предсказать «Слоуна».

Этот подход лег в основу архитектуры GPT (Generative Pre-trained Transformer).

## 🧩 Трансформер-декодер: как запретить модели «читерить»
[[JUMP:4:47]]

При попытке использовать стандартную архитектуру трансформера (которую использует BERT) для предсказания следующего слова возникает серьезная проблема. В стандартном слое внимания (Self-Attention) каждое слово может «видеть» все остальные слова в предложении, включая те, что стоят после него [7:50].

Для обучения модели предсказанию будущего это недопустимо. Если модель при обучении видит следующее слово, она не учится понимать язык, а просто «списывает» ответ из входных данных. Рамакришнан назвал это «читерством» [8:07].

Решением стала модификация архитектуры, получившая название **Causal Self-Attention** (причинное самовнимание) или **Masked Self-Attention** [13:58]. Технически это реализовано следующим образом:

1.  Для каждого слова рассчитываются веса внимания ко всем остальным словам.
2.  Веса для всех слов, находящихся «в будущем» относительно текущего, принудительно обнуляются [14:24].
3.  Оставшиеся веса перенормируются так, чтобы их сумма снова была равна единице.

Модели, использующие такой механизм, называются авторегрессионными. Термин «декодер» в контексте GPT часто используется как синоним «причинного энкодера» (Causal Encoder) именно из-за наличия этого маскированного слоя внимания [16:05].

## 🎲 Декодирование и стратегии выбора токенов
[[JUMP:30:53]]

На выходе языковой модели (после слоя Softmax) мы получаем не конкретное слово, а таблицу вероятностей для всей библиотеки токенов (обычно около 50 000 вариантов) [31:33]. Процесс выбора конкретного слова из этой таблицы называется **декодированием**.

Профессор Рамакришнан выделил несколько стратегий декодирования:

1.  **Жадное декодирование (Greedy Decoding):** выбор слова с максимально высокой вероятностью [31:58]. Это обеспечивает детерминизм (одинаковый ответ на одинаковый запрос), что важно для математических задач или техподдержки [33:30].
2.  **Случайное сэмплирование (Random Sampling):** выбор слова случайным образом пропорционально его вероятности [32:14]. Это делает ответы более «человечными» и креативными, но несет риск ошибок.

Главная проблема случайного выбора заключается в «длинном хвосте» распределения. Даже если вероятность каждого отдельного бессмысленного слова в хвосте мала (например, 0,001%), суммарная вероятность выбрать *хотя бы одно* слово из хвоста может быть значительной [39:54]. Если модель один раз выбирает неудачное слово (например, «мастера хаоса» вместо «мастера наук»), она не может «исправиться», так как это слово становится контекстом для всех последующих предсказаний [40:21].

### Инструменты управления «хвостом»
Для минимизации галлюцинаций используются три параметра [46:52]:

*   **Top-K:** модель рассматривает только K самых вероятных слов (например, топ-20), полностью игнорируя остальные [47:07].
*   **Top-P (Nucleus Sampling):** модель выбирает минимальный набор слов, суммарная вероятность которых достигает значения P (например, 0.9) [48:31]. Это более гибкий метод, чем Top-K.
*   **Temperature (Температура):** косметическое изменение функции Softmax. При низкой температуре (близкой к 0) модель становится уверенной и «жадной», выбирая только самые вероятные варианты. При высокой температуре (больше 1) распределение выравнивается, делая даже маловероятные слова почти равнозначными [56:10].

Рамакришнан продемонстрировал это в OpenAI Playground: при установке температуры на максимум (2.0) модель GPT-3.5 мгновенно начала выдавать абсолютно бессвязный набор символов и слов [1:00:20].

## 🔡 Магия токенизации: Byte Pair Encoding (BPE)
[[JUMP:1:01:22]]

Современные модели не работают с целыми словами в их лингвистическом понимании. Вместо этого используется **Byte Pair Encoding (BPE)** [1:03:42]. Этот алгоритм позволяет эффективно решать проблему новых слов и пунктуации.

Принцип работы BPE:

1.  Сначала все символы (буквы, цифры, знаки препинания) считаются отдельными токенами [1:05:37].
2.  Алгоритм находит пары токенов, которые чаще всего встречаются рядом в обучающем корпусе, и объединяет их в новый, более крупный токен [1:06:44].
3.  Процесс повторяется до достижения лимита словаря (50 000 у GPT-3 или 100 000 у GPT-4) [1:10:08].

В результате словарь состоит из:

*   Отдельных букв (что позволяет собрать любое слово по частям).
*   Наиболее частых слов (например, артикль «the» в английском языке) [1:09:40].
*   Частей слов или «субслотов» (например, окончания «-ing» или «-ize») [1:05:11].

Это объясняет, почему нейросеть смогла понять и использовать выдуманное лектором слово «reldoh» (перевертыш слова «hodler») [1:02:35]. Модель просто разбила его на знакомые буквенные фрагменты. Интересным фактом стало то, что в токенезаторе OpenAI слово «Rama» с большой буквы разбивается на токены, а со строчной — является единым токеном, что указывает на специфику данных, на которых обучалась модель [1:13:46].