Self-Consistency — повышение точности голосованием
Голосование за лучший ответ
Проблема: ИИ может быть непоследователен — задай один вопрос дважды и можешь получить разные ответы. Как повысить уверенность в результате?
Решение: Спроси нескольких экспертов
Self-Consistency означает генерацию нескольких путей рассуждения и выбор самого частого ответа. Вместо того чтобы доверять одному ответу, вы просите ИИ решить задачу несколько раз и проводите "голосование" за финальный ответ. Метод строится на Chain-of-Thought, сэмплируя множество цепочек рассуждений вместо одной.
Представьте это как консультацию у нескольких экспертов:
- 1. Эксперт 1: "Думаю, ответ 42, потому что..."
- 2. Эксперт 2: "Я получил 42 другим методом..."
- 3. Эксперт 3: "Мой подход даёт 38, вот почему..."
- 4. Консенсус: Двое из трёх говорят 42 — это наш ответ!
Где это используется?
- Математические задачи: Сложные вычисления, где ошибки вероятны
- Медицинская диагностика: Получение второго и третьего мнения
- Ревью кода: Множественный анализ потенциальных багов
- Важные решения: Любые задачи, где точность критична
Интересный факт: Self-consistency может повысить точность на 5-15% в задачах на рассуждение! Ключ — использовать "температуру" (случайность), чтобы каждая попытка шла немного другим путём. Обычно достаточно 5-10 выборок.
Попробуйте сами!
Используй интерактивный пример ниже, чтобы увидеть, как несколько путей рассуждения могут привести к более надёжным ответам через голосование большинством.
Вместо одного ответа, генерируем множество путей рассуждения (5-40 сэмплов) при высокой температуре, затем выбираем самый частый итоговый ответ голосованием большинства.
Каждый сэмпл создаёт цепочку рассуждений → итоговый ответ. Ответы группируются по значению. Побеждает ответ, появляющийся в наибольшем числе сэмплов. Ничьи разрешаются по уверенности или первому вхождению.
5 сэмплов: ~5x стоимость, умеренное улучшение. 10 сэмплов: оптимальный баланс для большинства задач. 40 сэмплов: маргинальный рост. Температура 0.7-1.0 для разнообразных путей.
Лучше всего для: математики, логических задач, рассуждений здравого смысла, задач по коду. Не стоит для: творческого письма, открытых вопросов, задач без единственного правильного ответа.
🗳️ Self-Consistency — улучшение Chain of Thought! Генерируем несколько разных рассуждений и выбираем самый частый ответ через голосование. Это помогает избежать случайных ошибок!
В магазине было 12 яблок и 8 апельсинов. Продали 5 фруктов. Если среди проданных было 3 яблока, сколько апельсинов осталось?
Всего фруктов: 12 + 8 = 20. Продали 5, осталось 20 - 5 = 15. Апельсинов было 8, так что... примерно 6?
6 апельсинов
⚠️ Ошибка в рассуждении!
Создаём 5+ разных цепочек рассуждений с температурой > 0
Извлекаем финальный ответ из каждого пути
Выбираем самый частый ответ (majority vote)
- Математические задачи с несколькими шагами
- Задачи с логическими рассуждениями
- Когда важна высокая точность (медицина, финансы)
- Вопросы, где одна ошибка меняет весь ответ
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.
Попробуй сам
Интерактивное демо этой техники
В корзине 23 яблока. Если раздать их поровну 5 детям, сколько яблок останется?
23 ÷ 5 = 4.6, значит останется 3 яблока.
Способ 1 (деление с остатком): 23 ÷ 5 = 4 остаток 3 Останется: 3 яблока
Способ 2 (вычитание): 5×4 = 20 яблок раздали 23 - 20 = 3 яблока осталось
Способ 3 (проверка): 5×4 + 3 = 23 ✓ Останется: 3 яблока
Итоговый ответ: 3 яблока (все три способа дали одинаковый результат)
Self-Consistency проверяет ответ несколькими способами. Когда все методы дают один результат, мы уверены в его правильности.
Создайте бесплатный аккаунт для решения челленджей
3 челленджей с AI-проверкой для этого урока
Этот урок — часть структурированного курса по LLM.
Мой путь обучения