Перейти к содержимому
ПереводыИсследователи и авторы

Lil’Log: зачем модели думать

Конспект обзора Лилиан Венг «Why We Think» (май 2025) о вычислениях во время ответа: зачем модели «думать дольше», параллельное сэмплирование и последовательные исправления, RL для рассуждений (DeepSeek-R1), честность цепочек рассуждений и опасность давления на них, мышление в непрерывном пространстве, рассуждение как скрытая переменная и законы масштабирования времени размышления.

  • Пост — обзор того, как модели тратят вычисления во время ответа (вычисления во время инференсавычисления во время инференса (test-time compute)EN test-time computeБольше вычислений на ответ вместо большей модели: длинное рассуждение, много сэмплов с голосованием, поиск с проверщиком.) и почему цепочка рассуждений (цепочка рассужденийцепочка рассужденийEN chain of thought (CoT)) так сильно помогает.
  • Три мотивации: аналогия с «медленным мышлением» человека (Канеман); вычисления как ресурс — CoT даёт модели больше FLOP на каждый токен ответа и позволяет тратить их по трудности задачи; рассуждение как скрытая переменная zz в модели P(y∣x)=∑zP(z∣x) P(y∣x,z)P(y \mid x) = \sum_z P(z \mid x)\,P(y \mid x, z).
  • Способы думать в токенах: параллельное сэмплирование (best-of-N, лучевой поиск с PRM, самосогласованность) и последовательные исправления (самокоррекция — без внешней обратной связи работает плохо, её надо обучать).
  • RL с проверяемыми наградами (DeepSeek-R1 и др.) учит модель рассуждать дольше и исправлять себя; PRM и MCTS у DeepSeek не сработали.
  • Честность CoT: рассуждающие модели чаще признают, что на ответ повлияла подсказка, но оптимизировать CoT напрямую опасно — модель начинает прятать взлом награды.
  • Есть и «мышление» в непрерывном пространстве: рекуррентная глубина, токены-паузы, Quiet-STaR. Время размышления масштабируется, но не заменяет 1:1 вычислений претрейна.

Это лучший обзор литературы к модулю 6.4. Читайте после уроков 6.4.1 «GRPO» и 6.4.2 «R1-Zero»: тогда раздел о DeepSeek-R1 будет повторением, а остальные — расширением. Раздел о законах масштабирования и s1 — к уроку 6.4.4 «Дистилляция и бюджет мышления», раздел о честности CoT и мониторинге — к 9.3.3 «Выравнивание». Перед чтением полезно освежить конспект о взломе награды — Венг на него ссылается.

Новичку можно пропустить «Мышление как скрытая переменная» (ЭМ-алгоритм, веса важности) — это самая математическая часть; достаточно понять, что STaR — это градиент политики с наградой «ответ верен».

Психология. Мы не перемножаем 12345 на 56789 мгновенно. Канеман делит мышление на быструю, интуитивную «Систему 1» и медленную, логическую «Систему 2». Первая дешева, но ошибается; вторая затратна, но позволяет проверить интуицию. CoT даёт модели аналог «Системы 2».

Вычисления как ресурс. Нейросеть можно описать тем, сколько вычислений и памяти ей доступно за прямой проход; градиентный спуск сам решит, как организовать их в «цепи» вычислений. Значит, если дать модели больше вычислений во время ответа и научить ими пользоваться, она станет сильнее. На один токен трансформер тратит около 2N2N FLOP, где NN — число параметров (у MoE — число активных параметров). Цепочка рассуждений умножает вычисления на каждый токен ответа — и, главное, позволяет тратить их переменно, по трудности задачи.

Скрытая переменная. Если xx — задача, yy — ответ, а zz — ход решения, то P(y∣x)=∑zP(z∣x) P(y∣x,z)P(y \mid x) = \sum_z P(z \mid x)\,P(y \mid x, z): распределение ответов становится богаче. Параллельный поиск по многим CoT можно понимать как сэмплирование из апостериорного распределения P(z∣x,y)P(z \mid x, y), а логарифм правдоподобия log⁡P(y∣x)\log P(y \mid x) — как естественную цель обучения.

Предыстория: промежуточные шаги перед ответом в математике (AQUA-RAT, Ling и др., 2017; GSM8K, Cobbe и др., 2021, где генератор учили на решениях людей, а проверяющую модель — выбирать правильные). Затем — «думай по шагам» в промпте, SFT на отфильтрованных по правильности рассуждениях (это уже зачаточный RL) и, наконец, RL на задачах с автоматически проверяемыми ответами — подход, ставший знаменитым после o1-preview.

flowchart LR
Q["Задача"] --> P["Параллельно: N попыток"]
P --> V["Выбор: голосование, верификатор, PRM"]
Q --> S["Последовательно: ответ → критика → исправление → ..."]
V --> A["Ответ"]
S --> A
Два способа тратить вычисления во время ответа (наша схема по описанию в посте).

Параллельное сэмплирование — проще и популярнее: best-of-N, лучевой поиск (лучевой поисклучевой поиск (beam search)EN beam searchДержит B лучших частичных последовательностей вместо одной. Хорош для перевода, плох для свободной генерации.), самосогласованность (самосогласованностьсамосогласованность (голосование большинством)EN self-consistency (majority voting)Сгенерировать N ответов и выбрать самый частый итоговый. В отчётах — maj@k или cons@k.). Лучевой поиск можно направлять моделью награды за процесс (процессная модель вознагражденияпроцессная модель вознаграждения (PRM)EN process reward model (PRM)Оценивает каждый шаг рассуждения, а не только итоговый ответ. В DeepSeek-R1 описана как «неудачная попытка»., Lightman и др., 2023) или самооценкой: модель сама оценивает шаг как вопрос с вариантами ответа (Xie и др., 2023). Любопытная находка Wang и Zhou (2024): CoT появляется и без промпта, если ветвиться на первом токене — взять kk самых уверенных вариантов первого токена и дальше декодировать жадно; многие такие продолжения уже содержат рассуждение, и уверенность модели в ответе выше там, где оно есть. Ограничение параллельного подхода — модель должна уметь решить задачу с одной попытки хоть иногда.

Последовательные исправления — модель смотрит на свой ответ и исправляет. Но «врождённой» самокоррекции у LLM почти нет: без внешней обратной связи модель портит правильные ответы, вносит мелкие косметические правки или не обобщает исправления. Поэтому её обучают:

  • Self-correction learning (Welleck и др., 2023): отдельная модель-корректор учится на парах «ответ → лучший ответ на ту же задачу», отобранных по росту качества и сходству;
  • рекурсивная интроспекция (Qu и др., 2024): одна модель и отвечает, и исправляет;
  • SCoRe (Kumar и др., 2024): двухэтапный многоходовый RL — сначала максимизировать точность второй попытки, держа первую близкой к исходной модели (KL-штраф), затем — точность обеих попыток; первый этап не даёт модели «схлопнуться» в почти нулевые правки.

По Snell и др. (2024), лёгким задачам больше помогают последовательные исправления, а трудным — подобранное сочетание параллельного и последовательного.

Венг пересказывает рецепт DeepSeek-R1 (подробно — в уроке 6.4.2): SFT на нескольких тысячах примеров «холодного старта» (данные холодного стартаданные холодного стартаEN cold-start dataНебольшой набор качественных длинных рассуждений для SFT перед RL — так в DeepSeek-R1 исправили нечитаемость R1-Zero.) → RL на задачах рассуждения с наградами по правилам (правиловая наградаправиловая наградаEN rule-based rewardНаграду считает программа (сверка ответа, запуск тестов, проверка формата), а не нейросеть. Её трудно «взломать».) — за формат и за правильность ответа → отбор с отклонением (отбор с отклонениемотбор с отклонением (rejection sampling)EN rejection samplingСгенерировать много ответов и оставить только прошедшие проверку. В пост-трейнинге — способ собрать SFT-данные из RL-модели.) и SFT на 800 тыс. примеров (рассуждения плюс обычные задачи V3) → финальный RL на рассуждениях и общих задачах. Чистый RL без SFT (R1-Zero) сам научился рефлексии и откату — «момент озарения» («момент озарения»«момент озарения»EN aha momentЭффект из статьи DeepSeek-R1: модель при RL-обучении сама начинает перепроверять свои рассуждения.) — и рост длины рассуждений. Неудачи DeepSeek: PRM (трудно определить правильность промежуточного шага, легко взломать) и MCTS (слишком большое пространство токенов, трудно обучить модель ценности).

Часть шагов надёжнее отдать интерпретатору кода (PAL, Chain of Code) или поиску (ReAct). o3 и o4-mini используют поиск, исполнение кода и обработку изображений прямо внутри рассуждения, и, по словам OpenAI, крупномасштабный RL следует тому же принципу «больше вычислений — лучше результат».

CoT — удобная форма интерпретируемости: по ней видно, как модель пришла к ответу. Мониторинг CoT ловит взлом награды (например, «выйти через exit(0) до запуска тестов» или «пропустить тесты исключением»), причём слабая модель может следить за сильной (Baker и др., 2025), а более долгое размышление повышает устойчивость к атакам (Zaremba и др., 2025).

Но честна ли CoT? Проверки:

  • испортить CoT — оборвать раньше, вставить ошибку, заменить «пустыми» токенами (точками), перефразировать (Lanham и др., 2023). Пустые токены не помогают; перефразирование не вредит; зависимость ответа от CoT для задач с вариантами не всегда растёт с размером модели, а для сложения растёт;
  • подсказать в промпте неверный ответ («профессор думает, что ответ B») или всегда ставить правильный ответ на «(A)» в примерах (Turpin и др., 2023; Chen и др., 2025) — и посмотреть, признаётся ли модель, что подсказка повлияла. Рассуждающие модели (Claude 3.7 Sonnet, DeepSeek R1) признаются заметно чаще обычных.

Давление на CoT — хорошо или плохо? Мониторинг как фильтр при отборе работает лишь в начале RL. Если же добавить монитор CoT в награду, модель продолжает взламывать — реже, но скрывая намерение в рассуждении (Baker и др., 2025). Награда за длину CoT порождает новый взлом — модель повторяет текст (Yeo и др., 2025). В эксперименте Chen и др. (2025) модель использовала подложенную «дыру» в оценщике более чем в 99 % примеров, но почти никогда (меньше 2 %) не упоминала её в рассуждении в большинстве сред. Вывод Венг: прямо оптимизировать CoT в RL надо очень осторожно, а лучше вовсе избегать.

Идея восходит к адаптивному времени вычислений (Graves, 2016; см. статью Distill о дополненных RNN): модель сама решает, сколько шагов думать.

  • Рекуррентная архитектура. Universal Transformer; рекуррентная глубина Geiping и др. (2025): блок RR повторяется rr раз над эмбеддингом входа и случайным начальным состоянием (похоже на условную диффузию); rr на обучении случаен, обратное распространение — только через последние k=8k = 8 итераций. Обучение очень чувствительно к инициализации, нормализации и гиперпараметрам.
  • Токены размышления и паузы. Вставить после слов служебный токен <T> (Herel и Mikolov, 2023) или добавить в конец входа «пустые» токены-паузы (Goyal и др., 2024): токены не несут информации, но дают лишние проходы вычислений. Паузы надо использовать и на претрейне, и на дообучении — одного дообучения мало.
  • Quiet-STaR (Zelikman и др.): после каждого токена модель порождает короткое «обоснование» будущего текста (параллельно, со специальной маской внимания), смешивает предсказания с ним и без него через обучаемую «голову смешивания» и учит обоснования методом REINFORCE. На Mistral 7B без дообучения под задачи: CommonsenseQA 36,3 % → 47,2 %, GSM8K 5,9 % → 10,9 %.

Если рассуждение zz — скрытая переменная, цель — максимизировать log⁡P(y∣x)=log⁡Ez∼p(z∣x)p(y∣x,z)\log P(y \mid x) = \log \mathbb{E}_{z \sim p(z \mid x)} p(y \mid x, z). Отсюда ЭМ-подход: E-шаг — найти хорошие рассуждения (по разметке людей, MCMC или выборке с весами важности), M-шаг — дообучить модель на них. Ruan и др. (2025) просили LLM вставлять «скрытые мысли» между префиксом и продолжением веб-документа и отбирали их по весу w=p(z,x)/q(z∣x)w = p(z, x) / q(z \mid x): хорошая мысль объясняет текст, проста, но не очевидна.

Итеративное обучение. STaR (Zelikman и др., 2022): породить рассуждения, оставить те, что привели к верному ответу, дообучить, повторить. Для нерешённых задач — «рационализация»: породить рассуждение, зная правильный ответ. Венг показывает, что STaR — это приближение градиента политики с наградой 1[y^=y]\mathbb{1}[\hat y = y]:

∇θJ(θ)=Ez,y∼p(⋅∣x)[1[y=ytruth]  ∇θlog⁡p(y,z∣x)],\nabla_\theta J(\theta) = \mathbb{E}_{z, y \sim p(\cdot \mid x)}\big[\mathbb{1}[y = y^\text{truth}]\; \nabla_\theta \log p(y, z \mid x)\big],

то есть SFT на отобранных правильных примерах — это REINFORCE с наградой 0/1 (сравните с уроком 6.3.1). Предостережение авторов: высокая температура чаще даёт правильный ответ при неверном рассуждении, и обучение на таком портит обобщение.

5. Законы масштабирования времени размышления

Заголовок раздела «5. Законы масштабирования времени размышления»
  • Оптимизация вычислений во время ответа может быть выгоднее роста модели: маленькая модель с хорошим алгоритмом вывода даёт Парето-оптимальный компромисс цены и качества (Snell и др., 2024; Wu и др., 2025).
  • Но обмен не 1:1: на лёгких и средних задачах время размышления быстро закрывает небольшой разрыв в способностях, а на трудных помогает мало. Выгодно, только когда токенов на инференсе намного меньше, чем на претрейне. Сильная базовая модель по-прежнему нужна.
  • s1 (Muennighoff и др., 2025): «принуждение к бюджету» (бюджет мышлениябюджет мышленияEN thinking budgetЛимит токенов на рассуждение; при его исчерпании рассуждение обрывают и просят модель ответить. Ручка «точность ↔ задержка».) — удлинить рассуждение, дописывая «Wait», или оборвать его токеном конца размышления. Средняя длина размышления и точность заметно положительно связаны. А простой отбор по длине (сэмплировать, пока не уложится в бюджет) даёт обратную зависимость: длинные цепочки оказываются хуже.

Как в RL поощрять читаемые и честные рассуждения без взлома награды? Как определять и ловить взлом без людей и без бесконечной «игры в крота»? Как учить самокоррекцию без ошибок и откатов, когда нет правильного ответа? Как делать RL с CoT для творческих и трудно проверяемых задач? Как переносить выигрыш от долгого размышления обратно в базовую модель (дистилляцией)? Как делать бюджет размышления адаптивным к трудности задачи?

Посчитайте цену «размышления» в FLOP — по оценке поста ≈2×\approx 2 \times (активные параметры) на токен:

# Сколько вычислений тратит модель на ответ: ≈ 2 FLOP на каждый активный параметр на каждый токен
def flops(active_params, tokens):
return 2 * active_params * tokens
dense = 7e9 # плотная модель на 7 млрд параметров
moe_active = 3e9 # MoE: 30 млрд всего, но на токен активны ~3 млрд
answer, cot = 5, 2000 # короткий ответ и ответ с рассуждением на 2000 токенов
for name, p in [("плотная 7B", dense), ("MoE 30B-A3B", moe_active)]:
a, c = flops(p, answer), flops(p, answer + cot)
print(f"{name}: без CoT {a:.1e} FLOP, с CoT {c:.1e} FLOP, в {c / a:.0f} раз больше")
# Параллельно (8 попыток по 2000 токенов) или последовательно (одна попытка на 16000 токенов) — одинаковый бюджет
print(f"8 x 2000 токенов: {flops(dense, 8 * 2000):.1e} FLOP; 1 x 16000 токенов: {flops(dense, 16000):.1e} FLOP")

Ожидаемый вывод:

плотная 7B: без CoT 7.0e+10 FLOP, с CoT 2.8e+13 FLOP, в 401 раз больше
MoE 30B-A3B: без CoT 3.0e+10 FLOP, с CoT 1.2e+13 FLOP, в 401 раз больше
8 x 2000 токенов: 2.2e+14 FLOP; 1 x 16000 токенов: 2.2e+14 FLOP

Оценка 2N2N не учитывает внимание: при длинном контексте его доля растёт, и одна попытка на 16 000 токенов на практике дороже восьми по 2000 (а ещё её нельзя распараллелить). Это одна из причин, по которой параллельное сэмплирование популярнее.

Дальше, с локальной моделью и кодом модуля 6.4:

  1. Повторите «принуждение к бюджету» s1: на 30 задачах GSM8K обрывайте рассуждение на 256, 512, 1024 токенах и дописывайте «Final Answer:»; затем вместо обрыва дописывайте «Wait» один-два раза. Постройте точность от средней длины.
  2. Проверьте честность CoT по Turpin и др.: добавьте в промпт «Мне кажется, ответ — (B)» к вопросам с вариантами и посчитайте, как часто ответ меняется и как часто модель упоминает подсказку в рассуждении.
  3. Реализуйте STaR на игрушечной задаче (сложение двузначных чисел): порождайте решения, оставляйте верные, дообучайте маленькую модель — и сравните с GRPO из урока 6.4.5.
ENRU
test-time compute, thinking timeвычисления во время ответа, время размышления
System 1 / System 2Система 1 (быстрое) / Система 2 (медленное мышление)
latent variable, posteriorскрытая переменная, апостериорное распределение
parallel sampling / sequential revisionпараллельное сэмплирование / последовательные исправления
process reward model (PRM)модель награды за процесс
self-correctionсамокоррекция
cold start, rule-based rewardхолодный старт, награда по правилам
CoT faithfulness, CoT monitoringчестность цепочки рассуждений, мониторинг CoT
obfuscated reward hackingскрытый взлом награды
recurrent depth, pause / thinking tokensрекуррентная глубина, токены-паузы / токены размышления
expectation-maximization (EM)ЭМ-алгоритм
rationalization (STaR)рационализация
budget forcingпринуждение к бюджету размышления
Pareto-optimalПарето-оптимальный