Skip to main content
QUICK REVIEW

[논문 리뷰] Deep API Programmer: Learning to Program with APIs

Surya Bhupatiraju, Rishabh Singh|arXiv (Cornell University)|2017. 04. 14.
Web Data Mining and Analysis참고 문헌 8인용 수 11
한 줄 요약

이 논문은 데이터 변환을 위한 API 함수를 중심으로 하는 도메인 특화 언어(DSL)를 사용하여 입력-출력 예제를 기반으로 프로그램을 자동으로 합성하는 딥러닝 기반의 Programming-By-Example 시스템인 Dapip을 소개한다. 이 시스템은 교차 상관관계 인코더와 순환-역순환 신경망(R3NN)을 활용하여 입력-출력 예제를 인코딩하고 DSL 공간을 탐색하며, 실제 FlashFill 벤치마크에서 45%의 정확도를 달성하여 순열 기반 기준선보다 뚜렷이 뛰어나다.

ABSTRACT

We present DAPIP, a Programming-By-Example system that learns to program with APIs to perform data transformation tasks. We design a domain-specific language (DSL) that allows for arbitrary concatenations of API outputs and constant strings. The DSL consists of three family of APIs: regular expression-based APIs, lookup APIs, and transformation APIs. We then present a novel neural synthesis algorithm to search for programs in the DSL that are consistent with a given set of examples. The search algorithm uses recently introduced neural architectures to encode input-output examples and to model the program search in the DSL. We show that synthesis algorithm outperforms baseline methods for synthesizing programs on both synthetic and real-world benchmarks.

연구 동기 및 목표

  • 기존 PBE 시스템이 의미적 데이터 변환에 한계가 있는 고정된, 저수준의 DSL에 의존하는 문제를 해결하기 위해.
  • 수작업 히ュ리스틱 설계의 필요성을 줄이기 위해 데이터로부터 신경망 기반 합성 알고리즘을 자동으로 학습시키기 위해.
  • 기능 기반 DSL과 딥러닝 신경망을 활용하여 복잡한 데이터 변환 작업을 위한 효율적이고 확장 가능한 프로그램 합성 기법을 제공하기 위해.
  • 학습 가능한 표현을 갖는 API를 일급 구성요소로 모델링하여 프로그램 합성의 일반화 능력과 확장성을 향상시키기 위해.

제안 방법

  • 정규식 기반, 룩업, 변환 API로 구성된 세 가지 API 패밀리로 이루어진 도메인 특화 언어(DSL)를 설계하여 문법적 및 의미적 변환을 수행한다.
  • 양방향 LSTMs를 기반으로 한 교차 상관관계 인코더를 사용하여 입력-출력 예제의 고정된 차원 벡터 표현을 생성한다.
  • 순환-역순환 신경망(R3NN)을 활용하여 점진적인 프로그램 유도를 모델링하고 DSL 내에서 유효한 확장을 예측한다.
  • 수천 개의 합성 프로그램과 그에 해당하는 입력-출력 예제를 기반으로 인코더와 R3NN를 엔드 투 엔드로 훈련하여 신경망 기반 합성 정책을 학습한다.
  • 학습된 모델을 활용하여 수작업 규칙 설계 없이 입력-출력 예제와 일치하는 프로그램을 생성하는 신경망 기반 프로그램 탐색을 수행한다.
  • API 조합의 표현력과 신경망 일반화 능력을 활용하여 실제 벤치마크에 대한 일반화를 가능하게 한다.

실험 결과

연구 질문

  • RQ1함수 API 중심의 DSL에서 저수준 문자열 연산이 아닌 신경망 기반 합성 알고리즘이 효과적으로 프로그램을 생성할 수 있는가?
  • RQ2학습된 신경망 기반 탐색 전략이 데이터 변환 작업의 프로그램 합성에서 전통적인 순열 기반 탐색 방법보다 어느 정도 뛰어나게 성능을 발휘할 수 있는가?
  • RQ3신경망 모델이 다양한 데이터 정제 패턴, 예를 들어 날짜를 월 이름으로 변환하거나 주 약어를 풀어내는 등의 의미적 변환 패턴에 대해 일반화할 수 있는가?
  • RQ4조합적 구조를 갖는 API 중심의 DSL을 사용할 경우 신경망 기반 프로그램 합성의 확장성과 정확도에 어떤 영향을 미치는가?

주요 결과

  • Dapip는 238개의 실제 FlashFill 벤치마크에서 45%의 정확도를 달성하여 기존 순열 기반 기준선 방법보다 뚜렷이 뛰어나다.
  • 신경망 기반 합성 기법은 이름 약어화나 주소 파싱과 같은 새로운 데이터 정제 작업에 대해서도 잘 일반화된다.
  • 교차 상관관계 인코더는 입력-출력 관계를 효과적으로 포착하여 최소한의 예제로 정확한 프로그램 예측을 가능하게 한다.
  • R3NN 아키텍처는 부분 유도를 모델링하고 유효한 API 확장을 예측함으로써 효율적이고 점진적인 프로그램 구축을 가능하게 한다.
  • 신경망 구성 요소의 엔드 투 엔드 훈련이 수작업으로 설계된 히ュ리스틱을 대체할 수 있으며, 이로 인해 엔지니어링 오버헤드가 감소한다.
  • 일급 API를 갖는 DSL 설계 덕분에 기존 PBE DSL보다 더 간결하고 표현력 있는 프로그램을 생성할 수 있었으며, 이는 모델의 일반화 능력을 향상시켰다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.