Skip to main content
QUICK REVIEW

[논문 리뷰] Neuro-Symbolic Program Synthesis

Emilio Parisotto, Abdelrahman Mohamed|arXiv (Cornell University)|2016. 11. 06.
Software Testing and Debugging Techniques인용 수 105
한 줄 요약

논문은 Neuro-Symbolic Program Synthesis(NSPS) 프레임워크를 소개한다. 입력-출력 예시에서 DSL 기반 프로그램을 생성하는 방법을 학습하며, I/O 인코딩에 조건된 Recursive-Reverse-Recursive Neural Network(R3NN)을 사용하고, 정규식 기반 문자열 변환에 대해 시연한다.

ABSTRACT

Recent years have seen the proposal of a number of neural architectures for the problem of Program Induction. Given a set of input-output examples, these architectures are able to learn mappings that generalize to new test inputs. While achieving impressive results, these approaches have a number of important limitations: (a) they are computationally expensive and hard to train, (b) a model has to be trained for each task (program) separately, and (c) it is hard to interpret or verify the correctness of the learnt mapping (as it is defined by a neural network). In this paper, we propose a novel technique, Neuro-Symbolic Program Synthesis, to overcome the above-mentioned problems. Once trained, our approach can automatically construct computer programs in a domain-specific language that are consistent with a set of input-output examples provided at test time. Our method is based on two novel neural modules. The first module, called the cross correlation I/O network, given a set of input-output examples, produces a continuous representation of the set of I/O examples. The second module, the Recursive-Reverse-Recursive Neural Network (R3NN), given the continuous representation of the examples, synthesizes a program by incrementally expanding partial programs. We demonstrate the effectiveness of our approach by applying it to the rich and complex domain of regular expression based string transformations. Experiments show that the R3NN model is not only able to construct programs from new input-output examples, but it is also able to construct new programs for tasks that it had never observed before during training.

연구 동기 및 목표

  • 순수 신경망 기반 프로그램 유도 방법의 한계를 극복하기 위해 계산 비용, 작업 특화 모델 및 해석 가능성의 문제를 제시하는 신경-상징적 접근법을 제안한다.
  • I/O 예시를 조건으로 하는 DSL 프로그램에 대한 생성 모델을 학습시켜 일관된 프로그램의 자동, 테스트 시 구성 가능성을 가능하게 한다.
  • FlashFill에서 영감을 얻은 복잡한 문자열 변환 DSL에서의 효과를 시연하고, 보지 못한 작업 및 실제 벤치마크에 대한 일반화를 평가한다.

제안 방법

  • 입력-출력 예시 집합의 연속 표현을 생성하기 위한 교차상관(I/O) 네트워크를 제안한다.
  • 부분 프로그램을 점진적으로 완전한 DSL 트리로 확장하기 위해 Recursive-Reverse-Recursive Neural Network(R3NN)을 도입한다.
  • DSL 프로그램을 파스 트리로 인코딩하고 리프 및 규칙 표현과 전역 트리 상태를 사용한 트리 구조 확률 생성을 통해 인코딩한다.
  • I/O 인코딩( LSTM 기반, 교차상관, 보강된 교차상관 인코더와 같은 변형 포함)으로 프로그램 생성을 조건화한다.
  • 생성된 I/O 예시를 포함한 대규모 DSL 프로그램 세트에 대해 엔드-투-엔드로 학습시켜 I/O 명세에 부합하는 확장의 선호를 학습한다.

실험 결과

연구 질문

  • RQ1NSPS가 명시적 탐색 없이 주어진 입력-출력 예시에 일치하는 DSL 기반 프로그램을 합성할 수 있는가?
  • RQ2R3NN 기반 생성이 정규식 기반 문자열 변환 DSL에서 보지 못한 프로그램 및 보지 못한 I/O 쌍에 대해 얼마나 일반화되는가?
  • RQ3다른 I/O 인코더가 프로그램 합성의 정확도와 일반화에 어떤 영향을 미치는가?
  • RQ4I/O 조건화에서 DSL 트리를 생성하기 위한 io2seq 접근법과 NSPS를 비교하면 어떠한 차이가 있는가?
  • RQ5실제 FlashFill 벤치마크에서 해결 가능한 작업 수와 프로그램 크기 제약 측면에서 시스템의 성능은 어느 정도인가?

주요 결과

  • NSPS는 학습 중에 보지 않은 새 I/O 예시 및 작업에 대해서도 프로그램을 합성할 수 있다.
  • 핵심 벤치마크에서 보지 않은 작업에 대해 63%의 성공률, 모델에서 100개의 프로그램을 샘플링했을 때 94%를 보고한다.
  • NSPS는 실제 FlashFill 벤치마크 중 238개 중 크기-13 DSL 한도 내에서 38%를 학습한다.
  • 적절한 I/O 조건화와 함께 R3NN은 io2seq보다 현저히 우수하며, 100샘플 조건에서 io2seq는 약 42%에 도달한 반면 R3NN은 91%에 도달한다.
  • I/O 인코딩을 사전 조건화하는 것이 후 혹은 루트 조건화보다 더 나은 결과를 낳았다.
  • 백트래킹(여러 프로그램 샘플링)은 정확도를 현저히 높이며 충분한 샘플(예: 300 샘플)일 때 거의 완벽한 결과에 도달한다.
  • FlashFill 벤치마크에서 10샘플 결과만으로는 약 13%를 해결하는 반면, 더 폭넓은 샘플링(최대 2000 샘플)에서는 약 38%로 향상된다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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