Революция в генерации кода: подход µCODE к многоэтапной обратной связи
Генерация кода с учетом обратной связи при выполнении сложна, так как ошибки часто требуют множества исправлений, а исправлять их структурированным образом непросто. Обучение моделей для учёта обратной связи при выполнении необходимо, но подходы сталкиваются с трудностями.
Некоторые методы пытаются исправить ошибки за один шаг, но терпят неудачу, когда требуется несколько доработок. Другие используют сложные методы обучения для оптимизации долгосрочных улучшений. Тем не менее, эти методы сталкиваются с слабыми сигналами обучения, делая обучение медленным и неэффективным — отсутствие эффективного метода для обработки итеративных исправлений приводит к нестабильному обучению и плохой производительности.
В настоящее время системы, основанные на использовании подсказок, пытаются решить многоважные задачи с помощью самодебага, создания тестов и размышлений, но улучшаются лишь слегка. Некоторые методы обучают модели вознаграждений, такие как CodeRL для исправления ошибок и ARCHER для структурированного принятия решений, в то время как другие используют Монте-Карло деревья поиска (MCTS), но требуют слишком много вычислительных ресурсов.
Подходы, основанные на проверке, такие как «Давайте проверим шаг за шагом» и AlphaCode, помогают находить ошибки или создавать тестовые случаи, но некоторые модели полагаются только на синтаксическую проверку, чего недостаточно для правильного обучения. Ограничения на количество шагов обучения снижает эффективность обучения, а RISE использует сложные исправления.
Сложные агенты, такие как FireAct, LEAP и модели, основанные на обратной связи, такие как RL4VLM и GLAM, пытаются улучшить производительность. Тем не менее, текущие методы либо не могут правильно дорабатывать код на протяжении нескольких шагов, либо слишком нестабильны и неэффективны.
Чтобы решить эти проблемы, исследователи предложили µCODE, метод многоважной генерации кода, который улучшается с помощью обратной связи при выполнении. Существующие подходы сталкиваются с проблемами с ошибками при выполнении и сложностью обучения с подкреплением, но µCODE преодолевает их, следуя структуре итераций экспертов с локальным поисковым экспертом.
Функции µCODE
- Проверяющий оценивает качество кода, а генератор учится на лучших решениях, улучшая свои результаты за несколько итераций. В процессе предсказания стратегия поиска Best-of-N помогает генерировать и улучшать код на основе результатов выполнения, обеспечивая лучшую производительность.
- Первая часть структуры обучает проверщика через обучении с учителем, чтобы оценивать фрагменты кода, что делает оценки более надежными. Двоичная кросс-энтропия и рейтинг Брэдли-Терри предсказывают правильность решений для улучшения отбора.
- Генератор затем учится итеративно, пересматривая прошлые выводы с экспертно выбранными решениями, повышая точность.
- На этапе предсказания создаются несколько решений, и проверщик выбирает лучшее, дорабатывая выводы, пока все тесты не будут успешно пройдены. Рассматривая генерацию кода как задачу имитационного обучения, µCODE устраняет сложные исследования и обеспечивает эффективную оптимизацию.
Исследователи оценили эффективность µCODE путем сравнения его с методами последнего поколения, анализа влияния обученного проверщика во время обучения и предсказания, и оценки различных функций потерь для обучения проверщика.
Генератор был инициализирован с использованием моделей Llama, а эксперименты проводились на наборах данных MBPP и HumanEval. Обучение проводилось на обучающем наборе MBPP с оценками на его тестовом наборе и HumanEval. Сравнения включали одношаговые и многошаговые базовые подходы, такие как STaR и Multi-STaR, где доработка была основана на правильно сгенерированных решениях.
Результаты µCODE
- Производительность измерялась с использованием точности Best-of-N (BoN), при этом проверщик ранжировал кандидатные решения на каждом шаге.
- Результаты показали, что многоважные подходы превосходили одношаговые методы, подчеркивая преимущества обратной связи при выполнении. µCODE превзошел Multi-STaR, достигнув улучшения на 1.9% на HumanEval с моделью в 1B.
- Поиск Bon еще больше улучшил производительность, при этом µCODE показал прирост на 12.8% по сравнению с жадным декодированием. Обученный проверщик (LV) улучшил результаты обучения, превосходя только оракульные проверщики (OV).
- Дополнительный анализ показал, что обученный проверщик помогал выбирать лучшие решения во время предсказания, особенно при отсутствии публичных тестов.
- Масштабирование во время предсказания выявило снижение прироста производительности после определенного количества кандидатных решений.
- Иерархическая стратегия валидации (PT+LV), интегрирующая результаты публичных тестов с оценками обученного проверщика, обеспечила наивысшую производительность, показывая эффективность проверщика в устранении ошибочных решений и создании итеративных предсказаний.
Заключение
В заключение, предлагаемая структура µCODE предоставляет масштабируемый подход к многоважной генерации кода, используя одношаговые награды и обученного проверщика для итеративного улучшения. Результаты показывают, что µCODE превосходит подходы, основанные на оракулах, создавая более точный код. Хотя ограничено размером модели, размером набора данных и фокусом на Python, это может стать прочной основой для будущей работы.
Планы на будущее
Расширение обучающих данных, масштабирование до более крупных моделей и применение к нескольким языкам программирования может еще больше повысить его эффективность.
Дополнительная информация
Ознакомьтесь с доской и страницей GitHub. Все кредит за это исследование идут исследователям этого проекта.
Также, не стесняйтесь подписываться на нас в Twitter и не забудьте присоединиться к нашему сообществу ML на SubReddit с более чем 80 000 участников. Переходите на следующую статью: Набор AI-агентов, готовых для развертывания Divyesh Vitthal Jawkhede и статью «Стройте надежные AI-агенты для обслуживания клиентов с использованием LLMs ».
Подписывайтесь на наш telegram-канал








