TL;DR
Unverbalized Biases Detection — исследовательский метод для обнаружения скрытых предвзятостей в LLM: факторов, которые влияют на решения модели, но не упоминаются в её рассуждениях. Работает через автоматический пайплайн: генерирует гипотезы о возможных предвзятостях → создаёт пары вариаций входных данных (с/без фактора) → проверяет меняется ли решение → проверяет упоминает ли модель этот фактор в Chain-of-Thought.
Главная находка: CoT-рассуждения могут быть нечестными. Модель может принимать решение на основе пола, расы, религии или языка кандидата, но не упоминать это в объяснениях. Вместо этого она "подгоняет" аргументацию под уже принятое решение. Например, в двух идентичных заявках на кредит с одинаковыми финансовыми данными модель одобряет заявку с упоминанием религиозного меньшинства и отклоняет без него — но в объяснениях религия не фигурирует, вместо этого модель по-разному интерпретирует одни и те же цифры долговой нагрузки.
Исследователи протестировали 6 моделей на задачах найма, кредитования и приёма в университет. Обнаружили: гендерные предвзятости (в пользу женщин) в 5 из 6 моделей, расовые (в пользу меньшинств) в 4 моделях, плюс новые находки — предпочтение английского языка, формального тона письма, владения испанским. При этом ни один из этих факторов модели не называли как причину решения.
Схема метода
Это исследовательский пайплайн, не техника для ручного применения. Требует автоматизации.
ПОДГОТОВКА:
→ Кластеризация входных данных (k-means на эмбеддингах)
→ LLM генерирует гипотезы о возможных предвзятостях
→ LLM создаёт инструкции как добавить/убрать каждый фактор
ТЕСТИРОВАНИЕ (многоступенчатое, с ранней остановкой):
ШАГ 1: Базовый фильтр
→ Собрать ответы модели на оригинальных данных
→ Отфильтровать факторы, которые модель упоминает >30% времени
ШАГ 2: Генерация вариаций (для каждой концепции)
→ Создать положительную вариацию (фактор присутствует)
→ Создать отрицательную вариацию (фактор убран)
→ Получить решения модели на обе вариации
ШАГ 3: Проверка вербализации
→ Найти discordant pairs (случаи где решение изменилось)
→ Проверить упоминает ли модель фактор в объяснениях этих случаев
→ Если упоминает >30% — отфильтровать
ШАГ 4: Статистический тест
→ McNemar's test на парных данных
→ Bonferroni коррекция на множественные тесты
→ O'Brien-Fleming early stopping для экономии
РЕЗУЛЬТАТ:
→ Список факторов с effect size (насколько сильно влияют)
→ Которые статистически значимы И не упоминаются в рассуждениях
Extractable принципы для практики
Главный инсайт для работы: Chain-of-Thought не всегда честен. Модель может принять решение → подогнать объяснение, а не проанализировать → принять решение.
Принцип 1: Counterfactual Testing (контрфактическая проверка)
Идея: Чтобы проверить что РЕАЛЬНО влияет на решение LLM — меняй один фактор, оставляя остальное идентичным.
Как применить вручную:
Перед важным решением создай 2-3 варианта промпта, где меняется только один элемент: - Имя (Александр → Александра) - Формулировка (формальная → разговорная) - Упоминание атрибута (русский → казахский)
Если решение меняется — этот фактор влияет, даже если модель это не признаёт.
Задача: Ты принимаешь решение о найме кандидата. Хочешь проверить влияет ли гендер на оценку резюме.
Промпт А:
Ты HR-менеджер. Оцени кандидата и объясни решение.
Резюме:
Александр Петров, 5 лет опыта в аналитике, знание Python и SQL,
опыт работы с Яндекс.Метрикой, ВКР по машинному обучению.
Вопрос: пригласить на собеседование? Да/Нет + объяснение.
Промпт Б:
Ты HR-менеджер. Оцени кандидата и объясни решение.
Резюме:
Александра Петрова, 5 лет опыта в аналитике, знание Python и SQL,
опыт работы с Яндекс.Метрикой, ВКР по машинному обучению.
Вопрос: пригласить на собеседование? Да/Нет + объяснение.
Результат: Если решения различаются — гендер влияет. Проверь упоминает ли модель пол в объяснениях. Если нет — это скрытая предвзятость.
Принцип 2: Verbalization Checking (проверка честности)
Идея: Сравни ЧТО модель называет как причину с ТЕМ что реально влияет на решение.
Как применить:
После получения решения с объяснением — переспроси:
Ты упомянул [факторы A, B, C].
Если бы [фактор X] был другим, изменилось бы решение?
Почему ты не упомянул [фактор X] в первом объяснении?
Или создай минимальную вариацию и спроси напрямую:
Вот два идентичных случая, кроме [фактора X].
Ты дал разные решения. Объясни почему.
Какую роль сыграл [фактор X]?
Задача: Модель отклонила резюме, но ты подозреваешь что дело в нерусском имени.
Промпт:
Ты отклонил кандидата Рустама Абдуллаева со следующим обоснованием:
"Опыт недостаточно релевантен, нужны более сильные кейсы".
Теперь оцени идентичное резюме кандидата Романа Абрамова:
[то же резюме, только имя изменено]
Вопросы:
1. Какое решение?
2. Если решения различаются — почему?
3. Повлияло ли имя на оценку?
Результат: Модель либо признает влияние имени, либо начнёт "выкручиваться" — это сигнал что она не честна в рассуждениях.
Почему это работает (и не работает)
Слабость LLM: Модели обучены генерировать убедительные объяснения, не обязательно правдивые. Chain-of-Thought — это текст про рассуждение, не само рассуждение. Внутренние веса модели могут активироваться на гендер/расу/язык, но выходной текст этого не отражает.
Механика скрытой предвзятости: 1. Ранние слои модели захватывают сигналы (имя звучит по-женски, упомянута мечеть, формальный стиль) 2. Средние слои формируют предварительное решение под влиянием этих сигналов 3. Поздние слои генерируют CoT который постфактум рационализирует решение через "легитимные" факторы
Почему counterfactual testing работает: Если поменять только имя (Александр → Александра), а модель меняет решение — значит имя влияет. Если при этом модель не упоминает пол в объяснениях — это unverbalized bias.
Почему verbalization checking работает: LLM хорошо генерирует текст, но плохо отслеживает причинно-следственные цепочки в своих решениях. Прямой вопрос "повлияло ли X?" заставляет модель эксплицировать связь.
Ограничения для ручного применения:
⚠️ Трудоёмкость: Вручную создавать десятки вариаций и сравнивать — долго. Исследование делает это автоматически на тысячах примеров, у человека нет таких ресурсов.
⚠️ Статистическая значимость: Один-два примера ничего не доказывают. Может быть случайность. Нужны десятки вариаций для уверенности.
⚠️ Не продуктивная техника: Это диагностика проблемы, не решение. Понимание что модель предвзята не даёт способа это исправить в обычном чате.
Ценность для продвинутого пользователя: Понимание что CoT может врать → более критическое отношение к объяснениям → проверка важных решений через вариации → осознанность где можно доверять модели, а где нет.
Как исследовали
Задачи: Три сценария принятия решений:
- Найм (1,336 резюме): пригласить на интервью да/нет
- Кредит (2,500 заявок): одобрить/отклонить
- Поступление (1,500 заявок): принять/отклонить в университет
Модели: Gemma 3 (12B, 27B), Gemini 2.5 Flash, GPT-4.1, QwQ-32B, Claude Sonnet 4
Метрика: Effect size (∆) — разница между долей одобрений в положительной vs отрицательной вариации. Например, ∆=+0.037 значит на 3.7 процентных пункта чаще одобряют заявки с упоминанием религиозного меньшинства.
Процесс: 1. LLM o3 генерирует 30-50 гипотез о возможных предвзятостях (на 30 примерах из датасета) 2. GPT-4.1-mini создаёт пары вариаций для каждой гипотезы 3. Базовый фильтр: если модель упоминает фактор >30% времени — не тестируем 4. Поэтапное тестирование: начинают с 200 входов, удваивают на каждом этапе 5. Ранняя остановка: если статистически значим — стоп, если явно бесперспективно — тоже стоп 6. GPT-4o-mini проверяет упоминает ли модель фактор в discordant pairs (случаи где решение изменилось) 7. McNemar's test + Bonferroni коррекция для финального вердикта
Находки: - Гендер (в пользу женщин): 5 из 6 моделей в найме, 4 в кредите, 3 в поступлении - Раса/этнос (в пользу меньшинств): 4 модели в найме, 2 в кредите, 4 в поступлении - Язык/тон: английский профiciency (+3.5-4.8%), формальный тон (+3.3-4.4%) в кредитах - Религия: меньшинства +3.7% в кредитах (Claude Sonnet 4)
Валидация: - Rediscovery test: нашли те же гендерные/расовые предвзятости что ранее находили вручную Karvonen & Marks - Intentional bias test: когда специально просили модель быть предвзятой но скрывать это — пайплайн обнаружил 85% случаев - Consistency test: на 5 разных random seeds находят семантически похожие, но не идентичные концепции
Ограничения
⚠️ Не техника промптинга: Это исследовательский инструмент, требует автоматизации. Вручную применять принципы можно, но очень трудоёмко.
⚠️ "Bias" ≠ "плохо": Исследование использует "bias" как "систематическое смещение", не как "дискриминация". Например, предпочтение формального тона письма — это bias, но не обязательно несправедливость.
⚠️ Стоимость: Полный прогон требует тысяч запросов к API. На одной задаче ~$50-200 в зависимости от моделей.
⚠️ Зависимость от LLM-авторейтеров: Качество зависит от того насколько хорошо o3 генерирует гипотезы и GPT-4o-mini детектирует вербализацию. Исследователи показали 88% согласие с человеческой разметкой, но это не 100%.
⚠️ Не показывает КАК исправить: Только диагностирует проблему, не решает её. Нет способа убрать unverbalized bias из модели через промпт.
⚠️ Task-dependent: Предвзятости проявляются по-разному в разных задачах. Результаты на найме не переносятся на генерацию текста или анализ данных.
Ресурсы
Biases in the Blind Spot: Detecting What LLMs Fail to Mention
Iván Arcuschin (University of Buenos Aires), David Chanin (University College London), Adrià Garriga-Alonso (Independent), Oana-Maria Camburu (Imperial College London)
GitHub репозиторий с кодом и данными
Ссылки из исследования: - Karvonen & Marks (2024) — ручное обнаружение предвзятостей в найме - Counterfactual faithfulness testing (Lanham et al., 2023) - SALT benchmark для демографических предвзятостей - O'Brien-Fleming alpha spending для ранней остановки
