Skip to main content
QUICK REVIEW

[논문 리뷰] Leveraging Grammar and Reinforcement Learning for Neural Program Synthesis

Rudy Bunel, Matthew Hausknecht|arXiv (Cornell University)|2018. 05. 11.
Software Engineering Research참고 문헌 24인용 수 67
한 줄 요약

이 논문은 강화 학습을 감독 학습 및 구문 인식 디코딩과 결합하여 주어진 IO 명세를 만족하는 구문적으로 올바른 프로그램을 생성하고 데이터 효율성을 향상시키며 신경 프로그램 합성에서 프로그램 별칭 문제를 처리한다.

ABSTRACT

Program synthesis is the task of automatically generating a program consistent with a specification. Recent years have seen proposal of a number of neural approaches for program synthesis, many of which adopt a sequence generation paradigm similar to neural machine translation, in which sequence-to-sequence models are trained to maximize the likelihood of known reference programs. While achieving impressive results, this strategy has two key limitations. First, it ignores Program Aliasing: the fact that many different programs may satisfy a given specification (especially with incomplete specifications such as a few input-output examples). By maximizing the likelihood of only a single reference program, it penalizes many semantically correct programs, which can adversely affect the synthesizer performance. Second, this strategy overlooks the fact that programs have a strict syntax that can be efficiently checked. To address the first limitation, we perform reinforcement learning on top of a supervised model with an objective that explicitly maximizes the likelihood of generating semantically correct programs. For addressing the second limitation, we introduce a training procedure that directly maximizes the probability of generating syntactically correct programs that fulfill the specification. We show that our contributions lead to improved accuracy of the models, especially in cases where the training data is limited.

연구 동기 및 목표

  • 단일 참조 프로그램이 아니라 의미적으로 올바른 임의의 프로그램을 최적화하여 프로그램 별칭 문제를 해결한다.
  • 프로그램 구문을 활용하여 탐색 공간을 줄이고 구문적 정확성을 강제한다.
  • 정식 문법이 사용 가능하지 않을 때 구문 학습을 가능하게 한다.
  • 제한된 학습 데이터로 Karel DSL에서 이 접근법을 시연하여 데이터 효율성을 보여준다.

제안 방법

  • 입출력 쌍의 임베딩에 조건부로 작동하는 순차적인 LSTM 기반 모델을 사용하고, IO 쌍별로 하나의 디코더를 두고 디코더들에 대한 최대풀링으로 다음 토큰을 예측한다.
  • DSL 알파벳의 토큰 시퀀스로 프로그램을 표현하고 기초로서 감독 최대우도(MLE)로 학습한다.
  • IO 예제에 대한 정확성에 대해 보상 R(lambda)를 사용하는 강화 학습을 도입하고 샘플링(REINFORCE)을 통해 목적함수를 근사한다.
  • 학습과 테스트 시 디코딩을 일치시키기 위해 빔탐색 기반 샘플링(BS(p_theta, S))으로 학습을 개선한다.
  • 구문 검사기를 선택적으로 도입하여 디코더 출력에 마스크를 적용해 잘못된 접두사를 제거한다(stx 조건화).
  • 합성된 구문 검사기 g_phi를 제안하여 구문적으로 잘못된 토큰에 페널티를 부과하고 그 출력을 디코더에 추가하는 공동 아키텍처를 제시한다.

실험 결과

연구 질문

  • RQ1강화 학습이 단일 정답 프로그램이 아닌 IO 명세와 일치하는 임의의 프로그램 생성을 직접 최적화할 수 있는가?
  • RQ2명시적 구문 인식 가지치기가 구문적으로 유효하고 올바른 프로그램의 생성을 개선하는가?
  • RQ3명시적 문법이 사용 가능하지 않은 경우 구문을 공동으로 학습하는 것이 성능에 어떻게 영향을 미치는가?
  • RQ4이 방법은 데이터 효율적이며 Karel DSL에서 제한된 학습 데이터로도 잘 작동하는가?

주요 결과

  • 정확성을 목표로 하는 강화 학습은 더 큰 학습 세트에서 특히 순위 1 일반화 성능을 순수 지도 학습보다 향상시킨다.
  • 학습과 일치하는 빔 탐색 기반 샘플링(RL_beam 변형)은 표준 RL 또는 MLE보다 더 나은 일반화와 올바른 프로그램의 다양성을 산출한다.
  • 다양성 촉진 목표(RL_beam_div, RL_beam_div_opt)는 중복을 줄이고 상위 예측의 상대 정확도를 향상시킨다.
  • 구문 검사기(손으로 작성되었거나 학습된 것)를 사용해 공간을 가지치면 성능이 향상되며, 데이터가 제한될 때 학습된 구문이 잘 작동한다.
  • RL 방법은 제한된 데이터에서 더 두드러진 이점을 보이며, 프로그램 합성의 데이터 효율성 향상을 시사한다.

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

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

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

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