[논문 리뷰] ANPL: Towards Natural Programming with Interactive Decomposition
ANPL은 사용자가 스케치와 구멍 패러다임을 통해 복잡한 프로그래밍 작업을 구조적이고 모듈화된 구성요소로 분해할 수 있도록 해주는 상호작용 프로그래밍 시스템이다. 제어/데이터 흐름은 수동으로 정의된 스케치이며, 기능의 실행 구현은 LLM을 통해 생성된다(구멍). 이는 전체 프로그램의 구조를 유지하면서 국소적이고 반복적인 개선을 가능하게 하여 어려운 작업에서 사용자 성능을 크게 향상시킨다. ARC에서 ANPL은 75.0%의 작업 성공률를 기록했고, 일반적인 LLM 사용 시 58.4%에 그치는 바, 이는 프로그램 전체를 재처리하지 않아도 되는 국소적 수정이 가능하기 때문이다.
Though LLMs are capable of generating plausible programs, it's challenging to interact with the LLMs further to revise the program, especially if the user's specific requirements are different from the initial proposal. In this paper, we introduce ANPL, an interactive programming system that ensures users can always refine the generated code towards their specific programmatic intents via structured decompositions. Borrowing the paradigm of sketching from program synthesis, an ANPL program consists of a set of input-outputs that it must satisfy, a ``sketch'' -- control/data flow expressed in precise code (e.g. Python), and ``holes'' -- sub-modules to be implemented by the LLM specified with natural language. The user revises an ANPL program by either modifying the sketch, changing the language used to describe the holes, or providing additional input-outputs to a particular hole, turning it into a sub-ANPL program that can be solved recursively. This workflow allows the users to offload programming burdens to the LLM as much as possible while retaining the ability to pinpoint and resolve bugs locally, without exposing the rest of the program to the LLM. We deploy ANPL on the Abstraction and Reasoning Corpus (ARC), a set of unique tasks that are challenging for state-of-the-art AI systems, showing it outperforms baseline programming systems that (a) without the ability to decompose tasks interactively and (b) without the guarantee that the modules can be correctly composed together. Additional evaluations on APPS, HumanEval, and real-world programming tasks have validated that the ANPL framework is applicable to multiple programming domains. We release the ANPL solutions to the ARC tasks as a dataset, providing insights into how humans decompose novel tasks programmatically. See our code at https://iprc-dip.github.io/ANPL/.
연구 동기 및 목표
- 초기 출력이 잘못되거나 불완전할 경우, LLM에 의해 생성된 코드의 반복적 디버깅과 개선 과정의 과제를 해결하기 위해.
- LLM이 실행 세부 사항을 위임하면서도 사용자가 프로그램의 구조를 제어할 수 있도록 모듈화되고 상호작용적인 프레임워크를 제공하기 위해.
- 큰 단일 프로그램에서 디버깅의 인지 부담을 줄이기 위해 개별 구성요소에 국한된 수정을 가능하게 하기 위해.
- 재귀적 분해와 검증을 지원하는 체계적인 인간-중심 프로그램 합성 접근법을 제공하기 위해.
- 추상적 추론 및 프로그래밍 작업을 위한 인간이 애너테이션한 작업 분해를 담은 새로운 데이터셋(DARC)을 생성하기 위해.
제안 방법
- ANPL 프로그램은 사용자가 정의한 스케치(정확한 코드로 구현된 제어 및 데이터 흐름, 예: 파이썬)와 LLM이 생성한 구멍(자연어로 기술된 함수 모듈)의 조합으로 구성된다.
- 각 구멍은 자체적으로 독립된 하위-ANPL 프로그램이므로 재귀적 분해와 별도의 개선이 가능하다.
- 시스템은 ANPL 코드를 실행 가능한 파이썬으로 컴iles하고, 입력-출력 테스트 케이스에 대해 검증하며, 오류가 발생할 경우 상세한 디버깅 트레이스를 생성한다.
- 사용자는 스케치 수정, 구멍의 자연어 기술 재작성, 또는 새로운 입력-출력 예시 제공를 통해 구멍을 하위-ANPL 작업으로 전환함으로써 프로그램을 개선할 수 있다.
- 이 프레임워크는 반복적 상호작용을 지원한다: 실패 후 사용자는 오직 고장난 구멍에만 집중하며, 나머지 프로그램의 구조를 유지한다.
- 시스템은 19명의 파이썬 프로그래머가 400개의 ARC 작업에 대해 총 440인정 시간 동안 수행한 대규모 인간 연구를 통해 평가되었으며, 일반적인 LLM 상호작용과의 비교가 이루어졌다.
실험 결과
연구 질문
- RQ1일괄적 LLM 생성과 비교해 복잡한 프로그래밍 작업을 해결하는 데 있어 상호작용적 분해가 성공률를 크게 향상시킬 수 있는가?
- RQ2스케치와 자연어 기반의 구멍을 통한 구조적 분해는 LLM에 의해 생성된 프로그램의 사용성과 유지보수성에 어떤 영향을 미치는가?
- RQ3사용자가 전체 프로그램을 다시 처리하지 않고도 디버깅 작업을 얼마나 국소화할 수 있는가?
- RQ4추상적 추론 및 프로그래밍 작업에서 인간이 애너테이션한 작업 분해로부터 어떤 통찰을 얻을 수 있는가?
- RQ5ANPL 프레임워크는 합성 벤치마크를 초월해 다양한 프로그래밍 도메인으로 일반화될 수 있는가?
주요 결과
- ANPL은 추상화 및 추론 코퍼스(ARC)에서 75.0%의 작업 성공률를 기록했으며, 일반적인 LLM 상호작용(58.4%)보다 뚜렷이 높았다.
- 시스템은 사용자가 오직 고장난 구멍에만 집중함으로써 디버깅의 인지 부담을 줄였으며, 전체 프로그램의 구조적 통합성을 유지했다.
- 300개의 ARC 작업에 대한 인간이 애너테이션한 분해를 포함한 DARC 데이터셋은 인간-LLM 협업을 통한 프로그램 합성 연구에 유용한 자원을 제공한다.
- 사용자는 평균적으로 한 작업당 20회 이내의 상호작용을 필요로 했으며, 시스템 A(작업당 10.76회 API 호출)와 시스템 B(작업당 4.81회 API 호출)는 효율적인 상호작용 패턴을 보였다.
- 사례 연구에서는 사용자가 자연어 기술을 개선하거나 새로운 입력-출력 예시를 추가함으로써 잘못된 LLM 생성 함수를 성공적으로 수정하는 것을 확인했다.
- 이 프레임워크는 APPS, HumanEval 및 실제 프로그래밍 작업을 포함한 다양한 도메인에서 효과적이었으며, 일반화 가능성은 확인되었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.