Reflexion: языковые агенты, которые учатся на ошибках без переобучения
Я размышлял о том, что потребуется для создания агента Beancount, который становится лучше со временем без необходимости переобучения каждый раз, когда он совершает ошибку. Статья Шинна и др. «Reflexion: Language Agents with Verbal Reinforcement Learning» (NeurIPS 2023) напрямую отвечает на этот вопрос, и ответ одновременно многообещающий и более ограниченный, чем могут показаться заголовочные цифры.
Статья
В Reflexion (Шинн, Кассано, Б ерман, Гопинат, Нарасимхан, Яо; NeurIPS 2023) предлагается вместо настройки весов модели с помощью дорогостоящего обучения с подкреплением улучшать агента, заставляя его писать собственный анализ неудач на естественном языке. После каждой попытки модель Self-Reflection считывает траекторию и сигнал вознаграждения, выдает вербальный «посмертный» анализ (post-mortem) и добавляет его в буфер эпизодической памяти. При следующем испытании Агент (Actor) считывает накопленные размышления перед началом действий. Градиент не вычисляется. Модель не дообучается. «Обучение» полностью происходит в окне контекста.
Трехкомпонентная архитектура — Актер (Actor), Оценщик (Evaluator), Саморефлексия (Self-Reflection) — достаточно модульна, чтобы адаптироваться к различным типам задач. Оценщиком может быть бинарный результат юнит-теста, LLM-судья или специфическая для задачи эвристика. Именно эта гибкость делает статью интересной за пределами бенчмарков по кодингу.
Ключевые идеи
- На Python-тесте HumanEval pass@1 связка Reflexion + GPT-4 достигает 91%, по сравнению с базовым показателем GPT-4 в 80% — это значительный и реальный разрыв. На Leetcode Hard скачок составляет с 7,5% до 15%, что является прогрессом, но также напоминает о том, насколько сложными остаются эти задачи.
- В AlfWorld (текстовое планирование домашних дел) Reflexion решает 130 из 134 задач после 12 попыток против 108 из 134 для базового метода ReAct — это самый убедительный результат по принятию решений в статье.
- В многоходовых ответах на вопросы HotpotQA связка CoT + Reflexion увеличивает точность совпадений (exact match) с 61% до 75% на выборке из 100 вопросов.
- В MBPP (второй бенчмарк по Python) Reflexion слегка снижает производительность: с 80,1% до 77,1%. В статье этот факт упоминается лишь вскользь.
- В WebShop метод Reflexion не помогает. Авторы объясняют это тем, что задача требует «значительного разнообразия и поиска» — агент пишет бесполезные размышления, которые не обобщаются на поиск других товаров.
- Память ограничена 1–3 сохраненными опытами. Это прагматично, учитывая длину контекста, но означает, что агент н е может накапливать знания в ходе длительной эксплуатации.
Что подтверждается, а что нет
Основное утверждение верно: вербальная рефлексия улучшает производительность в задачах с четкой, проверяемой обратной связью. Если вы знаете, прошел ли код юнит-тесты, у модуля рефлексии есть конкретная почва для рассуждений. Результаты AlfWorld и HumanEval реальны и значимы.
Однако неудача с WebShop поучительна, и в статье ей уделяется недостаточно внимания. Рефлексия работает, когда оценщик может выдать четкий, действенный сигнал. Когда режим отказа заключается в том, что «агент исследовал не ту часть огромного пространства поиска», совет «попробуй другие условия поиска в следующий раз» не приводит к конвергенции. Это структурное ограничение: вербальное подкрепление не является заменой стратегиям поиска (exploration).
Эксперименты с кодингом также обладают некоторой цикличностью, которую авторы признают в своем блоге: агент сам генерирует юнит-тесты для оценки собственного кода. Ошибочный набор тестов приводит к ложноположительным результатам. Показатель 91% в HumanEval сохраняется, потому что HumanEval предоставляет эталонные тесты, но цикл самооценки агента менее надежен в новых задачах, где внешний оракул отсутствует.
Воспроизводимость вызывает вопросы. Все основные результаты получены на GPT-4, а эксперименты со starchat-beta не показали никакого улучшения по сравнению с базовым уровнем. Это означает, что эффективность техники ограничена способностями самой модели. Командам, использующим меньшие модели или модели с открытыми весами, не стоит ожидать таких же преимуществ.
Почему это важно для ИИ в финансах
Сценарий использования Beancount обладает именно тем свойством, которое заставляет Reflexion рабо тать хорошо: наличием четкого оценщика. Если агент неверно категоризирует транзакцию, проверка баланса гроссбуха или этап сверки может выдать бинарный сигнал — баланс сходится или нет. Это гораздо более качественная поверхность для обратной связи, чем неоднозначное вознаграждение при поиске товаров в WebShop.
Конкретно я могу представить агента записи Beancount, который после неудачной попытки внесения записи (неверный счет, неправильная валюта, ошибка проверки/assertion) генерирует вербальное размышление: «Я использовал Expenses:Meals, но для этого счета требуется подкатегория. В следующий раз я проверю иерархию счетов перед записью». Это размышление сохраняется и извлекается при следующей похожей транзакции. Агент фактически накапливает специфическую для сессии политику на основе собственных ошибок.
Ограничение памяти — основной архитектурный вызов. Буфер из 1–3 опытов подходит для одной сессии, но развернутому бухгалтерскому агенту необходимо учиться на тысячах транзакций и неделях работы. Расширение Reflexion на долгосрочную память — возможно, путем суммирования или индексации размышлений — остается открытой проблемой. Статья её не решает.
Что почитать дальше
- Language Agent Tree Search (LATS) (Zhou et al., arXiv:2310.04406; ICML 2024) — расширяет Reflexion, оборачивая цикл «рефлексия-повтор» в поиск по дереву Монте-Карло, позволяя агентам исследовать несколько ветвей рассуждений, а не придерживаться одной траектории. Достигает 92,7% на HumanEval с GPT-4.
- Retroformer (Yao et al., arXiv:2308.02151; ICLR 2024) — вместо того чтобы полагаться на ту же LLM для саморефлексии, Retroformer обучает отдельную легкую ретроспективную модель с помощью градиента политики, делая процесс рефлексии обучаемым для разных задач. Более принципиальный подход, но требует тонкой настройки.
- Self-Reflection in LLM Agents: Effects on Problem-Solving Performance (arXiv:2405.06682, 2024) — эмпирическое исследование, специально изучающее, когда и почему рефлексия помогает, с абляциями по типам задач. Полезно для понимания того, когда применять Reflexion, а когда — другие стратегии коррекции.
