Если попросить LLM сгенерировать несколько вариантов ответа и выбрать тот, который повторился чаще всего (это называют self-consistency), обычно результат становится точнее. Исследование показывает: на трудных вопросах эта техника не просто перестаёт помогать — она вредит. Причина в том, что все варианты ответа рождаются из одной и той же "головы" модели: если модель ошибается в рассуждении, она повторяет одну и ту же ошибку раз за разом. Больше попыток — это не больше независимых мнений, а больше копий одной и той же неправильной логики.
Представь, что ты просишь пять разных консультантов оценить риск сделки, но все пятеро на самом деле — клоны одного человека с одним и тем же слепым пятном в голове. Их "консенсус" будет уверенным и неправильным. Именно так себя ведёт LLM на средних и сложных вопросах: чем больше вариантов ответа она генерирует, тем увереннее закрепляется неправильный "победитель" голосования. На лёгких вопросах, где модель почти всегда права, голосование работает отлично — проблема появляется именно там, где она чаще ошибается, чем угадывает.
Основной метод статьи — читать "внутренний сигнал уверенности" прямо из скрытых активаций модели (это требует доступа к API и коду, недоступно в обычном чате). Но авторы протестировали и более простой приём как контрольный вариант: попросить саму модель отдельно оценить каждый вариант ответа ("этот ответ верный? да/нет") и выбрать не самый частый, а тот, что получил наивысшую оценку уверенности. Этот приём почти догнал сложный метод по качеству — и его можно применить в любом чате прямо сейчас.
Схема метода (доступная часть — generative self-verification)
ШАГ 1: Сгенерировать N независимых решений задачи, каждый раз рассуждая с нуля → список вариантов
ШАГ 2: Для каждого варианта ОТДЕЛЬНО спросить модель: "Этот ответ верный? Да/Нет и почему" → оценка по каждому
ШАГ 3: Выбрать вариант с наивысшей уверенностью "да", а не самый часто повторяющийся
Все три шага можно выполнить в одном длинном промпте или по очереди в диалоге.
Пример применения
Задача: Юрист-фрилансер просит ChatGPT оценить, попадает ли конкретный договор под определённый пункт налогового кодекса — вопрос неоднозначный, требует многошагового рассуждения.
Промпт:
Вот условия договора: {текст договора}.
Вопрос: подпадает ли эта сделка под пункт {X} Налогового кодекса?
Сгенерируй 5 независимых развёрнутых решений этого вопроса.
Рассуждай с нуля в каждом варианте, не подглядывая в предыдущие попытки.
Затем для каждого из 5 решений отдельно оцени:
это решение верное? Ответь да/нет и обоснуй в 2-3 предложениях.
В конце выбери решение с самой высокой уверенностью "да" —
не то, которое повторилось чаще всего, а то, в правильности которого
ты уверен сильнее всего после проверки.
Результат: Модель выдаст 5 пронумерованных вариантов ответа, затем блок с оценкой каждого варианта (да/нет + обоснование), и в конце — финальный выбор с указанием, почему именно этот вариант признан самым надёжным. Если вопрос действительно сложный, финальный выбор может не совпадать с тем, что получилось бы простым большинством голосов.
Почему это работает
LLM плохо умеет не повторять свою ошибку — если в её "знаниях" зашита неверная логика, она воспроизведёт её в любом количестве попыток. Это и есть коррелированная ошибка: варианты ответа выглядят разными, но растут из одного корня.
Зато LLM ощутимо лучше справляется с проверкой готового ответа, чем с генерацией правильного ответа с нуля. Заметить чужую (или свою) ошибку — задача проще, чем не совершить её. Это известный эффект: критиковать легче, чем создавать.
Раздельная оценка каждого варианта заставляет модель посмотреть на ответ "со стороны", а не просто досчитать, какой вариант встретился чаще. Это не убирает коррелированность полностью, но даёт менее шаблонный сигнал, чем голое подсчитывание совпадений.
Рычаг управления: число вариантов (N) — для простых вопросов достаточно 3, для действительно сложных, где не уверен сам, — увеличивай до 5-7, потому что именно там голосование по частоте подводит сильнее всего.
Шаблон промпта
Задача: {твой вопрос или задача}
Сгенерируй {N} независимых решений этой задачи. Рассуждай с нуля
в каждом варианте, не оглядываясь на предыдущие попытки.
Затем для каждого варианта отдельно оцени: этот ответ верный?
Дай оценку да/нет с коротким обоснованием.
В конце выбери вариант с наибольшей уверенностью "да" —
не тот, что повторился чаще всего, а тот, что прошёл проверку
увереннее остальных.
Подставь свою задачу в {твой вопрос или задача}, число попыток в {N} — 3-5 для большинства случаев, больше для критичных решений.
🚀 Быстрый старт — вставь в чат:
Вот шаблон проверки ответов через самопроверку модели. Адаптируй под мою задачу:
{твоя задача}. Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, сколько вариантов сгенерировать и по каким критериям оценивать "верность" — потому что для разных задач (юридический вопрос, расчёт, творческая идея) критерий правильности разный.
Ограничения
⚠️ Не для простых вопросов: если модель почти всегда права (лёгкий вопрос), обычное голосование по большинству работает не хуже и дешевле — дополнительная проверка каждого варианта тратит токены впустую.
⚠️ Главный метод статьи недоступен в чате: самый точный способ (читать "внутренний сигнал" из скрытых активаций модели) требует доступа к API с выгрузкой внутренних состояний и кода на Python — обычный пользователь ChatGPT/Claude это применить не может.
⚠️ Самопроверка не идеальна: модель может быть так же уверенно неправа при оценке своего ответа, как при его генерации — приём снижает риск, но не убирает его полностью.
Ресурсы
A decodability criterion predicts when hidden-state selection beats majority voting in large language models. Zhixiang Wang, Ziliang Hong, Ulas Bagci — Northwestern University, Chicago. Метод из статьи назван CASE (Correctness-Axis SElection).
