Skip to main content
QUICK REVIEW

[논문 리뷰] code2seq: Generating Sequences from Structured Representations of Code

Uri Alon, Shaked Brody|arXiv (Cornell University)|2018. 08. 04.
Software Engineering Research참고 문헌 35인용 수 62
한 줄 요약

이 논문은 소스 코드의 추상 구문 트리(abstract syntax tree, AST)에서 추출한 복합 경로(compositional paths)를 사용해 소스 코드를 인코딩하는 새로운 seq2seq 모델인 code2seq을 소개한다. 이는 코드 요약 및 문서화를 위한 자연어 시퀀스 생성을 더 정확하게 가능하게 한다. 이 모델은 두 가지 프로그래밍 언어에서 네 개의 데이터셋에서 이전 모델들을 능가하며, AST 경로에 대한 어텐션을 활용한 구조적 코드 표현을 통해 최신 기술 수준의 성능을 달성한다.

ABSTRACT

The ability to generate natural language sequences from source code snippets has a variety of applications such as code summarization, documentation, and retrieval. Sequence-to-sequence (seq2seq) models, adopted from neural machine translation (NMT), have achieved state-of-the-art performance on these tasks by treating source code as a sequence of tokens. We present ${ m {\scriptsize CODE2SEQ}}$: an alternative approach that leverages the syntactic structure of programming languages to better encode source code. Our model represents a code snippet as the set of compositional paths in its abstract syntax tree (AST) and uses attention to select the relevant paths while decoding. We demonstrate the effectiveness of our approach for two tasks, two programming languages, and four datasets of up to $16$M examples. Our model significantly outperforms previous models that were specifically designed for programming languages, as well as state-of-the-art NMT models. An interactive online demo of our model is available at this http URL. Our code, data and trained models are available at this http URL.

연구 동기 및 목표

  • 소스 코드의 문법적 구조를 포착함으로써 토큰 시퀀스 모델링을 넘어서 코드 텍스트 생성을 향상시키기 위해.
  • 기존 seq2seq 모델이 코드를 평탄한 토큰 시퀀스로 간주하여 프로그램의 구조를 忽略하는 한계를 해결하기 위해.
  • 추상 구문 트리(abstract syntax tree, AST)에서 복합 경로를 추출하여 코드의 의미 있는 표현을 학습하는 모델을 개발하기 위해.
  • 다양한 프로그래밍 언어와 데이터셋에서 구조적 코드 표현의 효과성을 입증하기 위해.

제안 방법

  • 코드 스니펫을 그의 추상 구문 트리(abstract syntax tree, AST)에서 추출한 복합 경로의 집합으로 표현하며, 각 경로는 노드 간의 문법적 관계를 포착한다.
  • 딥 네트워크를 사용해 각 경로를 조밀한 벡터 표현으로 임베딩하여 의미적 및 문법적 정보를 유지한다.
  • 디코딩 중에 관련된 AST 경로에만 집중하는 어텐션 메커니즘을 적용하여 맥락 인식 기반의 시퀀스 생성을 가능하게 한다.
  • 자연어 생성을 위한 교차 엔트로피 손실을 사용하는 시퀀스-투-시퀀스 프레임워크를 통해 모델을 엔드 투 엔드로 훈련한다.
  • AST의 계층적이고 구조적인 특성을 활용하여 코드 생성에서 일반화 및 표현 학습을 향상시킨다.
  • 최대 1600만 개의 예제를 포함하는 데이터셋에 모델을 스케일링하여 다양한 프로그래밍 작업에서 견고한 성능을 달성한다.

실험 결과

연구 질문

  • RQ1평탄한 토큰 시퀀스 대비 복합 경로 기반의 AST 표현을 사용할 경우 코드 텍스트 생성 성능이 향상되는가?
  • RQ2AST 경로에 대한 어텐션 메커니즘이 정확하고 관련성이 높은 자연어 기술을 생성하는 데 모델의 능력을 어떻게 향상시키는가?
  • RQ3제안된 구조적 표현 방식은 다양한 프로그래밍 언어와 코드 생성 작업 간에 일반화되는가?
  • RQ4code2seq은 자연어 기계 번역(NMT) 및 프로그래밍 전용 모델의 최신 기술 수준 모델들과 비교해 성능 및 견고성 면에서 어떻게 성과를 내는가?

주요 결과

  • code2seq는 프로그래밍 언어에 특화된 이전 모델들보다 코드 요약 작업에서 뚜렷이 뛰어난 성능을 보였다.
  • 두 가지 프로그래밍 언어를 포함한 네 개의 데이터셋에서 최신 기술 수준의 성능을 달성하여 강력한 일반화 능력을 입증했다.
  • AST 경로와 어텐션을 활용함으로써 토큰 시퀀스에만 의존하는 모델보다 더 의미적으로 유의미한 코드 표현을 학습했다.
  • 모델의 성능은 스케일이 증가하더라도 견고하여 최대 1600만 개의 예제를 포함한 데이터셋에서도 높은 정확도를 달성했다.

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

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

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

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