Обновить

Иллюзия логики: как я доказал, что LLM-агенты игнорируют факты, и почему Chain-of-Thought делает только хуже

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели12K
Всего голосов 15: ↑13 и ↓2+14
Комментарии9

Комментарии 9

Ну прям как люди) Менять свое мнение - тоже сложно, тоже не каждый умеет... и тоже очень полезный навык!

Есть такое :)

Я правильно прочитал, что у single-agent и у blind checker разная логика, а не просто включен и выключен режим размышлений? Чтоб показать, как именно хуже/лучше, с размышлениями, или без, надо одного и того-же агента раз 10 запустить с включенными размышлениями и взять средний/худший/лучший результат, затем на той-же задаче, с той же обвязкой раз десять запустить с отключенным режимом размышлений. и сравнить средний/худший/лучший результат с предыдущим. А тут, честно говоря, все как-то мутно и непонятно расписано, как-будто разные совсем агенты с разной логикой сравниваются.

Посмотрел ваши исходники, вроде у вас есть попытка сравнить одни и те-же модели на одном в одном и том-же наборе в файле run_cross_model_compact.py, но в статье вы его не упоминаете вообще, как и результаты, да и сравниваются там только gpt5.4 и gemini-pro в режиме думать и не думать.

Несколько раз на одной задаче надо запускать т.к. большую роль может играть генератор случайных чисел. В бенчмарках обычно пишут среднее от 5 запусков.

Спасибо за развернутый комментарий и отдельный респект за то, что заглянули в исходники! Вы поднимаете абсолютно правильные вопросы методологии. Давайте проясню моменты, которые в статье могли показаться мутными:

1. Про сравнение «теплого с мягким» (разная логика vs размышления)

Мы не сравнивали думающего агента с бездумным судьей напрямую. Мы сделали честную матрицу 2x2 и тестировали режимы внутри одной и той же логики.

В разделе «Инсайт 2» есть график Thinking vs Non-Thinking, на котором четко видно:

  • Мы взяли same_model_locked_agent и запустили его с размышлениями (регрет 0.15) и БЕЗ размышлений (регрет улетел в 2.26).

  • Затем мы взяли blind_checker и тоже запустили его с размышлениями (регрет 0.16) и БЕЗ размышлений (регрет 0.10).

    То есть мы сравнивали агентов самих с собой. Вывод именно в том, что включение CoT помогает генератору, но вредит верификатору.

2. Про кросс-модельный тест и GPT-5.4

Результаты скрипта run_cross_model_compact.py как раз подробно описаны в предпоследнем разделе статьи - «Фронтир-модели не спасают». Там же есть график Compact Cross-Model Regret. Мы протестировали GPT-5.4 в режимах thinking и non-thinking (это gpt 5.3 instant так как 5.4 без ризонинга нет) и получили ровно тот же паттерн удваивания ошибки при включении размышлений. Про Gemini 3.1 Pro в статье не упоминали, так как на момент тестов ее strict-json endpoint в OpenRouter работал нестабильно (падает с ошибкой схемы при отключении reasoning), поэтому в финальный чарт пошли только модели OpenAI.

3. Про дисперсию, рандом и количество запусков

Вы абсолютно правы про влияние temperature, но здесь архитектура стенда страхует от сильного разброса:

  • Во-первых, сама среда (ответы тулзов и улики) полностью детерминирована.

  • Во-вторых, режим non-thinking запускается с temperature = 0.0, то есть он детерминирован на стороне генерации.

  • В-третьих, R_mean (Байесовский регрет) - это уже усредненная метрика. Стенд прогоняет агента не через одну задачу, а через набор эпизодов (в шоукейсе это 5 прогонов, в полном frozen_harness_v1 - прогон по всему корпусу событий). Мы усредняем ошибку распределения вероятностей на всем датасете, что сглаживает локальные флуктуации от temperature = 0.6 в режиме thinking.

Пусть первый камень в серверную стойку кинет тот, кто никогда не игнорировал факты...

Если ты добавишь на каждый шаг, после вызова тулзов формулирование "сомнений"
1) критика ранее составленной гипотезы
2) анализ новых гипотез с обязательным выходом в объективность (тут нужно подумать, как сформулировать это)

то твой результат уже улучшится в разы.

это скорее подтверждает твою гипотезу: "Модели и правда склонны к тунельному зрению, они видят сразу кандидата на верный ответ и выстраивают цепочку размышлений однобоко". Но делают это это по той же причине, почему это свойственно человеку. Такова природа нейронных сетей.

решение только одно: прямо попросить сомневаться и прямо обязать сомнения "выписывать". Как только ЛЛМ напишет явно в output токенах свое сомнение, у нее уже старая гипотеза станет не лидирующей и ей прийдется выдвинуть новую (обновить гипотезу).

Я проверял в отдельном тесте (в исходниках это режим prompt_debias_baseline).

Добавил соло-агенту жесткий промпт: "Обязательно сомневайся и ищи опровержения". И это реально сработало!

Смотрите на цифры (Байесовская ошибка):

  • Обычный агент: 1.47

  • Агент, которого заставили сомневаться: 0.67 (в 2 раза лучше)

  • Слепой судья: 0.09 (в 15 раз лучше)

То есть метод 100% работает. Но есть нюанс. Даже когда мы заставляем агента сомневаться, он всё равно помнит свои прошлые выводы. Он начинает генерировать сомнения "для галочки", чтобы угодить промпту, но в итоге часто всё равно притягивает ответ к изначальной гипотезе.

Вывод: просить сомневаться - это отличный «пластырь», если у вас всего один агент.

Не-е-е... Это не пластырь... Заставить сомневаться, а если быть более точным, то "заставить явно выписать ключевые контраргументы и разобрать их" - это ЕДИНСТВЕННЫЙ шанс и путь получить от модели не "самый простой пусть с тунельным зрением", а "реально приближеный к истинной версии вариант"

И причина тут в регрессивной структуре ЛЛМ - предсказателе будущего токена

У них нет в голове "критика", который говорит "проверь все". На следующем токене они помнят только... предыдущие

Если заставить модель "Выписывать сомнения", то любое выписанное опровержение уже меняет следующий предсказываемый токен. Модель не может просто следовать тунельному зрению, если в тексте выписываются прям сейчас токены, которые этот вариант расшатывают

А если заставить выписать контраругмент и заставить его явно подтвердить (проверить и подтвердить разумность контраргумента), то ты фактически блокируешь тем самым прошлый "уже некорректный" вариант. Ее же натура не даст идти по пути, который в текущем тексте уже опровергнут.

Это не пластырь... Это просто понимание сути алгоритма предсказания ЛЛМ.

---

И в обратную сторону. Мы, читая текст, по ходу в голове параллельно его проверяем "Критическим мышлением". Мы можем следить за повествованием и придумывать контраргументы, сверяя с собственным ходом мысли. У модели, которая просто читает прямое доказательство с тунельным зрением и без доли сомнения в тексте.. Просиходит только подтверждение одной и той же гипотезы.

К сожалению, не достаточно просто попросить модель сомневаться. Проблема в том, что современные CoT модели не могут забыть изначальный ложный аргумент, чтобы не происходило дальше. И это влияет на результат. Есть попытки именно научить модель сомневаться как часть её стандартного цикла размышлений. Можете посмотреть работу от DeepMind на этот счёт "Training Language Models to Self-Correct via Reinforcement Learning". Но там уже появляется вопрос, не приводит ли такое обучение к созданию внутри llm модели мира. А это уже совсем другой холивар )

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации