Self-consistency и границы CoT

Если один прогон ненадёжен, запустите несколько и возьмите ответ большинством голосов; но и сам CoT — не всегда добро.

Self-consistency — приём, при котором задачу решают несколько раз (с ненулевой температурой) и выбирают ответ, встретившийся чаще всего.

Идея self-consistency

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

from collections import Counter

# Имитация: 5 независимых прогонов модели дали такие ответы
runs = ["6", "6", "7", "6", "5"]

votes = Counter(runs)
best, n = votes.most_common(1)[0]
print("Голоса:", dict(votes))
print(f"Итоговый ответ по большинству: {best} ({n} из {len(runs)})")

Вывод:

Голоса: {'6': 3, '7': 1, '5': 1}
Итоговый ответ по большинству: 6 (3 из 5)

В реальности «прогоны» — это несколько вызовов модели с температурой выше нуля. Self-consistency повышает надёжность ценой стоимости (несколько запросов вместо одного), поэтому применяют там, где правильность критична.

Когда CoT не нужен

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

  • Прямые фактические вопросы («столица Франции»).
  • Простая классификация, где ответ очевиден.
  • Извлечение по шаблону.
  • Когда нужен только короткий ответ, а рассуждение мешает парсингу.

Когда CoT даже вредит

Иногда длинное рассуждение уводит модель от верного интуитивного ответа или создаёт «убедительное» обоснование неверного вывода. Также на задачах, где важен только финальный формат (например, строгий JSON), лишнее рассуждение перед ним мешает и его приходится отдельно вычищать. Если CoT не улучшает метрику на ваших данных — уберите его.

Практическое правило

ЗадачаCoT?
Многошаговая логика/арифметикаДа, помогает
Критичная правильностьДа + self-consistency
Простой факт/классификацияНет, избыточно
Строгий машинный форматОсторожно, может мешать

Итог

  • Self-consistency = несколько прогонов + ответ большинства; надёжнее, но дороже.
  • CoT не бесплатен: длиннее, дороже, медленнее.
  • На простых задачах рассуждение избыточно, иногда вредно.
  • Решайте по данным: если CoT не улучшает метрику — уберите.
Проверьте себя
1. Как работает self-consistency?
AОдин прогон с температурой 0
BНесколько прогонов задачи и выбор ответа, встретившегося чаще всего
CДообучение модели на ответах
DУдаление рассуждения из ответа
2. Главный недостаток self-consistency?
AСнижает точность
BПовышает стоимость и задержку из-за нескольких запросов
CНе работает с CoT
DТребует дообучения
3. В каком случае chain-of-thought скорее избыточен или вреден?
AМногошаговая арифметика
BПрямой фактический вопрос или строгий машинный формат вывода
CЛогическая головоломка
DПланирование действий
Поддержать проект