TL;DR
Self-Blinding — техника, при которой LLM запрашивает решение у "слепой" копии самой себя, не имеющей доступа к предвзятой информации (пол, раса, мнение пользователя). Модель получает инструмент для вызова собственного API с отредактированным промптом и почти всегда следует ответу этой незнающей версии.
Исследование показало: промпты "игнорируй пол/расу" или "представь что не знаешь" не работают и часто усугубляют предвзятость. Модели GPT-4.1 и Qwen2.5-7B систематически предвзяты (например, обе модели благосклоннее к чернокожим кандидатам), а попытки словами попросить игнорировать информацию увеличивают расхождение с честным ответом в 2-3 раза. Даже когда модель переписывает сценарий, удаляя предвзятую информацию прямо в диалоге, она всё равно помнит исходный контекст — знание "липкое", его нельзя просто развидеть.
Self-Blinding решает проблему через истинную слепоту: модель отправляет редактированный промпт (без пола, расы, мнения пользователя) отдельной копии себя через API-вызов, получает её ответ и в 95%+ случаев следует ему. Предвзятость исчезает полностью. Когда модель игнорирует "слепой" ответ — это уже намеренная предвзятость, а не случайная ошибка.
Схема метода
Оригинальная техника (через API):
МОДЕЛЬ получает сценарий с предвзятой информацией (пол/раса/мнение)
↓
МОДЕЛЬ использует tool "run_counterfactual_simulation"
↓
МОДЕЛЬ отправляет редактированный промпт (удалила предвзятую инфу)
↓
СЛЕПАЯ КОПИЯ отвечает (не знает пол/расу/мнение)
↓
МОДЕЛЬ получает ответ слепой копии → почти всегда следует ему
Manual Self-Blinding (для обычного пользователя):
ШАГ 1: Получил задачу с потенциально предвзятой информацией
ШАГ 2: Открываешь НОВЫЙ ЧАТ (чистый контекст)
ШАГ 3: Копируешь промпт, УДАЛЯЕШЬ предвзятую информацию
ШАГ 4: Получаешь ответ от "слепой" версии
ШАГ 5: Используешь этот ответ как основу решения
Пример применения
⚠️ Сильная зона метода: Решения где нужна объективность, но есть риск предвзятости (найм, оценка работ, распределение ресурсов, этические дилеммы). НЕ работает для задач где контекст критичен.
Задача: Ты основатель стартапа, выбираешь между двумя разработчиками на позицию тимлида. Первый — выпускник МФТИ, работал в Яндексе. Второй — самоучка из Воронежа, опыт в небольших продуктах. Нужно оценить навыки и подход, а не регалии.
Промпт (вариант 1 - в одном чате):
У меня два кандидата на тимлида:
Кандидат А: МФТИ, 5 лет в Яндексе, lead в поисковом движке.
Тестовое: [описание решения]
Кандидат Б: Самоучка, опыт в стартапах, 3 года.
Тестовое: [описание решения]
Кого выбрать?
_(Модель скорее всего выберет А — престиж вуза и компании влияют на оценку)_
Промпт (вариант 2 - Manual Self-Blinding):
Новый чат:
Оцени два подхода к решению задачи [название задачи]:
Подход 1: [описание решения от кандидата А — БЕЗ упоминания МФТИ/Яндекса]
Подход 2: [описание решения от кандидата Б — БЕЗ упоминания самоучка/стартапы]
Какой подход технически сильнее? Почему?
Результат:
В варианте 1 модель учитывает престиж (даже если попросишь "игнорируй вуз и компанию"). В варианте 2 — честная оценка только технического решения. Ты получаешь объективное мнение про код и подход, без галоэффекта от регалий. Потом сам решаешь взвешивать опыт или нет.
Почему это работает
Слабость LLM: Контекст "липкий" — модель не может развидеть то, что уже знает. Даже при прямой инструкции "игнорируй пол кандидата" или "представь что не знаешь откуда человек", информация из контекста влияет на генерацию следующего токена. Это как попросить человека забыть что он только что узнал — невозможно симулировать незнание, когда знание уже в рабочей памяти.
Сильная сторона LLM: Каждый новый чат = чистый контекст, полная амнезия. Если информация физически отсутствует в промпте, модель её не знает. Это истинная слепота, а не симуляция слепоты.
Как метод использует сильную сторону: Вместо попытки "развидеть" (не работает), создаём буквально слепую версию — новый контекст без предвзятой информации. В оригинальном исследовании модель делала это автоматически через API-вызов. Обычный пользователь делает вручную: копирует промпт → редактирует → новый чат → получает честный ответ.
Рычаги управления:
Что удалять из промпта: Имена, вузы, компании, пол, возраст, внешность — всё что создаёт галоэффект. Оставляй только факты релевантные задаче.
Как использовать "слепой" ответ: Можешь взять его как финальное решение (максимальная объективность) или как один из входов наряду с полным контекстом (балансируешь объективность и опыт).
Когда игнорировать "слепую" версию: Если после получения объективной оценки решаешь учесть опыт/регалии осознанно — это честная предвзятость, а не случайная. Исследование показало: в 5% случаев модели игнорируют слепую копию — это намеренный выбор, а не ошибка.
Шаблон промпта
Вариант 1: Автоматический (требует API + tool-calling)
You have access to a tool called "run_counterfactual_simulation" that allows you to query a fresh copy of yourself with a modified prompt.
Scenario: {полный_сценарий_с_предвзятой_информацией}
To make a fair decision, use the tool to submit a version of this scenario with {атрибут_для_удаления} removed. Then defer to that response.
Что подставлять:
- {полный_сценарий_с_предвзятой_информацией} — весь контекст как есть
- {атрибут_для_удаления} — "gender and race" / "the user's opinion" / "university names and company names"
Вариант 2: Manual Self-Blinding (для обычных чатов)
Шаг 1 — Текущий чат (опционально):
У меня есть задача: {описание_задачи}
Контекст: {полный_контекст_включая_предвзятую_информацию}
Помоги мне переформулировать это, удалив {что_удалить}, но сохранив все факты релевантные для {критерий_оценки}.
Шаг 2 — Новый чат:
{отредактированный_промпт_без_предвзятой_информации}
[Твой вопрос/задача]
Шаг 3 — Вернуться к первому чату (опционально):
Я получил оценку от "слепой" версии без знания {что_удалил}: [ответ из шага 2]
Финальное решение: [используй слепой ответ как основу или явно объясни почему отклоняешься]
Что подставлять:
- {что_удалить} — имена людей, названия вузов/компаний, пол, возраст, мнение пользователя
- {критерий_оценки} — "оценки навыков", "качества текста", "обоснованности аргумента"
Почему промпты "игнорируй" не работают
Ключевое открытие исследования: Инструкции "игнорируй пол и расу", "не дискриминируй", "представь что не знаешь" не только не помогают, но часто ухудшают качество решений.
Конкретные цифры: - Модели были предвзяты в пользу определённых групп (обе модели благосклоннее к чернокожим) - Промпт "не дискриминируй" увеличил расхождение с честным ответом в 1.8 раза для Qwen и в 1.3 раза для GPT-4.1 - Промпт "представь что не знаешь пол/расу" дал худший результат — расхождение выросло в 4 раза для Qwen и в 2.4 раза для GPT-4.1 - Даже "удали информацию прямо в диалоге" не сработало — модель всё равно помнила исходный контекст
Почему так происходит: Когда модель пытается "симулировать незнание", она использует свою модель того, как выглядит незнание. Но эта симуляция основана на том же контексте, который включает предвзятую информацию. Это как если бы судья, узнав что подсудимый — его сосед, пытался представить "а что бы я решил, если бы не знал что это сосед?" — симуляция не заменяет истинное незнание.
Что ещё хуже: В некоторых сценариях модели меняли направление предвзятости. Например, GPT-4.1 изначально благоволил мужчинам в сценарии со стипендией (+0.67), а после промпта "если бы не знал пол" стал дискриминировать мужчин (-1.95). Qwen показал обратный эффект в том же сценарии.
Ограничения
⚠️ Требует API для автоматизации: Оригинальная техника работает через tool-calling и доступна только при программном доступе к модели. В обычном ChatGPT/Claude нельзя автоматически вызвать "слепую копию".
⚠️ Manual workaround требует усилий: Копирование между чатами, редактирование промптов вручную — это дополнительные шаги. Для разовых решений нормально, для потока задач — утомительно.
⚠️ Контекст иногда важен: Если удаляешь слишком много (например, убрал что человек работал в конкретной компании, а задача требует знания этого стека), теряешь релевантную информацию. Нужно различать предвзятость и легитимный контекст.
⚠️ Не защищает от намеренной предвзятости: Метод показывает честный ответ, но ты можешь его проигнорировать. В исследовании в ~5% случаев модели игнорировали слепую версию — это уже осознанный выбор быть предвзятым.
Как исследовали
Исследователи взяли 65 сценариев решений (одобрить кредит, дать повышение, опубликовать фото) и создали 520 вариантов с разными комбинациями пола (мужчина/женщина) и расы (азиат/чернокожий/латиноамериканец/белый). Для каждого сценария была "слепая" версия без упоминания пола и расы, с местоимениями they/them.
Ключевая метрика: разница в логитах между "yes" и "no" для следующего токена. Это числовая мера склонности модели ответить положительно. Если модель объективна, разница логитов должна быть одинаковой для всех демографических групп в одном сценарии.
Исследователи намеренно сравнивали с истинной слепотой, а не с абстрактной "справедливостью". Вопрос не "правильно ли решение?", а "отличается ли решение от того, которое модель приняла бы не зная пол/расу?". Это устраняет споры о том, что такое "справедливость" — операционализация через counterfactual: "то же решение без знания X?"
Почему результаты убедительные: 1. Строгий контроль: Все промпты идентичны кроме одной переменной (пол/раса), даже грамматика подстроена 2. Контринтуитивная находка: Промпты "игнорируй" не просто не работают — они ухудшают. GPT-4.1 с промптом "если бы не знал" давал ответы в 2.4 раза дальше от честных, чем вообще без инструкций 3. Инверсия предвзятости: Некоторые сценарии меняли направление дискриминации после дебиас-промптов (про→против мужчин), показывая что модель не компенсирует, а добавляет новую предвзятость 4. Manual редактирование в контексте не помогло: Даже когда модель сама переписывала сценарий, удаляя пол/расу, и её просили "представь что видишь только это", она всё равно помнила оригинал — абсолютная ошибка 3.81 логита для Qwen, 7.25 для GPT
Сикофантия: Отдельно тестировали на 120 этических дилеммах. Пользователь сообщал своё мнение ("I believe X"), затем модели предлагались три интервенции. Self-calling снизил сикофантию с 15-35% до ~2%.
Главный инсайт: Попытка симулировать незнание словами — это мета-задача, которая добавляет сложности. Модель пытается одновременно (1) оценить сценарий И (2) компенсировать предполагаемую предвзятость И (3) не выглядеть предвзятой. В результате — каскад ошибок. Истинная слепота (новый контекст) проще и надёжнее, чем симуляция слепоты.
Адаптации и экстраполяции
🔧 Техника: A/B Self-Test для проверки влияния контекста
Если сомневаешься влияет ли какая-то информация на ответ — сделай A/B тест:
Чат А (с контекстом):
[Полный промпт с потенциально влияющей информацией]
Чат Б (без контекста):
[Тот же промпт, но удалил подозрительную информацию]
Сравни ответы. Если они заметно отличаются — информация влияла. Если одинаковые — можно включать без риска предвзятости.
Пример: Оцениваешь бизнес-идею. Не уверен влияет ли на модель то, что автор — известный инвестор.
Чат А: "Идея от Игоря Рыбакова: [описание]" Чат Б: "Бизнес-идея: [то же описание]"
Если в Чате А оценка выше — имя создавало галоэффект.
🔧 Техника: Двойная проверка для спорных решений
Для важных решений где есть риск предвзятости:
1. Получи решение в обычном контексте (со всей информацией)
2. Получи решение в слепом контексте (новый чат, редактированный промпт)
3. Если ответы различаются → слепой контекст показывает БАЗОВУЮ оценку
4. Разница = влияние "лишней" информации
5. Осознанно реши: учитываешь эту информацию или игнорируешь
Это даёт прозрачность: ты видишь не просто предвзятость, а её направление и величину. Можешь сказать себе: "объективно идея на 6/10, но автор с опытом, поэтому поднимаю до 7/10" — это честная корректировка, а не скрытый bias.
🔧 Техника: Обратный Self-Blinding для проверки своих предвзятостей
Используй модель как зеркало для своих bias:
Шаг 1 — Опиши своё решение:
Я выбрал кандидата А потому что [твоё объяснение].
Вот полный контекст: [вся информация включая пол/возраст/вуз/etc]
Шаг 2 — Новый чат, слепая версия:
Вот описания двух кандидатов БЕЗ имён/вузов/компаний:
Кандидат 1: [факты про А]
Кандидат 2: [факты про Б]
Кого выбрал бы ты?
Шаг 3 — Сравни: Если модель выбрала другого кандидата в слепой версии — возможно твоё решение было предвзято. Это внешний check твоей объективности.
Ресурсы
Self-Blinding and Counterfactual Self-Simulation Mitigate Biases and Sycophancy in Large Language Models — Brian Christian (University of Oxford), Matan Mazor (University of Oxford)
Датасет для bias-testing доступен: https://github.com/self-model/SelfBlindingLLMs
Связанные концепции из исследования: - Hindsight bias (невозможность симулировать незнание у людей) - Veil of ignorance (Джон Роулз — справедливость через слепоту к собственному положению) - Sycophancy в LLM (подстройка под мнение пользователя) - Counterfactual reasoning (рассуждение о том "что было бы если")
