Исследователи MIT представляют LILO нейросимволическую систему для изучения интерпретируемых библиотек для синтеза программ.

Ученые MIT представляют LILO нейросимволическую систему для изучения интерпретируемых библиотек в сфере программного синтеза.

“`html

Большие языковые модели (LLMs) все более умело программировать в различных контекстах, таких как завершение частично написанного кода, взаимодействие с человеческими программистами и даже решение сложных программистских загадок на уровне соревнований. Однако разработчики программного обеспечения больше заинтересованы в создании библиотек, которые могут быть использованы для решения целых проблемных областей, чем в завершении текущей работы. В этой связи навык рефакторинга-нахождения абстракций, которые делают кодовую базу более читаемой (интуитивно понятной для других программистов), повторно используемой (обобщающей для новых задач) и компактной (консолидирующей общую структуру), является важной составляющей программной разработки. Для решения этой многокритериальной оптимизации необходимо расширить возможности текущих инструментов автодополнения кода-которые в настоящее время используются миллионами программистов-в области изучения библиотек.

В данном исследовании они объединяют языковые модели с текущими алгоритмическими достижениями в области автоматического рефакторинга из литературы языков программирования (PL). Исследователи из MIT CSAIL, MIT Brain and Cognitive Sciences и Harvey Mudd College представляют LILO – нейросимволическую систему, состоящую из трех взаимосвязанных модулей (рис. 1) для индукции библиотек из наблюдений в языке:

• Модуль синтеза двойной системы, который использует два различных подхода для поиска ответов на задачи программирования: благодаря сильным общегенерализованным алгоритмам, вводимым в систему с помощью LLM-управляемого поиска, можно найти доменно-специфичные выражения через перечислительный поиск.

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

• Модуль автодокументирования (AutoDoc), который создает понятные людям строки документации и имена функций, улучшая интерпретируемость и облегчая LLM-управляемый поиск в последующем.

Их концепция основана на итеративном алгоритме Wake-Sleep DREAMCODER, который чередует поиск решений программных задач (фаза Wake) и переписывание общих абстракций в библиотеку (фаза Sleep), что помогает направлять поиск. Отличие DreamCoder состоит в том, что он может извлекать значительные обобщения из небольшого количества выборок, а изученная библиотека символически представляет концептуальные знания модели. Но процесс поиска DreamCoder настолько вычислительно сложен, что изучение одной области занимает более двух месяцев процессорного времени.

Рисунок 1: Обзор цикла обучения LILO. (Al) С использованием двухсистемной методологии поиска, LILO создает программы из описаний задач, написанных простым языком. LILO объединяет автоматическую документацию, создаваемую LLM (C), с методом сжатия STITCH (B), для переструктурирования набора программных решений и создания интерпретируемой библиотеки λ-абстракций. Этот цикл поиска-сжатия-документирования упрощает структуру программных решений (А против D), что облегчает решение все более сложных задач в последующих раундах.

Значительная часть времени поиска уходит на “встраивание” – поиск базового набора абстракций, с которыми программисты уже знакомы или могут быстро осознать благодаря предыдущему опыту решения проблем в конкретной области. Кроме того, библиотеки DreamCoder не всегда интерпретируемы; их понимание требует знания предметной области и понимания лямбда-исчисления. Для решения этих проблем LILO использует LLM в двух инновационных направлениях: (1) для быстрого поиска программных решений во время поиска и (2) для улучшения документирования изученных библиотек, чтобы сделать их более понятными. На трех сложных доменах синтеза программ-редактирование строк с использованием регулярных выражений, рассуждение о сценах на наборе данных CLEVR и композиция графики в 2D-GLogo язык графики черепахи-они сравнивают LILO с эквивалентной версией DreamCoder, управляемой языком.

По сравнению с DreamCoder, LILO завершает больше задач на всех трех доменах и изучает более эмпирически богатые библиотеки, которые содержат абстракции, невозможные для обнаружения с использованием существующих техник. Например, LILO осознает понятие гласного звука, важного первого шага в области редактирования строк, поскольку это позволяет избежать поиска более 265 потенциальных комбинаций первоначальных примитивных символов. LILO сжимает эту информацию в символические абстракции, полезные как для традиционных методов поиска, так и для LLM-управляемого синтеза, в отличие от базовых LLM, которые могут выполнять сравнимые задачи. Их модуль AutoDoc является неотъемлемой частью этой нейросимволической интеграции, поскольку он улучшает интерпретируемость и облегчает лучшее использование библиотеки синтезатором LLM. LILO показывает, как концепции и ресурсы из сферы языков программирования могут сочетаться с текущими достижениями в области языкового моделирования.

“`