Исследователи Google DeepMind предлагают Chain of Code (CoC) простое, но удивительно эффективное расширение, улучшающее языковую модель и кодовое рассуждение.

Google DeepMind представляет Chain of Code (CoC) удивительно эффективное расширение, повышающее языковую модель и кодовое рассуждение

Исследователи из Google DeepMind, Университета Стэнфорда и Университета Калифорнии, Беркли разработали цепочку кода, которая решает проблему улучшения кодового рассуждения моделей языка. Цепочка кода позволяет ЛМ форматировать семантические подзадачи в программе в виде гибкого псевдокода, который интерпретатор может явно обнаружить неопределенное поведение и перейти к симуляции с использованием ЛМ (как «ЛМулятора»). CoC хорошо масштабируется с использованием больших и маленьких моделей, а также расширяет спектр вопросов рассуждения, на которые ЛМ может правильно ответить, мысля кодом.

Проекты, подобные Chain of Thought, least-to-most и ScratchPad, используют подсказки для улучшения рассуждений, разбивая задачи на промежуточные шаги или поддерживая следы промежуточных результатов. ЛМ, обученные на Github, при подсказке пишут и выполняют код, что помогает решать сложные вопросы, связанные с численными или символическими рассуждениями.

Для решения данной проблемы CoC генерирует подэлементы рассуждения в структуре кода. Этот код предоставляет рамки рассуждения и может быть явным кодом, псевдокодом или естественным языком. CoC позволяет использовать код в совершенно новых режимах, объединяя преимущества кода с мощными семантическими и здравым смыслом знаниями ЛМ, которые могут легко выразить сложно формулируемые правила на языке кода (например, какие продукты являются фруктами?).

Основной вклад CoC заключается не только в создании кода рассуждения, но и в его выполнении. После написания кода он пытается быть выполнен интерпретатором кода — в данной работе исследователи рассматривают Python, но подход является общим для любого интерпретатора. Если код успешно выполняется, состояние программы обновляется, и выполнение продолжается. Если код не может быть выполнен или вызывает исключение, вместо этого используется языковая модель для симуляции выполнения. Выходы языковой модели обновляют состояние программы, и выполнение продолжается.

Общая производительность подхода CoC превосходит другие методы, превышая базовый уровень человека по количеству выполненных задач и общему количеству операций, превышающих базовый уровень. CoC демонстрирует современные результаты в нескольких исследованиях. Он показывает улучшение производительности по мере увеличения размеров модели, подобно подсказке Chain of Thought. Результаты перекрестной задачи приводят к снижению производительности всех методов, но CoC все же превосходит Chain of Thought и прямую подсказку в масштабе, приближаясь к средней производительности человека.

CoC является подходом к рассуждению с моделями языка через написание кода и выполнение кода с использованием интерпретатора или языковой модели, которая симулирует выполнение, если код не является исполнимым. CoC может использовать как выразительную структуру кода, так и мощные инструменты. Более того, симулируя выполнение невыполнимого кода, CoC может применяться к проблемам, номинально выходящим за рамки области кода (например, проблемы семантического рассуждения).