group-telegram.com/gonzo_ML/2964
Last Update:
Gödel Agent: A Self-Referential Agent Framework for Recursive Self-Improvement
Xunjian Yin, Xinyi Wang, Liangming Pan, Xiaojun Wan, William Yang Wang
Статья: https://arxiv.org/abs/2410.04444
Репа: https://github.com/Arvid-pku/Godel_Agent
Why did the Gödel Agent take so long to plan its road trip in its Gödel Machine?
Because its navigation system kept recursively self-improving, proving it could find a better route, but never actually getting to the destination!
Любопытная работа про эволюционирующих агентов, вдохновлённых Шмидхуберовской Машиной Гёделя (https://arxiv.org/abs/cs/0309048) 2003 года. Машина пыталась сначала формально доказать, что изменение ведёт к улучшению (что могло требовать примерно вечность), агент вместо формальных доказательств использует эмпирический фидбек из среды и просит LLM улучшить код на базе этого фидбека. По ощущению похоже на что-то типа AutoGPT, который ещё и код свой переписывает.
Идея в том, что агенты бывают разной породы. Первые, Hand-Designed Agents с самой низкой степенью свободы, следуют одной и той же полиси всё время, вне зависимости от фидбека из среды. Другие, известные как Meta-Learning Optimized Agents, имеют фиксированный алгоритм meta-learning, обновляющий их полиси по фидбеку из среды. И есть self-referential Gödel Agent, который может улучшать себя без ограничений. Технически это значит, что он обновляет и полиси, и алгоритм мета-обучения.
Для такого агента нужно задать начальные полиси и алгоритм мета-обучения. В качестве начальной полиси взята LLM с Chain-of-Thought промптом. А в качестве второго взят алгоритм, который рекурсивно запрашивает LLM для переписывания всей своей кодовой базы с учётом фидбека из среды (успешность решения задачи). При этом он может переписать и код, отвечающий за переписывание кода, поэтому он self-referential.
Агент -- это экземпляр конкретного питоновского класса (Agent), он имеет доступ к содержимому памяти питоновской среды (локальные и глобальные переменные, функции и модули) и может динамически там всё менять, включая свой код (monkey patching). Так он и эволюционирует, насколько я понял.
Для улучшения сходимости оптимизационного процесса агенту даны дополнительные тулы: 1) thinking before acting (кажется, похоже на ReAct), 2) error handling (добавлен механизм восстановления после ошибок, ибо LLM может всякого в код навставлять), 3) code running (Python и bash), 4) LLM calling (через API). Первые два дальше покажут наибольшую пользу.
Где-то в обзорах в сети проскакивало, что агент сначала проверяет, что новые изменения ведут к улучшению, и включает новый код только если они ведут, или что он делает backtrack назад к предыдущему хорошему решению в случае, когда результат оказался хуже. Но по статье этого не видно, более того, там явно есть примеры, когда результат сначала ухудшался, а потом агент таки навёрстывал. Код я посмотрел только поверхностно, и мне кажется, что ничего упомянутого тут нет и агент ориентируется только по истории. Но могу и ошибаться, так что если кто погрузится глубже и найдёт что-то интересное, расскажите. Вообще есть чувство, что всё больше обзоров начинают генериться NotebookLM или просто GPT, и оно не всегда соответствует реальности.
Потестили на бенчмарках DROP, MGSM, MMLU, GPQA. Бейзлайны из группы Hand-Designed Agents (CoT, CoT-SC, Self-Refine, LLM Debate, Step-back-Abs, Quality-Diversity, Role Assignment) и Meta-Learning Optimized Agents (Meta Agent Search).
Дефолтный гёделевский агент ограничен, ему запрещено менять модель (gpt-3.5-turbo) и у него нет доступа к интернету. Как я понял, для самоулучшения используется gpt-4o, а gpt-3.5-turbo -- для оценки уже оптимизированной полиси. Есть неограниченный вариант, которому можно фсё.
Ограниченный гёделевский агент побил всех. Где-то сильно (DROP, MGSM), а где-то лишь слегка (GPQA). В приложении есть код для найденных полиси, можно изучить, насколько далеко он ушёл от начального CoT. Неограниченный агент побил всех ещё больше, но во многих случаях за счёт перехода на более мощную модель 🙂
BY gonzo-обзоры ML статей
Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260
Share with your friend now:
group-telegram.com/gonzo_ML/2964