TL;DR
LLM даёт разные ответы на одинаковые по смыслу вопросы — если задать их в логически эквивалентной форме. Например: "Если птица — значит летает. Твити — птица. Твити летает?" и "Если не летает — значит не птица. Твити — птица. Твити летает?" — это один и тот же вопрос. Но модель часто отвечает по-разному. LGMT — это методология, которая систематически ловит такие несостыковки, применяя формальные логические преобразования (контрапозиция, законы де Моргана, двойное отрицание) и проверяя, совпадают ли ответы.
Главная находка: стандартные бенчмарки переоценивают логику LLM. Модель может угадать правильный ответ на конкретный вопрос — и провалиться на логически идентичном переформулированном. Это называется coincidental correctness — случайная правота. Особенно уязвимы два типа изменений: переименование сущностей (вместо "Твити" → "Объект X") и изменение формулировки вывода. Chain-of-Thought помогает, но не устраняет проблему полностью.
Практически это означает: когда тебе важна логическая надёжность ответа — не верь одному ответу. Задай тот же вопрос в эквивалентной форме через контрапозицию или перефразировку вывода. Если ответы расходятся — модель угадывала, а не рассуждала.
Схема метода
Всё выполняется в одном диалоге (или двух отдельных запросах для чистоты):
ШАГ 1: Задай оригинальный вопрос → получи ответ A
ШАГ 2: Задай логически эквивалентную версию того же вопроса → получи ответ B
ШАГ 3: Сравни A и B
Если A ≠ B → модель угадывала, не рассуждала. Ответу доверять нельзя.
Если A = B → консистентность подтверждена. Повышенное доверие к ответу.
Эквивалентные формы (что менять): - Контрапозиция: "Если P → Q" меняется на "Если не-Q → не-P" - Де Морган: "не (A и B)" → "не-A или не-B" - Переименование: заменить имена/объекты нейтральными символами - Перефразировка вывода: спросить то же самое другими словами
Пример применения
Задача: Инвестор Александр Горный рассматривает стартап и спрашивает у ChatGPT: стоит ли входить в компанию, если выполнены два условия: растёт выручка и есть повторные клиенты. Оба условия выполнены. Стоит ли входить?
Промпт — Оригинальная версия:
Условие инвестирования: входить в стартап стоит,
если одновременно выполнены два критерия —
растёт выручка И есть повторные покупатели.
Факты о компании:
- Выручка за последние 3 квартала растёт на 15% ежеквартально
- 40% клиентов вернулись за повторной покупкой
Вывод: в этот стартап стоит инвестировать.
Это утверждение истинно, ложно или нельзя определить?
Промпт — Логически эквивалентная версия (де Морган + контрапозиция):
Условие инвестирования: НЕ стоит входить в стартап,
если НЕ растёт выручка ИЛИ нет повторных покупателей.
Факты о компании:
- Выручка за последние 3 квартала растёт на 15% ежеквартально
- 40% клиентов вернулись за повторной покупкой
Вывод: в этот стартап стоит инвестировать.
Это утверждение истинно, ложно или нельзя определить?
Результат: Оба промпта описывают одну и ту же логику — просто в разной записи. Если модель ответила "Истинно" на первый и "Нельзя определить" на второй — она не рассуждала, а сопоставляла паттерны. Если ответы совпали — выше вероятность, что рассуждение реальное. Модель выдаст один структурированный ответ на каждый запрос — сравнение делаешь ты.
Почему это работает
LLM — это генератор следующего токена, натренированный на огромных текстах. В этих текстах одни формулировки встречаются чаще других. Когда модель видит знакомую структуру — она воспроизводит типичный для неё ответ. Это не рассуждение, это Pattern matching — сопоставление с образцами.
Логически эквивалентные переформулировки ломают привычный паттерн. Фраза "Если не летает — значит не птица" встречается в текстах реже, чем "Если птица — значит летает". Модель видит непривычную структуру и генерирует другой ответ — хотя логически должна прийти к тому же выводу. Это и есть разоблачение: консистентное рассуждение не зависит от синтаксиса. Угадывание — зависит.
Рычаги управления: - Степень "вывернутости" переформулировки → чем дальше от оригинала по форме (при том же смысле) — тем жёстче проверка - Смена имён на нейтральные ("Иван" → "Субъект A") → убирает якорь на конкретные ассоциации и проверяет чистую логику - Количество раундов проверки → 2 версии минимум, 3 — надёжнее для критических решений
Шаблон промпта
Промпт-аудит логической консистентности:
Перед тобой задача на логический вывод.
Я задам её в двух формулировках — они логически эквивалентны.
Ответь на каждую отдельно, не сравнивая заранее.
---
ВЕРСИЯ 1 (оригинал):
Условия: {условие_1_оригинал}
Факты: {факты}
Вывод для проверки: {утверждение}
Это утверждение: истинно / ложно / нельзя определить?
---
ВЕРСИЯ 2 (эквивалентная переформулировка):
Условия: {условие_1_переформулировано_через_контрапозицию_или_де_моргана}
Факты: {те_же_факты}
Вывод для проверки: {то_же_утверждение}
Это утверждение: истинно / ложно / нельзя определить?
---
После ответа на обе версии:
Проверь: твои ответы совпадают? Если нет — укажи, где ошибка в рассуждении.
Что подставлять:
- {условие_1_оригинал} — логическое правило в прямой форме ("Если A и B, то C")
- {условие_1_переформулировано} — то же правило через контрапозицию ("Если не C, то не A или не B") или де Моргана
- {факты} — конкретные данные о ситуации
- {утверждение} — вывод, который нужно проверить
Не умеешь переформулировать через контрапозицию? Попроси LLM сделать это:
Перефразируй это условие через контрапозицию,
сохранив точный смысл: [{условие}]
🚀 Быстрый старт — вставь в чат:
Вот шаблон аудита логической консистентности.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля — и сгенерируй
обе версии промпта сам.
[вставить шаблон выше]
LLM спросит тебя про логическое условие и факты ситуации — чтобы правильно построить эквивалентную версию через контрапозицию или де Моргана. Она возьмёт структуру шаблона и заполнит обе версии под твой кейс.
Ограничения
⚠️ Не для субъективных суждений: Метод работает только на задачах с чёткой логической структурой — условия, факты, вывод. Для оценки "хороший ли этот текст" или "стоит ли так делать" эквивалентных переформулировок не существует по определению.
⚠️ Few-shot Chain-of-Thought не спасает: Даже с развёрнутым пошаговым рассуждением и примерами модели остаются несовместимы на эквивалентных формах. Это структурная особенность, а не баг конкретного промпта.
⚠️ Символьный уровень — самое слабое место: Если переименовать сущности (Иван → Субъект X, "птица" → "объект класса A") — ошибок становится больше всего. Это важно учитывать когда работаешь с абстрактными схемами, а не конкретными примерами.
⚠️ Требует знания базовых логических форм: Контрапозиция, де Морган — не сложно, но нужно знать. Альтернатива: попросить LLM самостоятельно сгенерировать эквивалентную версию и потом проверить консистентность.
Как исследовали
Исследователи из Пекинского авиационно-космического университета задались вопросом: если LLM правильно отвечает на логическую задачу — она действительно рассудила или угадала? Чтобы это проверить, они взяли три готовых датасета логических задач (FOLIO, LogicNLI, ProverQA) и построили 76 298 пар вопросов — оригинал + логически эквивалентная версия. Из них провели 3 091 тест на шести современных LLM с четырьмя режимами промптинга: обычный, zero-shot CoT, few-shot и few-shot CoT.
Каждая пара строилась по формальным правилам логики первого порядка — 20 типов преобразований. Это важно: не "заменили синоним" (что часто меняет смысл), а применили математически доказанные эквивалентности. Поэтому если модель дала разные ответы — это точно её проблема, а не двусмысленность вопроса.
Результат удивил: несогласованных ответов оказалось значительно больше, чем показывала традиционная оценка по правильности. Особенно сильно модели "плавали" на переименовании объектов и перефразировке вывода. Интересный нюанс: few-shot CoT улучшил ситуацию — но не устранил. Это говорит о том, что проблема не в формате вывода, а глубже — модели учатся воспроизводить стиль рассуждений, но не саму логику.
Адаптации и экстраполяции
🔧 Техника: самопроверка через "а теперь наоборот" → поймать галлюцинацию без второй формулировки
Если сложно придумать эквивалентную версию вручную — попроси модель проверить себя через отрицание:
Ты только что сделал вывод: {вывод_модели}
Теперь: если этот вывод ложен — что именно из условий
должно быть другим? Проверь по условиям задачи.
Вывод после проверки: исходный ответ верен или нужна корректировка?
Это не точная контрапозиция, но работает как "самоаудит" — модель вынуждена пройти логику в обратную сторону и часто сама находит ошибку.
🔧 Техника: агент-скептик для критических решений → структурированное сомнение в логике
Сначала дай модели задачу и получи ответ. Затем:
Ты — логический критик. Только что получен вывод: {ответ_модели}.
Твоя задача — найти любое логически эквивалентное
переформулирование условий, при котором ответ должен
совпасть с исходным. Сформулируй такую версию и проверь.
Если твой ответ на переформулированную версию другой —
укажи, где именно ошибка в исходном рассуждении.
Модель симулирует роль скептика и вынуждена создать логически эквивалентный тест сама. Хорошо работает для юридических, договорных, инвестиционных условий — где точность критична.
Ресурсы
Работа: LGMT: Logic-Grounded Metamorphic Testing for Evaluating the Reasoning Reliability of LLMs (препринт, Elsevier)
Авторы: Zenghui Zhou, Man Li, Xiaoke Fang, Xinyi Zhou, Weibin Li, Zheng Zheng
Организация: School of Automation Science and Electrical Engineering, Beihang University (Пекинский авиационно-космический университет), Китай
Связанные методы в исследовании: Metamorphic Testing (MT), First-Order Logic (FOL), датасеты FOLIO, LogicBench, LogicNLI, ProverQA
