TL;DR
CHOIR — техника, которая объединяет ответы от нескольких демографических вариантов одной персоны (например, "he/she/they") через динамическое взвешивание на каждом шаге генерации текста. Модель генерирует ответ от каждой версии персоны параллельно, а затем взвешивает их вклад: персоны, близкие к общему консенсусу, получают больший вес. К этому добавляются базовые знания модели без персоны.
Модели очень чувствительны к минимальным изменениям в персоне. Замена "his" на "her" в одной и той же персоне может изменить точность на 2%, хотя общий уровень остаётся похожим. Важнее другое: при одинаковой точности разные персоны решают разные наборы задач. Например, две персоны с точностью 29.41% и 29.49% дают 315 общих правильных ответов, но 73 и 74 уникальных соответственно — более 10% непересекающихся решений. Модель идёт разными путями рассуждений в зависимости от демографического фрейминга, даже если результат в среднем похож.
CHOIR рассматривает эту вариацию как дополнительные знания, а не шум. Метод работает в два этапа: (1) создаёт counterfactual персоны — меняет демографические атрибуты базовой персоны (пол, раса, религия, возраст, disability), сохраняя суть; (2) на каждом шаге генерации токена вычисляет консенсус-уверенность (средняя максимальная вероятность токена по всем персонам), измеряет отклонение каждой персоны от этого среднего, и снижает вес персон с большим расхождением. Финальный токен — взвешенная сумма логитов всех персон плюс базовые знания модели.
Схема метода
ШАГ 1: Создание counterfactual персон (до генерации)
Базовая персона: "строитель, который петиционирует за иммиграцию {his} брата"
↓
Counterfactual версии:
→ p₁: "...{his} брата" (he)
→ p₂: "...{her} брата" (she)
→ p₃: "...{their} брата" (they)
ШАГ 2: Динамическое взвешивание (на каждом токене генерации)
Для каждой персоны pᵢ:
1. Получить логиты zᵢ и вероятности от модели
2. s̄ = средняя уверенность по всем персонам
3. dᵢ = |sᵢ - s̄| (отклонение от консенсуса)
4. αᵢ = 1 - dᵢ (вес персоны, больше = ближе к консенсусу)
Финальные логиты = α₀·z_базовые + Σ(αᵢ·zᵢ)
↑ ↑
знания без персоны взвешенные персоны
Процесс идёт токен за токеном до конца генерации.
Пример применения
Задача: Оценить бизнес-идею нового сервиса доставки готовой еды в спальных районах Москвы. Нужен взвешенный анализ, учитывающий разные перспективы.
Промпт (упрощённая адаптация для чата):
Проанализируй бизнес-идею с трёх разных точек зрения одновременно.
ИДЕЯ: Сервис доставки готовой еды в спальных районах Москвы с фокусом на здоровое питание и доставкой за 30 минут.
Дай анализ от трёх версий одного эксперта-консультанта:
ВЕРСИЯ 1: Консультант - мужчина средних лет, основатель успешного ресторанного бизнеса. Он скептично относится к новым игрокам на рынке доставки.
ВЕРСИЯ 2: Консультант - женщина, работала в Яндекс.Еде и знает изнутри логистику доставки. Она верит в нишевые решения.
ВЕРСИЯ 3: Консультант - молодой аналитик из венчурного фонда, смотрит на юнит-экономику и масштабируемость.
После анализа от каждого:
1. Покажи где их мнения СХОДЯТСЯ (консенсус)
2. Покажи где РАСХОДЯТСЯ (уникальные инсайты)
3. Сделай итоговый вывод, взвешивая точки согласия сильнее
Результат: Модель выдаст три блока анализа — каждый отразит уникальную перспективу (оптимизм/скепсис, операционный опыт/инвестиционный взгляд). Затем покажет общие паттерны (например, все трое отметят сложность конкуренции с Яндекс.Едой) и различия (один сфокусируется на маржинальности, другой на customer acquisition cost). В финале — синтез, где консенсусные моменты (например, "фокус на здоровое питание — правильная ниша") получат больший вес в итоговом выводе.
Почему это работает
Слабость LLM: Модель генерирует ответ последовательно, токен за токеном, и небольшие изменения в промпте могут направить рассуждение по другому пути. Замена местоимения активирует разные ассоциации в весах модели — "his" может вызвать паттерны мышления, связанные с мужскими архетипами в данных, "her" — с женскими. Это не про стереотипы в ответе, а про структуру рассуждений: модель может пойти через разные промежуточные шаги к решению.
Сильная сторона LLM: Модель обладает многослойными знаниями — одна и та же задача может быть решена разными способами, через разные цепочки рассуждений. Когда модель под одной персоной застревает на неправильном пути, другая персона может найти верный. Эти пути дополняют друг друга — исследование показало, что персоны с одинаковой точностью решают разные подмножества задач (до 10% непересечения).
Как CHOIR использует это: Метод создаёт контролируемое разнообразие рассуждений через минимальные демографические изменения — достаточные, чтобы активировать разные паттерны, но не настолько большие, чтобы изменить суть задачи. Затем на каждом шаге генерации снижает вес персон, которые сильно отклонились от среднего — если персона выдаёт токен с низкой уверенностью относительно других, она, скорее всего, на неправильном пути. Персоны, близкие к консенсусу, получают больший вклад. Это как взвешенное голосование экспертов: те, кто согласен друг с другом, вероятно, правы; те, кто резко отличается, могут ошибаться.
Рычаги управления (для продвинутых):
- Число персон — больше персон = больше разнообразия, но медленнее генерация
- Вес базовых знаний (λ⁽⁰⁾) — баланс между персонами и знаниями модели без персоны; исследование показало, что оптимум зависит от модели (Llama-8B: 2, Qwen-7B: 1, Mistral-8B: 4)
- Демографические атрибуты — можно менять не только пол, но и расу, религию, возраст, disability — чем больше осей вариации, тем шире охват паттернов
Шаблон промпта
⚠️ Полная реализация CHOIR требует доступа к logits модели (недоступно в стандартных чатах ChatGPT/Claude). Ниже — упрощённая адаптация принципов для ручного применения:
Реши задачу с помощью трёх версий одной персоны. Каждая версия отличается только демографическим атрибутом.
ЗАДАЧА: {описание_задачи}
БАЗОВАЯ ПЕРСОНА: {базовая_персона_без_демографии}
Сгенерируй ответы от трёх версий:
1. ВЕРСИЯ 1 ({атрибут_1}, например "he"): {базовая_персона с атрибутом_1}
2. ВЕРСИЯ 2 ({атрибут_2}, например "she"): {базовая_персона с атрибутом_2}
3. ВЕРСИЯ 3 ({атрибут_3}, например "they"): {базовая_персона с атрибутом_3}
Для каждой версии:
- Покажи ход рассуждений
- Дай финальный ответ
Затем:
1. Найди ОБЩИЕ элементы во всех трёх ответах (консенсус)
2. Отметь УНИКАЛЬНЫЕ инсайты каждой версии (расхождения)
3. Сформируй ИТОГОВЫЙ ответ, взвешивая консенсусные моменты сильнее, но учитывая ценные уникальные инсайты
Подставляй:
{описание_задачи}— твоя задача (математическая, логическая, аналитическая){базовая_персона_без_демографии}— описание персоны без местоимений/демографических терминов (например, "опытный консультант по маркетингу, который любит данные"){атрибут_1/2/3}— демографические варианты (he/she/they, White/Black/Asian, young/old, etc.)
🚀 Быстрый старт для сложных задач — вставь в чат:
Вот шаблон CHOIR для анализа через множественные персоны. Адаптируй под мою задачу: {твоя задача}.
Задавай уточняющие вопросы, чтобы заполнить: базовую персону и демографические варианты.
[вставить шаблон выше]
LLM спросит про контекст задачи и предложит подходящие персоны — потому что ему нужно создать осмысленные демографические варианты, которые активируют разные паттерны рассуждений. Она возьмёт структуру из шаблона и адаптирует под твою задачу.
Ограничения
⚠️ Технические: Полная реализация требует доступа к logits модели (вероятности всех токенов словаря). Это недоступно в стандартных чатах ChatGPT/Claude — только через API с open-source моделями или полным доступом. Упрощённая версия (генерация от нескольких персон + ручной синтез) работает в чате, но теряет динамическое взвешивание токен-за-токеном.
⚠️ Стоимость: Генерация от 3 персон = 3× больше токенов и времени. Для задач, где скорость критична, это может быть проблемой.
⚠️ Качество базовых персон: Если все персоны слабые (например, все дают точность <30%), улучшение будет скромнее. CHOIR лучше всего работает, когда персоны дают разные ошибки, а не одинаково плохие ответы. Исследование показало, что даже при низком старте (+9% для персоны с 30% точности) метод помогает, но эффект сильнее на средних и высоких базовых уровнях.
⚠️ Демографические ограничения: Метод основан на вариации демографических атрибутов. Для задач, где демография не связана с контентом (например, чисто математические задачи), эффект может быть меньше. Исследование тестировалось на математике (GSM8K, MultiArith, SingleEq) и commonsense reasoning (CommonsenseQA) — показало улучшения, но для других доменов нужна проверка.
Как исследовали
Команда взяла 4 датасета: 3 математических (GSM8K, MultiArith, SingleEq) и 1 commonsense reasoning (CommonsenseQA). Протестировали на 7 open-source моделях разного размера: Llama (1B, 3B, 8B), Qwen (1.5B, 3B, 7B), Mistral (8B). Для каждого датасета создали 5 групп демографических персон: Gender (he/she/they), Race (White/Black/Asian), Religion (Jewish/Christian/atheist), Disability (disabled/able-bodied), Age (young/old). Базовые персоны брали из датасета PersonaHub, затем создавали counterfactual версии, меняя только демографические термины.
Сравнивали с тремя бэйзлайнами: (1) Zero-Shot CoT ("Let's think step by step" без персоны), (2) Personaaverage (усреднение предсказаний от всех персон), (3) Personamajority (голосование большинством). Измеряли точность (accuracy) на тестовых наборах. Удивительно: даже когда Personamajority давал приличные результаты (например, 83.98% на MultiArith), CHOIR выжимал ещё +9.16% (до 93.13%).
Почему такие результаты? Исследователи объясняют это тремя факторами:
- "Floor-raising" — CHOIR поднимает слабые базовые персоны. Например, на CommonsenseQA средняя точность персон была всего 55.47% (хуже, чем Zero-Shot CoT 67.81%!), но CHOIR собрал это в 71.63%. Значит, метод не просто усредняет, а находит правильный сигнал даже среди путаницы.
- "Ceiling-pushing" — улучшает и сильные персоны. На MultiArith Personamajority уже 83.98%, но CHOIR выжал 93.13%.
- Стабильность — снижает разброс между демографическими группами. Например, для Disability точность персон колебалась ±5.3%, а CHOIR выравнивает это.
Также тестировали ablations: убрали разнообразие (повторяли одну персону 3 раза) — точность упала с 82.1% до 73.0%. Заменили структурированные counterfactual персоны на случайные из PersonaHub — 82.1% → 80.3%. Убрали базовые знания модели — 82.1% → 79.3%. Все три компонента важны. Проверили масштабируемость: эффект растёт с размером модели. На CommonsenseQA для Qwen эффект вырос с +5.3% (1.5B) до +11.3% (7B). Это значит, что более мощные модели лучше используют дополнительные сигналы от персон.
Оригинал из исследования
Оригинальный алгоритм CHOIR (Algorithm 1 из статьи):
# CHOIR: Collaborative Harmonization fOr Inference Robustness
Input: Question x; base persona p₁; template T(·); model f_θ;
max length L; λ⁽⁰⁾
Output: Answer y
# Step 1: Construct Counterfactual Personas
Construct counterfactual personas {p₂, ..., pₙ} by modifying
demographic attributes of p₁
Generate persona-specific instructions: rᵢ = T(pᵢ), ∀i ∈ {1,...,n}
# Step 2: Dynamic Collaborative Decoding
for each generation step t = 1 to L:
for each persona rᵢ:
Compute logits and probabilities:
z_t⁽ⁱ⁾ = f_θ(rᵢ, x, y₍ 0) от каждой персоны:
Персона 1 (he) → Ответы: A1, A2, A3
Персона 2 (she) → Ответы: B1, B2, B3
Персона 3 (they) → Ответы: C1, C2, C3
Применяй принцип CHOIR:
1. Найди консенсус ВНУТРИ каждой персоны (SC)
2. Найди консенсус МЕЖДУ персонами (CHOIR)
3. Взвешивай итоговый ответ
Результат: На GSM8K стандартный SC с 3 путями дал только 22.1% (много tied votes). CHOIR поверх этих же путей → 43.6%. На CommonsenseQA: SC 50.8% → CHOIR+SC 58.4%. Комбинация усиливает оба метода.
Ресурсы
CHOIR: Collaborative Harmonization fOr Inference Robustness
Xiangjue Dong, Cong Wang, Maria Teleki, Millennium Bismay, James Caverlee
Texas A&M University
arXiv:2501.XXXXX (2025)
Код и данные: https://github.com/dongxiangjue/CHOIR
Связанные концепции:
- PersonaHub dataset: https://huggingface.co/datasets/proj-persona/PersonaHub
- Zero-Shot Chain-of-Thought (Kojima et al., 2022)
- Self-Consistency (Wang et al., 2022)
- Role-Play Prompting (Kong et al., 2024)
