Skip to main content
QUICK REVIEW

[논문 리뷰] StructCoder: Structure-Aware Transformer for Code Generation

Sindhu Tipirneni, Ming Zhu|arXiv (Cornell University)|2022. 06. 10.
Software Engineering Research인용 수 7
한 줄 요약

StructCoder는 인코더와 디코더에서 모두 추상구문트리(AS T)와 데이터플로우그래프(DFG)를 공동으로 모델링함으로써 문법적 및 의미적 정확성을 향상시키는 구조 인식 Transformer 인코더-디코더 모델을 제안한다. 디코딩 중에 새로운 보조 과제인 AST 경로 예측과 DFG 간선 예측을 도입하여 CodeXGLUE 및 APPS 벤치마크에서 최신 기술 수준의 성능을 달성한다.

ABSTRACT

There has been a recent surge of interest in automating software engineering tasks using deep learning. This paper addresses the problem of code generation, where the goal is to generate target code given source code in a different language or a natural language description. Most state-of-the-art deep learning models for code generation use training strategies primarily designed for natural language. However, understanding and generating code requires a more rigorous comprehension of the code syntax and semantics. With this motivation, we develop an encoder-decoder Transformer model where both the encoder and decoder are explicitly trained to recognize the syntax and data flow in the source and target codes, respectively. We not only make the encoder structure-aware by leveraging the source code's syntax tree and data flow graph, but we also support the decoder in preserving the syntax and data flow of the target code by introducing two novel auxiliary tasks: AST (Abstract Syntax Tree) paths prediction and data flow prediction. To the best of our knowledge, this is the first work to introduce a structure-aware Transformer decoder that models both syntax and data flow to enhance the quality of generated code. The proposed StructCoder model achieves state-of-the-art performance on code translation and text-to-code generation tasks in the CodeXGLUE benchmark, and improves over baselines of similar size on the APPS code generation benchmark. Our code is publicly available at https://github.com/reddy-lab-code-research/StructCoder/.

연구 동기 및 목표

  • 기존 코드 생성 모델이 코드를 자연어처럼 취급하여 문법적 및 의미적 구조를 忽시하는 한계를 해결한다.
  • 인코더에서 소스 코드의 구문(_AST를 통해_)과 데이터 플로우(DFG를 통해_)를 명시적으로 모델링하여 코드 생성 품질을 향상시킨다.
  • 디코더 출력을 향상시키기 위해 목표 코드의 루트에서 리프까지의 AST 경로와 DFG 간선을 예측하도록 훈련시켜 구조적 정확성을 보장한다.
  • 모델 효율성을 유지하면서도 코드 번역 및 텍스트-코드 생성 작업에서 최신 기술 수준의 성능을 달성한다.
  • 인코더와 디코더에 모두 구조적 인덕티브 바이어스를 통합함으로써 더 신뢰할 수 있고 의미적으로 정확한 코드 생성을 가능하게 한다.

제안 방법

  • 구조 인식 자기주도 어텐션을 사용하여 소스 코드의 AST와 DFG 노드에서 유도된 루트-리프 경로를 인코더 입력에 추가하여 의존성 모델링.
  • 코드 토큰, AST 노드, DFG 변수 간의 구조적 관계를 유지하는 수정된 자기주도 어텐션 메커니즘 도입.
  • 디코더를 두 가지 보조 과제로 훈련: 목표 AST의 모든 루트-리프 경로 예측 및 목표 코드의 DFG 간선 예측.
  • 표현 학습을 향상시키기 위해 구조 기반 노이즈 제거 오토인코더(DAE) 과제를 사용해 모델을 사전학습.
  • 미세조정 중에 마스크된 언어 모델링, AST 경로 예측, DFG 간선 예측을 조합한 다중 과제 학습 목표 구현.
  • GPU에서 코드 토큰, DFG 변수, AST 리프 간의 희소 어텐션 패턴을 처리하기 위해 효율적인 어텐션 마스킹 도입.

실험 결과

연구 질문

  • RQ1표준 Transformer와 비교해 인코더와 디코더에서 AST 및 DFG 구조를 공동으로 모델링할 경우 코드 생성 품질이 향상되는가?
  • RQ2디코더를 AST 경로와 DFG 간선 예측하도록 훈련시키는 것이 더 문법적·의미적으로 정확한 코드 생성을 이끌어내는가?
  • RQ3구조적 구성 요소의 통합이 추론 효율성과 확장성에 어떤 영향을 미치는가?
  • RQ4구조 인식 설계가 코드 번역 및 텍스트-코드 생성 벤치마크에서 성능 향상에 얼마나 기여하는가?
  • RQ5구조 인식 사전학습과 보조 과제가 다양한 프로그래밍 언어와 코드 생성 작업 간에 일반화 가능한가?

주요 결과

  • StructCoder는 코드 번역 및 텍스트-코드 생성 작업에서 CodeXGLUE 벤치마크에서 최신 기술 수준의 성능을 달성한다.
  • APPS 벤치마크에서 StructCoder는 유사 크기의 베이스라인을 초월하여 일반화 능력과 정확도 향상을 입증한다.
  • Go 언어에서 4.62 BLEU 포인트 향상(19.56 → 24.18)을 기록하여 코드 요약 성능 향상이 확인되어 더 넓은 적용 가능성을 보여준다.
  • 입력 길이가 75–83% 증가했음에도 불구하고 인코더에 AST 및 DFG 구성 요소를 추가했을 때 추론 시간은 오직 28–29% 증가하여 GPU 활용 효율성이 높음을 시사한다.
  • 디코더의 보조 과제(_AST 경로 및 DFG 예측_)는 추론 비용을 증가시키지 않으면서도 구조적 정확성을 크게 향상시킨다.
  • 구조 인식 자기주도 어텐션 메커니즘은 복잡한 변환에서 코드 의미와 구문을 더 잘 모델링할 수 있도록 한다.

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

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

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

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