TL;DR
Когда вы спрашиваете у LLM "X вызывает Y?" — модель почти всегда отвечает "да", даже если связь непрямая или направление перепутано. Хуже того: в 80% таких ошибочных ответов модель называет уверенность 80% и выше. Заявленная уверенность модели не имеет отношения к тому, права она или нет.
Причина в том, что модель путает "связано" и "является прямой причиной". Классический пример: вирус → инфекция → положительный тест. Модель легко скажет, что вирус напрямую вызывает положительный тест — хотя это происходит через промежуточное звено. Модель распознаёт причинную связанность, но не умеет чётко определять направление и прямоту этой связи. И чем больше переменных в системе, тем хуже — модели буквально штампуют связи "на всякий случай", создавая избыточно плотную картину причин.
Надёжнее не спрашивать модель "насколько ты уверена", а проверять её ответ через повторение — задать один и тот же причинный вопрос разными формулировками (или разным моделям) и смотреть, совпадают ли ответы. Совпадение ответов (agreement) оказалось заметно надёжнее, чем самооценка уверенности моделью.
Схема метода
ШАГ 1: Задать причинный вопрос явно, разделяя связанность и прямую причину
→ "X напрямую вызывает Y, или через промежуточный фактор?"
ШАГ 2: Переформулировать тот же вопрос 3-5 раз разными словами
(или задать в разных чатах/моделях)
→ собрать набор ответов
ШАГ 3: Смотреть на согласие ответов, а не на цифру уверенности
→ если ответы расходятся — не доверять выводу
→ если совпадают — можно использовать как гипотезу для проверки
Все шаги можно выполнить руками в обычном чате — без API и кода.
Пример применения
Задача: Маркетолог анализирует, почему упали продажи в интернет-магазине, и хочет понять цепочку причин перед тем, как менять стратегию.
Промпт (шаг 1):
Я вижу два факта:
1) Конкурент снизил цены на 15%
2) Наши продажи упали на 20% за тот же месяц
Ответь строго на два вопроса:
1. Снижение цен конкурентом НАПРЯМУЮ вызвало падение наших продаж,
или это происходит через промежуточный фактор (например, отток клиентов
к конкуренту, изменение восприятия бренда)?
2. Есть ли шанс, что причинность обратная — то есть падение наших продаж
как-то повлияло на решение конкурента снизить цены?
Не давай общую уверенность в процентах — просто объясни логику связи.
Промпт (шаг 2, повтор в новом чате):
У меня падение продаж на 20% и конкурент снизил цены на 15% в тот же месяц.
Это прямая причина, косвенная, или могут быть скрытые общие факторы
(например, сезонность, которая одновременно двинула и цены конкурента, и мой спрос)?
Результат: Вы получите объяснение логики связи в двух формулировках. Если оба ответа сходятся на "вероятно есть промежуточный фактор" — это надёжный сигнал копать глубже (проверить сезонность, отток клиентов). Если ответы расходятся или один из них уверенно называет прямую причину без оговорок — не берите этот вывод как основание для решений, ищите данные.
Почему это работает
LLM обучена на текстах, где причина и следствие часто упоминаются рядом — она хорошо чувствует, что "вирус" и "тест" связаны, но у неё нет внутреннего "счётчика шагов" между ними. Она не отслеживает, сколько звеньев в цепочке — просто видит семантическую близость и превращает её в "да, это причина".
Сильная сторона модели — она стабильно реагирует на форму вопроса. Если спросить пять раз по-разному, честный сигнал (реальная причинная связь) будет всплывать снова и снова, а случайная догадка — рассыпется на разные ответы.
Метод использует эту стабильность как замену недостающему "счётчику причинности": вместо того чтобы просить модель оценить свою уверенность (она не умеет), мы создаём внешний индикатор — согласие между независимыми попытками.
Рычаг управления: количество переформулировок. Для важного решения — 5 разных формулировок вопроса или запрос в 2-3 разные модели (например, ChatGPT + Claude + Gemini). Для менее критичной задачи достаточно 2-3 переформулировок в одном чате.
Шаблон промпта
Я хочу проверить причинно-следственную связь между "{событие А}" и "{событие Б}".
Ответь на три вопроса, не давая общую оценку уверенности в процентах:
1. "{событие А}" напрямую вызывает "{событие Б}",
или это происходит через промежуточный фактор? Если да — назови этот фактор.
2. Возможно ли обратное направление — что "{событие Б}" повлияло
на "{событие А}"?
3. Есть ли скрытая общая причина, которая одновременно объясняет
и "{событие А}", и "{событие Б}", без прямой связи между ними?
Объясни логику своего ответа, а не только вывод.
Подставьте в {событие А} и {событие Б} две вещи, между которыми хотите проверить причинность. Задайте этот промпт в 2-3 разных формулировках (или в разных чатах) и сравните ответы.
🚀 Быстрый старт — вставь в чат:
Вот шаблон для проверки причинно-следственной связи. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какие два события или явления вы сравниваете и в каком контексте (бизнес, здоровье, отношения) — это нужно, чтобы верно сформулировать промежуточные факторы, характерные именно для вашей темы.
Ограничения
⚠️ Не работает как точный инструмент, только как фильтр: даже согласие между разными формулировками — это сигнал стабильности, а не доказательство правды. Метод помогает отсеять случайные догадки, но не заменяет проверку на реальных данных.
⚠️ На сложных системах с множеством факторов точность резко падает: чем больше переменных в цепочке причин, тем чаще модель ошибается независимо от того, как задан вопрос.
⚠️ Модель может "помнить" известные примеры, а не рассуждать: если вы спрашиваете про хорошо известный кейс (например, классический учебный пример про курение и рак), модель может выдавать выученный ответ, а не логический вывод — тест на переформулировки в этом случае не поможет.
Как исследовали
Исследователи взяли 12 open-source моделей (Qwen, Gemma, Llama, Mistral, Phi) и прогнали их через шесть эталонных причинных графов — от медицины до промышленности — задавая вопросы вида "А напрямую вызывает Б?" пятью разными стилями формулировки промпта. Каждый ответ сравнивали с опубликованным "правильным" графом причин.
Логика простая: если модель хорошо понимает причинность, она должна редко путать прямую связь с непрямой и не быть слишком уверенной в ошибках. На деле оказалось наоборот — модели почти всегда переоценивают количество связей (recall выше precision в 94% случаев), и увеличение размера модели помогает только на "понятных по названиям" графах, а на сложных технических датасетах (с кодовыми именами переменных вроде MUNIN1) толку почти нет.
Самое неожиданное — сравнение четырёх видов "уверенности". Заявленная моделью уверенность в процентах и внутренняя вероятность токена (logit) почти никак не связаны с правильностью ответа — logit-уверенность вообще часто "залипает" около 100%, независимо от того, права модель или нет. А вот совпадение ответов между разными формулировками вопроса или между разными моделями оказалось заметно точнее, хотя статистически разница не всегда значима после строгой коррекции.
