43 Chain-of-Thought
Контекст
LLM плохо решали многошаговые задачи (арифметика, логика) — выдавали ответ «сразу», ошибаясь в промежуточных шагах. Вэй и др. меняют это одним приёмом.
Идея и механизм
В few-shot примерах показать модели не только ответ, но и ПРОМЕЖУТОЧНЫЕ ШАГИ рассуждения («давай рассуждать по шагам»). Тогда на новой задаче модель тоже генерирует цепочку рассуждений ПЕРЕД ответом — и точность резко растёт. Восемь CoT-примеров вывели PaLM 540B на SOTA по GSM8K, обойдя даже дообученный GPT-3 с верификатором.
теория вероятностей Почему промежуточные шаги помогают
Прямой ответ — это P(a | q): вся вычислительная работа должна уместиться в один проход, и на многошаговой задаче точность низкая. CoT вводит явную цепочку рассуждений r:
Генерация r даёт два эффекта. (1) Больше вычислений: каждый сгенерированный токен — это ещё один прямой проход, поэтому рассуждение разворачивается на много последовательных шагов вместо одного. (2) Условие на промежуточные результаты: ответ опирается на явно выписанные подвыводы, а не держит всё «в уме». Ключевое наблюдение: эффект эмерджентен — у малых моделей CoT почти не помогает (или вредит), а у больших даёт большой выигрыш. Способность «рассуждать по шагам» появляется только с масштабом.
Python CoT-промпт (few-shot с рассуждением)
prompt = """Q: У Роджера 5 мячей. Купил ещё 2 банки по 3 мяча. Сколько всего?
A: Было 5. Купил 2 × 3 = 6. Итого 5 + 6 = 11. Ответ: 11.
Q: В столовой было 23 яблока, 20 ушло на обед, купили ещё 6. Сколько яблок?
A:"""
out = lm.generate(prompt) # модель выпишет шаги, потом ответ: 9
Почему это важно
Практически — мощный бесплатный приём (CoT → self-consistency, ReAct, scratchpad). Концептуально — толчок направлению reasoning, кульминация которого модели с длинным «мышлением» (o1, DeepSeek-R1, #53), обучаемые делать CoT через RL. Один формат промпта раскрыл скрытую способность модели.
Связи
CoT — это «продвинутый few-shot»: тот же интерфейс in-context learning GPT-3, но в примеры добавлены шаги рассуждения. Без парадигмы «учить из примеров в промпте» CoT не на чем было бы строить.
CoT показал, что рассуждение по шагам резко поднимает качество. R1 делает следующий шаг: обучает модель рассуждать через RL на верифицируемых наградах, и длинные цепочки мысли возникают сами. Промптинг 2022-го вырос в обучаемую способность к рассуждению.
Обе про «потратить больше вычислений во время решения». AlphaGo разворачивает поиск по дереву; CoT разворачивает рассуждение в токенах. Это две формы inference-time compute — думать дольше, чтобы решить лучше.
Вопросы пытливого ума
Цепочка рассуждений отражает настоящий ход «мысли» модели?
Не обязательно. Это правдоподобный текст, который помогает прийти к ответу, но не гарантированно описывает внутренние вычисления. Бывает, что модель выдаёт верный ответ при ошибочной цепочке, или «рационализирует» уже принятое решение. CoT — полезный инструмент и частичное окно в рассуждение, но не достоверный лог внутренней работы (тема «faithfulness of reasoning»).
Почему CoT эмерджентен — у маленьких моделей не работает?
Малой модели не хватает базовых под-навыков (надёжная арифметика, удержание контекста), чтобы цепочка из шагов была корректной — одна ошибка в шаге рушит весь вывод, и CoT даже вредит. Большая модель достаточно надёжна на каждом шаге, и тогда разложение на шаги начинает выигрывать. Это пример «способность появляется скачком с масштабом», который плохо предсказывается гладким лоссом (#37).
Можно ли получить выигрыш CoT без примеров в промпте?
Да — zero-shot CoT: достаточно дописать «давай рассуждать шаг за шагом», и модель сама развернёт рассуждение (Kojima 2022). А self-consistency усиливает эффект: сэмплируют несколько цепочек и берут самый частый ответ. Так из одного приёма выросло целое семейство методов «думать дольше при инференсе».
Что читать в оригинале
Короткий — читать целиком; обратите внимание на эмерджентность и на то, как простое изменение интерфейса раскрывает скрытые способности модели.