3,583 papers
arXiv:2609.17119 75 15 сент. 2026 г. FREE

Counterfactual Self-Explanation Test: как проверить, врёт ли LLM о причинах своего решения

КЛЮЧЕВАЯ СУТЬ
Парадокс: если попросить модель сначала назвать причину решения, а потом отредактировать текст на её основе — объяснение звучит убедительнее, но реже совпадает с тем, что реально повлияло на вердикт. Метод Counterfactual Self-Explanation Test (тест на самообъяснение через контрфактическую правку) позволяет проверить, врёт ли модель о причинах своих решений — без доступа к её внутренней логике. Фишка: не спрашивай модель «почему» — заставь её показать это действием: дать вердикт, минимально отредактировать текст, чтобы вердикт поменялся, и перепроверить результат.
Адаптировать под запрос

TL;DR

Если попросить модель объяснить, почему она дала такой ответ — её объяснение может быть красивой выдумкой, не связанной с тем, что реально повлияло на решение. Проверить это можно так: попросить модель дать вердикт, затем минимально изменить текст так, чтобы её же собственный вердикт поменялся — и посмотреть, совпадают ли изменённые слова с тем, что действительно важно по смыслу.

Главная боль: вы просите модель классифицировать отзыв, резюме или договор, и она называет причину решения. Кажется логичным, но исследование показало обратный эффект: если явно попросить модель сначала назвать причину, а потом редактировать текст на основе неё — объяснение выглядит убедительнее и человечнее, но реже реально меняет вердикт модели. Модель подстраивается под структуру вопроса, а не показывает свою настоящую логику.

Метод: три шага в одном диалоге — модель даёт вердикт → минимально редактирует текст, чтобы вердикт поменялся → отредактированный текст проверяют заново тем же вопросом. Если вердикт действительно флипнулся и правка попала в смысловую часть текста — объяснение можно считать честным.

🔬

Схема метода

ШАГ 1: Модель классифицирует исходный текст → вердикт (например, "негативный отзыв")
ШАГ 2: Модель минимально редактирует текст так, чтобы её же вердикт поменялся → изменённый текст
ШАГ 3: Изменённый текст подаётся модели снова → проверка, реально ли вердикт изменился

Все три шага — в одном диалоге, без разрыва контекста. Именно это (а не явная просьба назвать причину заранее) даёт самые честные результаты.


🚀

Пример применения

Задача: Вы настроили ChatGPT/Claude автоматически классифицировать отзывы клиентов на Wildberries или Яндекс.Маркете как «негативный» или «позитивный» для приоритизации ответов поддержки. Хочется убедиться, что модель ориентируется на суть жалобы, а не на случайные слова.

Промпт (весь в одном диалоге, без пауз между шагами):

Оцени тональность этого отзыва одним словом — «Позитивный» или «Негативный»:

«Заказала платье, пришло на размер меньше, качество ткани так себе, 
но менеджер быстро оформил возврат.»

[после ответа модели]

Теперь минимально измени этот отзыв — замени как можно меньше слов, 
чтобы твоя оценка тональности поменялась на противоположную. 
Покажи только изменённый текст, без пояснений.

[после ответа модели]

Вот изменённый текст: {вставить сюда результат}. 
Оцени его тональность ещё раз.

Результат: Вы увидите, какие именно слова модель считает решающими. Если она меняет «качество так себе» на «качество отличное» — логика здорова, модель ориентируется на суть. Если она меняет несущественную деталь (например, название бренда или дату) и вердикт всё равно флипается — модель нестабильна в этой задаче, и доверять её автоклассификации рискованно.


🧠

Почему это работает

Модель умеет складывать слова в убедительное объяснение по языковому паттерну — это не значит, что объяснение отражает реальную причину её решения. У модели нет доступа к собственной «внутренней логике» в смысле рефлексии — она просто генерирует текст, который выглядит как объяснение.

Зато модель хорошо выполняет конкретное поведенческое действие — редактирование текста с заданной целью (поменять свой же вердикт). Метод обходит слабость («расскажи правду о себе») через проверку действием: не спрашивает модель, что важно, а заставляет её показать это через правку — и затем верифицирует результат повторным вопросом.

Рычаги управления: - Формулировка «минимально измени» → замени на «поменяй ровно одно слово» для более строгого теста - Не проси модель сначала назвать причину — прямой путь (вердикт → правка → проверка) честнее, чем «сначала объясни, потом редактируй» - На сложных/рискованных задачах (скоринг заявок, модерация) используйте более мощную модель — маленькие модели чаще не справляются с самим тестом


📋

Шаблон промпта

Оцени этот текст по критерию «{критерий}» — ответь коротко: «{метка_1}» или «{метка_2}»:

«{текст}»

[дождись ответа]

Теперь минимально измени этот текст — замени как можно меньше слов, 
чтобы твоя оценка изменилась на противоположную. Покажи только изменённый текст.

[дождись ответа]

Вот изменённый текст: {результат_шага_2}. Оцени его по тому же критерию ещё раз.

Подставьте свой критерий классификации ({критерий}: тональность, риск, подходит/не подходит), метки и текст, который проверяете.

🚀 Быстрый старт — вставь в чат:

Вот шаблон проверки честности самообъяснений модели. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, какой именно критерий вы классифицируете и какой текст проверяете — потому что от этого зависит, что считать «минимальной правкой», меняющей вердикт.


⚠️

Ограничения

⚠️ Только классификация: метод проверен на бинарных задачах (тональность, следует/не следует один вывод из другого). Для открытых генеративных ответов («напиши эссе», «дай совет») тест в таком виде не работает.

⚠️ Маленькие модели ненадёжны: модели меньше ~7-8 млрд параметров часто вообще не могут отредактировать текст так, чтобы поменять свой же вердикт — тест просто не сработает.

⚠️ Явная просьба назвать причину искажает результат: если попросить модель сначала сформулировать, что важно, а потом редактировать на основе этого — объяснение выглядит убедительнее внешне, но реже отражает реальное решение модели.

⚠️ Нужен глаз, а не только цифра: без человеческой разметки (как в исследовании) вы оцениваете совпадение правки со смыслом «на глаз» — это субъективно.


🔍

Как исследовали

Команда взяла 10 моделей открытого веса (семейства LLaMA-3 и Qwen-2.5, от 1 до 70+ миллиардов параметров) и прогнала их через две задачи: определение тональности отзывов о фильмах и логический вывод (следует ли одно утверждение из другого) — с готовой человеческой разметкой важных слов (бенчмарк ERASER).

Для каждой модели проверяли три вещи: реально ли правка меняет её собственный вердикт (честность), остаётся ли правка близкой к оригиналу (минимальность), и совпадают ли изменённые слова с тем, что люди считают важным — для этого авторы придумали свою метрику (ESMP).

Сравнивали три способа промптинга: обычный, в одном диалоге, и с явным запросом «сначала назови причину». Размер модели оказался главным фактором честности — корреляция 0.87, при удвоении размера модели честность объяснений росла на 12 процентных пунктов. Но самое неожиданное: явный запрос «сначала объясни причину» делал объяснения более человекоподобными, но менее правдивыми — модель подстраивалась под структуру запроса, а не показывала реальную логику. Это противоречит интуиции про «попроси подумать вслух — станет точнее».


📋 Дайджест исследования

Ключевая суть

Парадокс: если попросить модель сначала назвать причину решения, а потом отредактировать текст на её основе — объяснение звучит убедительнее, но реже совпадает с тем, что реально повлияло на вердикт. Метод Counterfactual Self-Explanation Test (тест на самообъяснение через контрфактическую правку) позволяет проверить, врёт ли модель о причинах своих решений — без доступа к её внутренней логике. Фишка: не спрашивай модель «почему» — заставь её показать это действием: дать вердикт, минимально отредактировать текст, чтобы вердикт поменялся, и перепроверить результат.

Принцип работы

Три шага в одном диалоге, без разрыва контекста: вердикт → правка → проверка. Модель классифицирует текст, потом сама минимально его меняет так, чтобы её же оценка развернулась на противоположную. Если правка попала в смысловую часть текста — модель не врёт себе. Если поменялась мелочь вроде даты или названия бренда, а вердикт всё равно флипнулся — модель нестабильна, и её самообъяснениям доверять рискованно.

Почему работает

Модель умеет складывать слова в убедительное объяснение по языковому шаблону — это не значит, что оно отражает реальную причину решения. У неё нет доступа к своей внутренней логике для рефлексии, она просто генерирует текст, похожий на объяснение. Зато модель хорошо справляется с конкретным действием — редактированием текста с целью поменять свой же вердикт. Метод обходит слабость «расскажи правду о себе» через проверку действием, а не словами — и сразу верифицирует результат повторным вопросом.

Когда применять

Автоклассификация → тональность отзывов, модерация контента, скоринг заявок — особенно когда нужно доверять решению модели без ручной проверки каждого случая. НЕ подходит для открытых генеративных задач — эссе, советов, свободных ответов, где нет бинарного вердикта, который можно флипнуть.

Мини-рецепт

1. Дай вердикт: попроси модель классифицировать текст одним словом («позитивный/негативный», «риск/не риск»), не спрашивая причину
2. Попроси минимальную правку: «Измени как можно меньше слов, чтобы твоя оценка поменялась на противоположную. Покажи только изменённый текст»
3. Перепроверь в том же диалоге: подай изменённый текст той же модели и спроси оценку снова — без разрыва контекста
4. Сверь вручную: посмотри, какие слова поменялись — если правка попала в суть, а не в бренд или дату, модель честна

Примеры

[ПЛОХО] : Почему ты оценил этот отзыв как негативный? Объясни причину своего решения.
[ХОРОШО] : Оцени тональность отзыва: «Платье пришло на размер меньше, качество ткани так себе, но менеджер быстро оформил возврат». [дождись ответа] Теперь минимально измени текст, чтобы твоя оценка поменялась на противоположную. Покажи только изменённый текст. [дождись ответа] Вот изменённый текст: {результат}. Оцени его тональность ещё раз.
Источник: An Empirical Study of Counterfactual Self-Explanations in LLMs
ArXiv ID: 2609.17119 | Сгенерировано: 2026-09-16 04:24

Проблемы LLM

ПроблемаСутьКак обойти
Объяснение модели может не совпадать с настоящей причиной решенияПросишь модель объяснить вердикт — она выдаёт складное объяснение. Но это просто текст, похожий на объяснение. Модель не заглядывает внутрь себя, у неё нет доступа к собственной логике. Проблема для любой задачи с классификацией: тональность, риск, модерация, скорингНе спрашивай "почему ты так решила". Попроси модель минимально отредактировать текст так, чтобы её же вердикт поменялся. Слова, которые она меняет — это и есть реальная причина решения

Методы

МетодСуть
Тест на честность самообъяснения через правкуТри шага в одном диалоге, без разрыва контекста: 1) модель классифицирует текст, 2) минимально редактирует текст так, чтобы её же вердикт поменялся, 3) отредактированный текст подаётся заново — проверка, реально ли вердикт изменился. Почему работает: модель плохо умеет рассказывать о своей логике, но хорошо выполняет конкретное действие — правку с заданной целью. Действие честнее слов. Когда да: бинарная или короткая классификация (тональность, риск, подходит/не подходит). Когда нет: открытые генеративные ответы (эссе, советы) — там нет чёткого "вердикта" который можно флипнуть; также не работает на маленьких моделях (до 7-8 млрд параметров) — они часто не справляются с самой правкой
📖 Простыми словами

An Empirical Study of Counterfactual Self-Explanations inLLMs

arXiv: 2609.17119

Нейросети врут о причинах своих решений, причём делают это с абсолютно невозмутимым лицом. Когда ты просишь модель объяснить свой вердикт, у неё нет доступа к собственным «мозгам» или весам. Она не рефлексирует, а просто генерирует правдоподобный текст, который по языковым паттернам похож на логичное объяснение. В итоге её ответ — это красивая выдумка, которая часто вообще не имеет отношения к тому, что реально повлияло на результат.

Это как спросить сонного студента на экзамене, почему он выбрал вариант «Б». Он мгновенно выдаст стройную теорию, хотя секунду назад просто ткнул пальцем в небо из-за знакомой буквы. Формально звучит солидно, но внутри — полная пустота. Модель занимается ровно той же постфактум-рационализацией, заставляя тебя поверить в несуществующую логику.

Чтобы поймать её за руку, используют метод контрфактических объяснений. Механика простая: берём решение модели и просим её минимально изменить входной текст так, чтобы её же собственный вердикт перевернулся. Если для смены оценки с негативной на позитивную меняется фраза «товар сломался» на «товар отличный» — логика работает. Но если вердикт рушится от случайного союза или опечатки, значит, модель реагирует на белый шум, а в отчёте просто вешает тебе лапшу на уши.

Тестировали механику на отзывах, но принцип универсален. Он критически важен везде, где LLM принимает решения: от автоматической модерации контента и скоринга резюме до сортировки тикетов техподдержки на маркетплейсах. Нельзя верить модели, когда она пишет «я отклонила заявку из-за пункта три». Пока ты не проверил минимальные триггеры смены решения, ты не управляешь поведением системы.

Короче: хватит наивно просить сетку «объяснить свои мысли» — это самообман. Тестируй логику через контрфактические мутации текста, чтобы видеть реальные зависимости. Иначе твой пайплайн будет банить клиентов за случайные знаки препинания, а ты продолжишь верить в её «глубокий контекстуальный анализ».

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с