Skip to main content
QUICK REVIEW

[논문 리뷰] Structural Language Models for Any-Code Generation.

Uri Alon, Roy Sadaka|arXiv (Cornell University)|2019. 09. 25.
Software Engineering Research참고 문헌 24인용 수 11
한 줄 요약

이 논문은 구조적 언어 모델링(SLM)을 소개한다. SLM은 코드를 순서형 시퀀스가 아니라 추상구문트리(AST)로 모델링함으로써 어떤 프로그래밍 언어에서든 임의의 표현식을 제약 없이 생성할 수 있는 새로운 접근법이다. SLM은 각 노드에 도달하는 모든 경로를 고려하여 노드 간 조건부 확률을 계산함으로써, 기존의 seq2seq 및 이전의 구조적 방법보다 자바와 C# 코드 생성에서 뚜렷한 성능 향상을 이룬다.

ABSTRACT

We address the problem of Any-Code Generation (AnyGen) - generating code without any restriction on the vocabulary or structure. The state-of-the-art in this problem is the sequence-to-sequence (seq2seq) approach, which treats code as a sequence and does not leverage any structural information. We introduce a new approach to AnyGen that leverages the strict syntax of programming languages to model a code snippet as a tree - structural language modeling (SLM). SLM estimates the probability of the program's abstract syntax tree (AST) by decomposing it into a product of conditional probabilities over its nodes. We present a neural model that computes these conditional probabilities by considering all AST paths leading to a target node. Unlike previous structural techniques that have severely restricted the kinds of expressions that can be generated, our approach can generate arbitrary expressions in any programming language. Our model significantly outperforms both seq2seq and a variety of existing structured approaches in generating Java and C# code. We make our code, datasets, and models available online.

연구 동기 및 목표

  • 코드 생성에서 순서형 시퀀스 모델의 한계를 해결하기 위해, 즉 구조적 문법을 忽시하고 어휘 및 표현 다양성을 제한하는 것을 방지하기 위해.
  • 어떤 프로그래밍 언어에서든 임의의 표현식과 제약 없는 어휘를 지원하는 Any-Code 생성(AnyGen)을 가능하게 하기 위해.
  • 모든 관련 경로를 사용해 AST 노드 간 조건부 확률을 계산하는 신경망 모델을 개발하여, 이전 방법보다 더 효과적으로 구조적 의존성을 포착하기 위해.
  • 기존의 seq2seq 및 구조적 생성 접근법보다 코드 생성 품질과 유연성에서 뛰어난 성능을 내기 위해.

제안 방법

  • 모델은 코드를 추상구문트리(AST)로 표현하고, 전체 AST의 확률을 노드 간 조건부 확률의 곱으로 추정한다.
  • 조건부 확률은 목표 노드로 이르는 AST 내 모든 경로를 고려하여 계산되며, 이는 맥락 인식 생성을 가능하게 한다.
  • 이러한 조건부 확률은 AST의 구조적 패턴을 학습하는 데 사용되는 신경망 아키텍처를 통해 계산된다.
  • 이 방법은 AST 생성 작업을 구조적 맥락에 따라 안내되는 노드 단위 예측의 시퀀스로 분해한다.
  • 이전의 구조적 방법과 달리, SLM은 생성 가능한 표현식의 유형이나 복잡성에 제약을 두지 않는다.
  • 모델은 다양한 프로그래밍 언어에서 유효한 코드 구조를 학습할 수 있도록 코드 데이터셋에서 엔드 투 엔드로 훈련된다.

실험 결과

연구 질문

  • RQ1구조적 언어 모델링 접근법은 어떤 프로그래밍 언어에서든 어휘나 문법적 제약 없이 임의의 코드 표현식을 생성할 수 있는가?
  • RQ2SLM은 순서형 시퀀스 모델 대비 문법적으로 유효하고 다양한 코드를 생성하는 데 얼마나 우수한가?
  • RQ3기존의 구조적 접근법에 비해 구조적 모델링은 코드 생성 성능을 얼마나 향상시킬 수 있는가?
  • RQ4모델은 아키텍처 수정 없이 자바와 C#과 같은 다양한 프로그래밍 언어 간에 일반화할 수 있는가?

주요 결과

  • SLM는 자바와 C# 코드 생성에서 최신 기술의 seq2seq 모델보다 뚜렷한 성능 향상을 보였다.
  • 모델은 복잡하고 제약 없는 구문을 포함한 임의의 표현식을 성공적으로 생성했으며, 이는 이전의 구조적 방법이 딱딱한 제약을 가졌던 것과 대조된다.
  • SLM는 각 노드에 도달하는 모든 AST 경로를 통해 전체 구조적 맥락을 활용함으로써 더 높은 코드 생성 품질을 달성했다.
  • 이 방법은 프로그래밍 언어 간에 일반화되며, 자바와 C# 데이터셋 모두에서 효과를 입증했다.
  • 모델의 성능은 여러 기존의 구조적 생성 기법을 뛰어넘었으며, 전체 AST 경로 모델링의 우수성을 보여주었다.
  • 저자들은 코드, 데이터셋, 학습된 모델을 공개하여 재현 가능성과 Any-Code 생성 분야의 추가 연구를 가능하게 하였다.

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

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

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

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