Лівий стіл
2 COCOGEN: Представляючи структури Commonsense з кодом і 2.1 Конвертування (T, G) в код Python
2.2 Невеликий поштовх для генерації G
3 Оцінка та 3.1 Експериментальна установка
3.2 Сценарій генерації: PROSCRIPT
3.3 Відстеження стану суб'єкта: PROPARA
3.4 Виробництво графічних аргументів: EXPLAGRAPHS
6 Висновок, визнання, обмеження та посилання
Оцінка розмірів моделі Few-Shot
G Проектування класу Python для структурованого завдання
2 COCOGEN: Представляючи структури Commonsense за допомогою коду
Ми зосереджуємося на завданнях структурованого генерування загального глузду. Кожен тренінговий приклад для таких завдань знаходиться у формі (T, G), де T є текстовим введенням, а G є структурою, яку потрібно генерувати (зазвичай граф). Ключова ідея COCOGEN полягає в перетворенні вихідного графу G в семантично еквівалентну програму Gc, написану на мові програмування загального призначення. У цій роботі ми вибрали Python через його популярність у навчальних даних сучасних CodeLLMs (Xu et al., 2022), але наш підхід є агностичним до мови програмування. Перетворені графи коду схожі у своєму форматі з даними попереднього навчання Code-MLLs, і таким чином служать легше
Ми використовуємо завдання генерації сценаріїв (PROSCRIPT, малюнок 1) як приклад, щоб мотивувати наш метод: генерація сценаріїв спрямована на створення сценарію (G) для досягнення певної мети високого рівня (T).
2.1 Перетворення (T, G) в код Python
Ми перетворюємо пару (T, G) в клас або функцію Python. Загальна процедура включає в себе додавання вхідного тексту T на початку коду як атрибуту класу або опису і кодування структури G за допомогою стандартних конструкцій для представлення структури в коді (наприклад, хеш-карти, об'єктні атрибути) або виклики функцій.
Наприклад, для завдання генерації скриптів ми конвертуємо (T, G) пару в клас Дерева (рис. 1b). Мета T додається як атрибут класу (цель), а скрипт G додається шляхом переліку вузлів і країв окремо. Ми спочатку інстантифікуємо список вузлів як об'єкти класу Node. Потім країни додаються як атрибут дітей для кожного вузла (рис. 1b). Наприклад, ми інстантифікуємо вузол "Вилучити кілька пластин" як take_out_several_plates = Node(), і додаємо його як дитину вузла take_pies_out_to_cool.
Хоча існує кілька способів представлення прикладу навчання як класу Python, ми empirically виявили, що цей відносно простий формат є найбільш ефективним, особливо з більшими моделями.
2.2 Невеликий поштовх для генерації G
У наших експериментах ми використовували CODEX (Chen et al., 2021a) і виявили, що він майже завжди генерує синтактично дійсний Python. Таким чином, генерований код можна легко перетворити назад в графік і оцінити, використовуючи стандартну, оригінальну, метрику набору даних.
Цей документ доступний під ліцензією CC BY 4.0 DEED.
ІЦей документ єДоступно в архівіЛіцензія CC BY 4.0 DEED.
Автори :
І(1) Aman Madaan, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
І(2) Шуян Чжоу, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
І(3) Урі Алон, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
І(4) Yiming Yang, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
І(5) Грем Нейбіг, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]).
ІAuthors:
(1) Aman Madaan, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
(2) Шуян Чжоу, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
(3) Урі Алон, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
(4) Yiming Yang, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]);
(5) Грем Нейбіг, Інститут мовних технологій, Університет Карнегі Меллон, США ([email protected]).