Урок 4

Self-Consistency — повышение точности голосованием

Голосование за лучший ответ

Проблема: ИИ может быть непоследователен — задай один вопрос дважды и можешь получить разные ответы. Как повысить уверенность в результате?

Решение: Спроси нескольких экспертов

Self-Consistency означает генерацию нескольких путей рассуждения для одного и того же запроса и выбор самого частого итогового ответа. Вместо того чтобы доверять одному ответу, ты просишь модель решить задачу несколько раз, а потом проводишь "голосование" за тот ответ, который встретился чаще всего. Метод напрямую развивает Chain-of-Thought: если обычный CoT просит одно пошаговое решение, то Self-Consistency сэмплирует множество таких цепочек и оставляет ответ, на котором они сходятся.

Как это работает

Механизм опирается на температуру (temperature) — параметр, который задаёт, насколько случайно модель выбирает следующие токены. При температуре около 0 модель почти детерминирована и просто повторяла бы сама себя, поэтому Self-Consistency использует значение повыше (обычно 0.5–1.0), чтобы каждый прогон шёл немного другим путём рассуждения. Ты генерируешь, скажем, 5–40 ответов, вытаскиваешь из каждого финальный ответ, группируешь одинаковые вместе и выбираешь тот, что встречается в наибольшем числе цепочек. Идея простая: у задачи обычно один верный ответ, к которому ведут несколько корректных маршрутов, а каждый неверный ответ возникает из своей ошибки — поэтому правильный ответ набирает голоса, а ошибки рассеиваются.

Когда применять и какие компромиссы

Self-Consistency хорош на задачах с одним проверяемым ответом: арифметика, логические головоломки, рассуждения здравого смысла, задачи по коду. Он плохо подходит для открытых задач вроде творческого письма или пересказа, где нет "правильного" ответа, за который можно голосовать. Главная цена очевидна: прогон запроса N раз увеличивает расход токенов и задержку примерно в N раз, причём после ~10 выборок отдача быстро падает. И он не спасёт модель, которая уверенно ошибается всегда одинаково: если галлюцинация (hallucination) систематическая, а не случайная, большинство просто проголосует за неверный ответ. Разбор примера: спроси пять раз "Футболка стоит 40$ после скидки 20% — какой была изначальная цена?". Три цепочки верно считают 40 ÷ 0,8 = 50$, а две ошибаются и отвечают 48$ (прибавляют 20% вместо деления). Голосование большинством возвращает 50$ — правильный ответ, хотя почти половина отдельных попыток была неверной.

Представьте это как консультацию у нескольких экспертов:

  • 1. Эксперт 1: "Думаю, ответ 42, потому что..."
  • 2. Эксперт 2: "Я получил 42 другим методом..."
  • 3. Эксперт 3: "Мой подход даёт 38, вот почему..."
  • 4. Консенсус: Двое из трёх говорят 42 — это наш ответ!

Где это используется?

  • Математические задачи: Сложные вычисления, где ошибки вероятны
  • Медицинская диагностика: Получение второго и третьего мнения
  • Ревью кода: Множественный анализ потенциальных багов
  • Важные решения: Любые задачи, где точность критична

Интересный факт: Self-consistency может повысить точность на 5-15% в задачах на рассуждение! Ключ — использовать "температуру" (случайность), чтобы каждая попытка шла немного другим путём. Обычно достаточно 5-10 выборок.

Попробуйте сами!

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

Что такое Self-Consistency?

Вместо одного ответа, генерируем множество путей рассуждения (5-40 сэмплов) при высокой температуре, затем выбираем самый частый итоговый ответ голосованием большинства.

Как работает голосование

Каждый сэмпл создаёт цепочку рассуждений → итоговый ответ. Ответы группируются по значению. Побеждает ответ, появляющийся в наибольшем числе сэмплов. Ничьи разрешаются по уверенности или первому вхождению.

Стоимость vs Качество

5 сэмплов: ~5x стоимость, умеренное улучшение. 10 сэмплов: оптимальный баланс для большинства задач. 40 сэмплов: маргинальный рост. Температура 0.7-1.0 для разнообразных путей.

Когда использовать

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

Self-Consistency — Голосование ответов

🗳️ Self-Consistency — улучшение Chain of Thought! Генерируем несколько разных рассуждений и выбираем самый частый ответ через голосование. Это помогает избежать случайных ошибок!

Выбери задачу:
Вопрос:

В магазине было 12 яблок и 8 апельсинов. Продали 5 фруктов. Если среди проданных было 3 яблока, сколько апельсинов осталось?

Одиночный CoT
Рассуждение:

Всего фруктов: 12 + 8 = 20. Продали 5, осталось 20 - 5 = 15. Апельсинов было 8, так что... примерно 6?

Ответ:

6 апельсинов

⚠️ Ошибка в рассуждении!

Self-Consistency
👆 Нажми "Сгенерировать 5 ответов" чтобы увидеть параллельные рассуждения
🔄 Как работает Self-Consistency:
1. Генерация

Создаём 5+ разных цепочек рассуждений с температурой > 0

2. Сбор ответов

Извлекаем финальный ответ из каждого пути

3. Голосование

Выбираем самый частый ответ (majority vote)

⚡ Когда использовать Self-Consistency:
  • Математические задачи с несколькими шагами
  • Задачи с логическими рассуждениями
  • Когда важна высокая точность (медицина, финансы)
  • Вопросы, где одна ошибка меняет весь ответ
Ключевая идея

Self-Consistency работает потому что даже если одно рассуждение содержит ошибку, правильный ответ чаще появляется в других путях. Это "мудрость толпы" для LLM! Минус: требует больше токенов (5× вызовов), но точность повышается на 10-30% для сложных задач.

Как использовать Self-Consistency

Self-Consistency — это НЕ особый промпт! Это метод агрегации нескольких ответов:

  • Запускаешь один промпт несколько раз
  • Используешь temperature > 0 для разнообразия
  • Собираешь ответы и выбираешь самый частый

Шаг 1: Базовый промпт с CoT

Реши задачу пошагово:
{task}

Покажи рассуждения и дай ответ.

Обычный промпт с Chain-of-Thought. Ничего особенного пока что.

Шаг 2: Генерация нескольких ответов

Вызови LLM 3-5 раз с одним и тем же промптом, но с temperature > 0 (например, 0.7).

Каждый раз ты получишь разные рассуждения и возможно разные ответы. Это нормально!

Шаг 3: Агрегация (код)

from collections import Counter

responses = [call_llm(prompt, temp=0.7) for _ in range(5)]
answers = [extract_answer(r) for r in responses]
final_answer = Counter(answers).most_common(1)[0][0]

Используй Counter для подсчёта голосов. Самый частый ответ побеждает!

Пример конкретного промпта

Задача: Сколько будет 17 × 24?

Реши пошагово:
1. Разбей на простые операции
2. Вычисли каждую
3. Дай финальный ответ

Ответ:

Запусти этот промпт 5 раз с temp=0.7. Собери ответы. Выбери самый частый.

Итого:
  • Self-Consistency = обычный CoT промпт + множественные вызовы + голосование
  • Промпт НЕ меняется! Меняется только количество вызовов и агрегация
  • Temperature > 0 нужна для разнообразия ответов
  • Финальный ответ = самый популярный через простой подсчёт
Исследование

Техника описана в статье "Self-Consistency Improves Chain of Thought Reasoning in Language Models" (Wang et al., 2023). Показано улучшение на 1-12% на бенчмарках арифметики и здравого смысла по сравнению с единственным путём CoT.

Частые вопросы

Что такое Self-Consistency в промптинге?

Self-Consistency — это техника, при которой ты генерируешь несколько путей рассуждения (обычно 5–40) для одного и того же запроса при повышенной температуре, а затем выбираешь самый частый итоговый ответ голосованием большинства. Она развивает Chain-of-Thought: вместо одной цепочки рассуждений модель пробует много, и побеждает тот ответ, на котором они сходятся.

Чем Self-Consistency отличается от Chain-of-Thought?

Chain-of-Thought просит модель дать одно пошаговое решение. Self-Consistency идёт дальше: она сэмплирует много таких цепочек при ненулевой температуре и оставляет ответ, который встречается чаще всего. То есть Self-Consistency — это надстройка над CoT, повышающая надёжность за счёт голосования, но и стоящая в N раз дороже по токенам.

Сколько выборок нужно для Self-Consistency?

На практике достаточно 5–10 выборок: они дают основной прирост точности. Можно генерировать до 40, но после ~10 отдача быстро падает, а расход токенов и задержка растут линейно. Температуру обычно ставят в диапазоне 0.5–1.0, чтобы каждый прогон шёл немного другим путём рассуждения.

Когда Self-Consistency не работает?

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

Попробуй сам

Интерактивное демо этой техники

Сравнение техник
Демо режим
Предзаписанные ответы
ЗадачаСреднийМатематика

В корзине 23 яблока. Если раздать их поровну 5 детям, сколько яблок останется?

Без техники
Без техники
Промпт
В корзине 23 яблока. Если раздать их поровну 5 детям, сколько яблок останется?
Ответ

23 ÷ 5 = 4.6, значит останется 3 яблока.

Токены:32/18
Время:320ms
Качество:
С Self-Consistency
С техникой
Промпт
Реши задачу тремя разными способами и выбери наиболее частый ответ. Задача: В корзине 23 яблока. Если раздать их поровну 5 детям, сколько яблок останется? Способ 1: Способ 2: Способ 3: Итоговый ответ (самый частый):
Ответ

Способ 1 (деление с остатком): 23 ÷ 5 = 4 остаток 3 Останется: 3 яблока

Способ 2 (вычитание): 5×4 = 20 яблок раздали 23 - 20 = 3 яблока осталось

Способ 3 (проверка): 5×4 + 3 = 23 ✓ Останется: 3 яблока

Итоговый ответ: 3 яблока (все три способа дали одинаковый результат)

🔢Способ 1: 23 ÷ 5 = 4 ост. 3
🔢Способ 2: 5×4=20, 23-20=3
🔍Способ 3: проверка 5×4+3=23 ✓
Все способы → 3. Ответ надёжен.
Токены:75/145
Время:780ms
Качество:
Почему это работает

Self-Consistency проверяет ответ несколькими способами. Когда все методы дают один результат, мы уверены в его правильности.

1 / 4

Квиз по уроку

1 из 3

1.Как Self-Consistency улучшает стандартный Chain-of-Thought?

Практика

Создайте бесплатный аккаунт для решения челленджей

3 челленджей с AI-проверкой для этого урока

Связанные уроки:Chain Of ThoughtChain Of Verification

Этот урок — часть структурированного курса по LLM.

Мой путь обучения