• Русский
  • От базовой модели к ассистенту

    Модель сразу после предобучения — первого и самого большого этапа, предсказания следующего токена на огромном объёме сырого текста (глава 7), — блестящий имитатор и никудышный ассистент. Задайте ей вопрос — и она может ответить, а может дописать ещё три вопроса, потому что именно это было бы на странице, которую она себе «представляет». Вся эта глава о том, как закрыть этот разрыв удивительно небольшим дополнительным обучением, а затем дать модели способности, которые не помещаются в её веса: время подумать, документы для чтения и инструменты.

    Если вы начинаете с этой главы, хватит двух фактов из предыдущих. Языковая модель читает текст как токены (слова или их кусочки) и по уже прочитанным токенам выдаёт вероятность для каждого возможного следующего (глава 1). А обучение — это пошаговая подстройка весов модели так, чтобы уменьшалась функция потерь: одно число, которое показывает, насколько ошибочны её предсказания (глава 7). Каждый этап ниже — тот же самый цикл, только с другими данными или другой функцией потерь.

    Конвейер обучения

    Современные ассистенты проходят несколько этапов. Первый забирает почти все вычисления; следующие — лишь крохи, но именно они определяют, как модель себя ведёт.

    Рисунок 15.1 · Четыре этапа, один запрос

    Предобучение

    Данные. Триллионы токенов веб-страниц, книг, кода и статей.

    Учится. Предсказывать следующий токен. Попутно модель усваивает грамматику, факты, программирование и многие приёмы рассуждения.

    Почти все вычисления: недели и месяцы на тысячах GPU.

    Как сварить яйцо?
    Как сварить яйцо пашот? Как сделать пышный омлет? 10 вопросов о яйцах, на которые отвечает наша тестовая кухня. Читайте также: (просто продолжает текст, как продолжила бы веб-страница)
    Пощёлкайте по этапам. Базовая модель продолжает текст, словно это веб-страница. Дообучение учит формату диалога, настройка по предпочтениям — тому, какие ответы нравятся людям, а обучение с подкреплением на проверяемых задачах — рассуждать перед ответом.

    Дообучение с учителем

    Дообучение с учителем (supervised fine-tuning, SFT), оно же обучение следованию инструкциям, — это обычное обучение предсказанию следующего токена, только на примерах диалогов. Модель видит только один поток токенов, поэтому, кто говорит, приходится отмечать прямо в этом потоке. Каждый диалог записывают со специальными токенами-маркерами — это шаблон чата:

    <|system|>Ты полезный ассистент.<|end|>
    <|user|>Как сварить яйцо?<|end|>
    <|assistant|>Опустите яйцо в кипящую воду…<|end|>

    Когда ассистентом пользуются, программа записывает шаблон до <|assistant|> и даёт модели продолжить; модель останавливается, когда пишет <|end|>. При SFT функцию потерь обычно считают только по токенам ассистента: модель учится писать ответы, а не предсказывать пользователей. Уже несколько десятков тысяч качественных примеров резко меняют поведение — это намекает, что SFT в основном открывает способности, которые у базовой модели уже есть, а не учит новым.

    Настройка по предпочтениям: RLHF

    SFT умеет только подражать. Кто-то должен написать идеальный ответ, а функция потерь не может сказать, что один неплохой ответ лучше другого неплохого. Между тем оценить ответ гораздо легче, чем написать идеальный. Обучение с подкреплением на основе отзывов людей (reinforcement learning from human feedback, RLHF) использует эту асимметрию в три шага:

    1. Собрать сравнения. Модель пишет два ответа на один запрос, а человек выбирает лучший.
    2. Обучить модель вознаграждения предсказывать этот выбор: она читает запрос и ответ и выдаёт одно число — награду. Обычно это копия LLM с выходом в одно число.
    3. Оптимизировать LLM под модель вознаграждения обучением с подкреплением (RL) — методом проб и оценок: модель пробует ответы, модель вознаграждения их оценивает, и обучение сдвигает модель к тем, что оценены высоко.

    На шаге 2 используется модель парных предпочтений Брэдли — Терри: чем больше разрыв между двумя наградами, тем увереннее модель в том, что люди предпочтут ответ с большей:

    P(yw≻yl∣x)=σ(r(x,yw)−r(x,yl)),L=−log⁡σ(r(x,yw)−r(x,yl))P(y_w \succ y_l \mid x) = \sigma\big(r(x, y_w) - r(x, y_l)\big), \qquad \mathcal{L} = -\log \sigma\big(r(x, y_w) - r(x, y_l)\big)

    Здесь ywy_w — предпочтённый («победивший») ответ, yly_l — другой, а σ\sigma — сигмоида, σ(x)=1/(1+e−x)\sigma(x) = 1/(1+e^{-x}): она сжимает любое число в вероятность от 0 до 1. Например, если модель вознаграждения даёт предпочтённому ответу 2,0, а другому 0,5, она предсказывает σ(1,5)≈0,82\sigma(1{,}5) \approx 0{,}82 — 82% шансов, что человек выберет первый, — и потери равны −log⁡0,82≈0,2-\log 0{,}82 \approx 0{,}2: мало, исправлять почти нечего. Если бы она оценила их наоборот, вышло бы σ(−1,5)≈0,18\sigma(-1{,}5) \approx 0{,}18 и потери около 1,7: большие потери — большая поправка. Попробуйте побыть разметчиком:

    Рисунок 15.2 · Учим модель вознаграждения вашему вкусу

    Пара 1/4 · запрос: Какая столица у Австралии?

    Ответ Aмодель вознаграждения: 50%

    Канберра.

    Ответ Bмодель вознаграждения: 50%

    Отличный вопрос! Это Сидней — самый большой и известный город страны 😊

    Веса модели вознаграждения (что, по её мнению, вы цените)
    верно0.00
    подробно0.00
    кратко0.00
    дружелюбно0.00

    Все веса начинаются с 0, поэтому каждая пара — угадывание 50 на 50. Выбирайте ответы, которые нравятся вам.

    Отложенная пара, на которой модель не училась

    Сколько ног у паука?

    “Восемь.” 50%“Пауки удивительные! У них шесть ног, как у других насекомых 🕷️” 50%

    Награды: 0.00 против 0.00

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

    Затем наступает шаг 3: саму LLM обучают с подкреплением (классически — алгоритмом PPO, proximal policy optimization, который делает маленькие, «обрезанные» шаги) выдавать ответы, которые модель вознаграждения оценивает высоко, со штрафом за слишком сильный уход от SFT-модели πref\pi_\text{ref}. Обучаемую модель здесь называют политикой π\pi — правилом выбора ответов; E\mathbb{E} — среднее по ответам, которые она выдаёт, KL измеряет, насколько далеко она ушла, а β\beta задаёт, насколько строго за это наказывают:

    max⁡π  Ey∼π(⋅∣x)[r(x,y)]−β KL(π ∥ πref)\max_\pi \; \mathbb{E}_{y \sim \pi(\cdot \mid x)}\big[r(x, y)\big] - \beta\, \mathrm{KL}\big(\pi \,\|\, \pi_\text{ref}\big)

    Штраф KL важен. Модель вознаграждения лишь приближает человеческий вкус, и политика, которую сильно оптимизируют под неё, находит её слепые пятна: ответы, которые получают высокую оценку, не будучи хорошими. Это называется взломом награды (reward hacking), и из-за него RLHF требует аккуратной настройки.

    DPO: без модели вознаграждения

    RLHF нужны модель вознаграждения, цикл сэмплирования и RL, и каждая из этих частей может сломаться. Прямая оптимизация предпочтений (direct preference optimization, DPO) (Rafailov и др., 2023) избавляется от большей их части с помощью алгебры. Для задачи выше лучшую возможную политику можно записать точной формулой. Если её перевернуть, она говорит: награда ответа равна β\beta, умноженной на логарифм того, во сколько раз политика делает этот ответ вероятнее, чем эталонная модель, плюс слагаемое, которое зависит только от запроса. Подставим такую награду в функцию потерь Брэдли — Терри: слагаемое, зависящее только от запроса, сокращается в разности, и остаётся функция потерь на вероятностях самой политики — без всякой модели вознаграждения:

    LDPO=−log⁡σ ⁣(βlog⁡πθ(yw∣x)πref(yw∣x)−βlog⁡πθ(yl∣x)πref(yl∣x))\mathcal{L}_\text{DPO} = -\log \sigma\!\left(\beta \log \frac{\pi_\theta(y_w \mid x)}{\pi_\text{ref}(y_w \mid x)} - \beta \log \frac{\pi_\theta(y_l \mid x)}{\pi_\text{ref}(y_l \mid x)}\right)

    Читается так: поднять вероятность предпочтённого ответа и опустить вероятность отвергнутого — оба относительно эталонной модели. Ни сэмплирования, ни отдельной модели вознаграждения, ни цикла RL — просто обучение с учителем на парах. DPO и множество его вариантов широко используются, особенно в открытых моделях.

    Отзывы от ИИ и «конституции»

    Человеческая разметка медленная и дорогая, а люди ещё и расходятся во мнениях. В RLAIF (обучение с подкреплением на основе отзывов ИИ) размечает другая модель: читает два ответа и говорит, какой лучше. Подход Anthropic под названием Constitutional AI делает критерии судьи явными — это короткий список письменных принципов, «конституция»; модель критикует и исправляет собственные ответы по этим принципам, а размеченные ИИ предпочтения затем обучают модель вознаграждения. Конвейер тот же, что у RLHF, меняется только источник меток — поэтому его дёшево масштабировать и легко проверить, каким ценностям модель учат.

    Рассуждения: RL с проверяемыми наградами

    Для математики, кода и логики есть сигнал лучше человеческого вкуса — правильный ли ответ. Тест (небольшая автоматическая проверка кода) либо проходит, либо нет; число либо совпадает с эталоном, либо нет. Обучение с подкреплением с проверяемыми наградами (RLVR) сэмплирует много попыток на задачу, награждает те, что заканчиваются верным проверяемым ответом, и сдвигает модель в их сторону.

    Никто не объясняет модели, как рассуждать. Получив место, чтобы писать перед ответом, модели, обученные так, сами учатся разбивать задачи на шаги, проверять промежуточные результаты, замечать ошибки и возвращаться назад. Их «размышления» становятся длиннее по ходу обучения. Это и есть рассуждающие модели (reasoning models): они тратят на ответ дополнительные токены, а значит, и дополнительные вычисления.

    GRPO: база — это сама группа

    Награду саму по себе трудно истолковать: 0,6 — хороший результат на трудной задаче и слабый на лёгкой. Модели важно другое: получился ли ответ лучше или хуже её обычной попытки на этой задаче, поэтому каждую награду сравнивают с базой (baseline). Классический PPO обучает для этого вторую сеть, модель ценности (value model), которая оценивает эту базу. GRPO (group relative policy optimization), с помощью которого обучали DeepSeek-R1, обходится без модели ценности. Для каждой задачи он сэмплирует группу из GG ответов, оценивает их и использует саму группу как базу:

    Ai=ri−mean⁡(r1,…,rG)std⁡(r1,…,rG)A_i = \frac{r_i - \operatorname{mean}(r_1, \dots, r_G)}{\operatorname{std}(r_1, \dots, r_G)}

    AiA_i — преимущество ответа ii: насколько его награда выше средней по группе, делённое на разброс наград (стандартное отклонение, std). Затем каждый токен ответа ii становится вероятнее, если Ai>0A_i > 0, и менее вероятным, если Ai<0A_i < 0; отсечение (clipping) из PPO и штраф KL к эталонной модели держат каждый шаг маленьким. Например, при G=4G = 4 ответах с наградами 1, 0, 0, 1 (верно, неверно, неверно, верно) среднее равно 0,5, а std — 0,5, так что преимущества равны +1, −1, −1, +1: два верных ответа становятся вероятнее, два неверных — реже.

    Попробуйте на игрушечной политике, которая выбирает между четырьмя манерами ответа на 13 × 17. Проверка берёт итоговый ответ из \boxed{…} — метки, которой в математических наборах данных отмечают, где стоит ответ:

    Рисунок 15.3 · GRPO и как взламывают проверку с ошибкой

    Задача: «Сколько будет 13 × 17?» Проверка ищет ответ внутри \boxed{…}.

    Группа из 8 ответов · шаг 0

    Нажмите «Сгенерировать группу», чтобы получить 8 ответов текущей политики.

    Политика: как часто модель выбирает каждую стратегию
    по шагам15.0%
    коротко30.0%
    без рамки35.0%
    догадка20.0%
    По ходу обучения
    0%50%100%

    настоящая точность: 28% награда проверки: 28%

    Стратегии
    • по шагам 13·17 = 13·10 + 13·7 = 130 + 91 → \boxed{221} (85% верно)
    • коротко 13·17 ≈ 220 → \boxed{220} (45% верно)
    • без рамки Это 221. (60% верно)
    • догадка \boxed{200} (8% верно)
    Каждый шаг сэмплирует 8 ответов текущей политики, оценивает их и подталкивает политику к ответам выше среднего. С проверкой, которая сверяет число, настоящая точность растёт. Переключитесь на проверку с ошибкой — она смотрит только на формат и поощряет краткость: награда растёт, а точность рушится, потому что угадать число и обернуть его в рамку — самый простой способ ей угодить.

    В этом рисунке спрятаны два урока:

    • Нет разброса — нет сигнала. Если все ответы группы получили одинаковую награду (все верны или все неверны), среднее совпадает с каждой наградой, и все преимущества равны нулю, и шаг ничему не учит. Поэтому задачи для обучения подбирают трудными, но посильными для текущей модели.
    • Взлом награды. Политика оптимизирует ту награду, которую ей дали, а не ту, которую вы имели в виду. Реальные примеры: модели правят юнит-тесты, чтобы те проходили, пропускают трудную часть задачи или пишут длинные уверенные ответы, которые обманывают модель-судью. Защита — аккуратные проверки, отложенные тесты и ограничение того, насколько далеко политика может уйти.

    Дистилляция рассуждений

    RL на большой модели дорог. Более дешёвый способ научить маленькую модель рассуждать — дистилляция (глава 13): дать сильной рассуждающей модели решить много задач, оставить цепочки, где итоговый ответ прошёл проверку, и дообучить на них маленькую модель обычным обучением с учителем. Та же идея — генерировать обучающие данные моделью и автоматически их фильтровать — теперь составляет большую долю данных для дообучения вообще; это называют синтетическими данными.

    Вычисления во время ответа

    Думать дольше — один из способов потратить больше вычислений на вопрос. Другой — сэмплировать несколько независимых ответов и выбрать ответ большинством голосов (это ещё называют самосогласованностью, self-consistency). Оба способа меняют скорость и деньги на точность. Попробуйте на известной задаче с подвохом:

    Рисунок 15.4 · Больше ответов помогает, но только если модель обычно права

    «Бита и мяч вместе стоят 110 ₽. Бита на 100 ₽ дороже мяча. Сколько стоит мяч?»

    5 ответов → большинство говорит 5 ₽ ✓
    5 ₽80.0%
    10 ₽20.0%
    1 ₽0.0%
    15 ₽0.0%
    105 ₽0.0%
    Точность голосования в зависимости от k (симуляция)
    0%50%100%k = 25k = 1

    по шагам: 91% сразу: 36%

    Распределения ответов смоделированы. При ответе сразу соблазнительный неверный ответ (10 ₽) встречается чаще всего, поэтому голосование с ростом k ухудшает точность. Рассуждение по шагам делает самым частым правильный ответ (5 ₽), и тогда голосование подталкивает точность к 100%.

    Урок обобщается: голосование и поиск усиливают то, что модель и так делает чаще всего. Дополнительные вычисления при ответе окупаются поверх модели, чьи рассуждения в основном верны, — а именно такую модель и даёт RL на проверяемых задачах. Более сложные схемы оценивают кандидатов или отдельные шаги рассуждения отдельным верификатором или моделью вознаграждения и оставляют лучший.

    Генерация с дополнением из поиска

    Модель знает только то, что было в её обучающих данных, застывших на дате окончания обучения, и может выдумывать правдоподобные детали о том, что помнит наполовину. Генерация с дополнением из поиска (retrieval-augmented generation, RAG) сначала ищет факты:

    1. Разбить документы на фрагменты и превратить каждый в вектор (та же идея, что в главе 3, только модель обучена для поиска).
    2. Так же превратить в вектор вопрос пользователя.
    3. Найти фрагменты, чьи векторы ближе всего к вопросу, — обычно по косинусному сходству, мере того, насколько два вектора смотрят в одну сторону.
    4. Вставить эти фрагменты в промпт и попросить модель отвечать по ним.
    Рисунок 15.5 · Поиск в четырёх измерениях
    вектор запросапитомцы 0.9деньги 0.0отдых 0.1офис 0.5
    Хранилище документов по косинусному сходству
    • 1.00По пятницам в офис можно приходить с собакой, если она спокойная и на поводке.
    • 0.98Офисного кота Пикселя гостям кормить нельзя.
    • 0.44Места на парковке в гараже — кто первый приехал, того и место.
    • 0.37Офис закрыт с 31 декабря по 8 января.
    • 0.14Каждому положено 28 дней оплачиваемого отпуска в год.
    • 0.05Расходы возмещаются в течение 14 дней после загрузки чека.
    Промпт, который видит модель
    Ответь, опираясь на эти заметки.
    По пятницам в офис можно приходить с собакой, если она спокойная и на поводке.
    Офисного кота Пикселя гостям кормить нельзя.
    Вопрос: Можно взять собаку на работу?
    Ответ: Да, по пятницам, если собака спокойная и на поводке.
    Придуманные 4-мерные векторы изображают настоящие эмбеддинги с сотнями измерений. Выберите вопрос: документы переупорядочиваются по косинусному сходству, и лучшие k перелетают в промпт. Модель ничего не «ищет» — она просто читает более длинный промпт.

    RAG делает ответы актуальными и проверяемыми (можно показать источники) и работает на закрытых данных, которых модель никогда не видела. Его слабое место — сам поиск: если нужный фрагмент не нашёлся, модель не сможет им воспользоваться. Рабочие системы сочетают векторный поиск с поиском по ключевым словам и моделью-переранжировщиком (reranker), которая заново оценивает найденные фрагменты и меняет их порядок, а длинные окна контекста (глава 12) позволяют включать больше фрагментов и крупнее.

    Инструменты и агенты

    Некоторые вещи лучше делать вне модели: считать, узнавать сегодняшнюю погоду, запускать код, обращаться к базе данных. Модели дообучают выдавать вызовы инструментов — структурированный текст, например JSON, который выполняет окружающая программа. Результат возвращается в контекст, и модель продолжает.

    Рисунок 15.6 · Цикл работы с инструментами
    ПользовательМодельСреда / инструменты
    системаИнструменты: get_weather(city), calculator(expression). Чтобы вызвать инструмент, напиши JSON.
    пользовательГде сейчас теплее — в Лиссабоне или в Осло, и на сколько?
    1/8

    Контекст начинается с системного сообщения со списком инструментов, затем идёт вопрос пользователя. Модель не умеет ходить в интернет: она только предсказывает токены.

    Пройдите диалог по шагам. Модель только и делает, что выдаёт токены. Среда выполнения замечает вызов инструмента, выполняет его, дописывает результат и снова запускает модель на удлинившемся контексте.

    Агент — это тот же цикл, только с большим числом инструментов и шагов: читать файлы, запускать тесты, ходить в интернет, править код и решать, когда задача выполнена. Стандарты вроде Model Context Protocol (MCP) описывают инструменты в общем формате, чтобы любая модель могла работать с любым сервером инструментов.

    Инженерия контекста

    Контекст долго работающего агента забивается результатами инструментов, содержимым файлов и старыми репликами, а модели работают хуже, когда контекст становится длинным и захламлённым (глава 12). Поэтому немалая часть создания хорошего агента — решать, что модель видит на каждом шаге: подтягивать только нужные файлы, обрезать или пересказывать старый вывод инструментов, записывать заметки в файл и перечитывать их позже, поручать самостоятельные подзадачи суб-агентам со свежим контекстом. Это часто называют инженерией контекста (context engineering).

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

    Итоги

    • Предобучение даёт базовую модель, которая продолжает текст. Дообучение с учителем на диалогах превращает её в ассистента.
    • RLHF обучает модель вознаграждения на парах человеческих предпочтений и оптимизирует LLM под неё на «поводке» KL; DPO получает похожий результат одной функцией потерь с учителем на тех же парах.
    • RLAIF и «конституционные» подходы заменяют человеческие метки предпочтений моделью-судьёй, которая следует письменным принципам.
    • RL с проверяемыми наградами учит модели рассуждать; GRPO оценивает каждый ответ относительно его группы, а проверка с изъяном провоцирует взлом награды.
    • Дистилляция и синтетические данные передают способности большой модели, включая рассуждения, маленьким.
    • Вычисления во время ответа (долгие рассуждения, голосование, верификаторы) покупают точность ценой лишних токенов и лучше всего работают, когда модель обычно права.
    • RAG вставляет найденные документы в промпт; инструменты и агенты позволяют модели действовать через среду выполнения, а инженерия контекста держит то, что они видят, кратким и уместным.