Skip to main content
QUICK REVIEW

[논문 리뷰] Language-Agnostic Representation Learning of Source Code from Structure and Context

Daniel Zügner, Tobias Kirschstein|arXiv (Cornell University)|2021. 03. 21.
Software Engineering Research참고 문헌 50인용 수 63
한 줄 요약

이 논문은 Code Transformer를 소개하며, 소스 코드(Context)와 그 AST(Structure)에서 언어-비의존적 특징으로 함께 학습하고, 최첨단 코드 요약을 달성하며 다국어 학습을 가능하게 한다.

ABSTRACT

Source code (Context) and its parsed abstract syntax tree (AST; Structure) are two complementary representations of the same computer program. Traditionally, designers of machine learning models have relied predominantly either on Structure or Context. We propose a new model, which jointly learns on Context and Structure of source code. In contrast to previous approaches, our model uses only language-agnostic features, i.e., source code and features that can be computed directly from the AST. Besides obtaining state-of-the-art on monolingual code summarization on all five programming languages considered in this work, we propose the first multilingual code summarization model. We show that jointly training on non-parallel data from multiple programming languages improves results on all individual languages, where the strongest gains are on low-resource languages. Remarkably, multilingual training only from Context does not lead to the same improvements, highlighting the benefits of combining Structure and Context for representation learning on code.

연구 동기 및 목표

  • 코드가 텍스트(Context)로서의 표현과 그것의 추상 구문 트리(Structure)라는 두 가지 보완적 관점을 결합하여 프로그램의 의미 있는 표현을 학습하는 것을 목표로 한다.
  • 언어-비의존적 트랜스포머 모델을 개발하여 Context와 Structure를 언어별 사전처리 없이 통합한다.
  • 다섯 가지 언어에 걸친 단일 언어 코드 요약에서 최첨단 성능을 입증한다.
  • 공유 어휘와 언어 임베딩을 사용하는 다국어 코드 요약 모델을 여러 언어에 대해 학습시키고 평가한다.

제안 방법

  • 상대적 거리 데이터를 사용하는 주의(attention) 기반의 Transformer 구조를 채택한다.
  • AST에서의 여러 관계 거리(최단 경로, 조상, 형제, Personalised PageRank)를 주의 메커니즘에 계산하고 통합한다.
  • 관계별 키 프로젝션 행렬을 사용하여 Context와 Structure의 기여를 주의 점수에 합산한다.
  • 토큰마다 토큰 임베딩, 할당된 AST 노드 타입의 임베딩, 토크나이저의 토큰 타입을 연결하여 표현한다.
  • 구조를 고려한 그래프 주의(attention)를 가능하게 하는 비학습형(sinusoidal) 상대 거리 인코딩을 사용한다.
  • 디코더가 입력 위치를 가리킬 수 있도록 포인터 네트워크를 사용하여 토큰 예측을 개선한다.

실험 결과

연구 질문

  • RQ1언어-비의존적 특징을 사용하여 Context(코드 토큰)와 Structure(AST)에서 둘 다 학습하는 단일 모델이 가능할까?
  • RQ2여러 프로그래밍 언어에서의 공동 학습이 특히 자원이 적은 언어에서 코드 요약 성능을 향상시키는가?
  • RQ3단일 언어 요약에서 Structure를 포함하는 것과 Context만 사용하는 것이 어떤 영향을 미치는가?
  • RQ4다양한 AST 거리 측정(최단 경로, 조상, 형제, PageRank)이 성능에 어떻게 기여하는가?
  • RQ5다국어 학습이 오로지 언어 비의존적 특징만 사용할 때도 다양한 언어에서 단일 언어 학습보다 성능이 우수한가?

주요 결과

  • Code Transformer는 단일 언어 설정에서 다섯 가지 언어에 걸쳐 최첨단 코드 요약 성능을 달성한다.
  • 다국어 학습은 모든 언어에서 성능을 크게 향상시키며, 특히 자원이 적은 언어에서 가장 큰 이득을 제공한다.
  • Context만 사용한 다국어 학습은 Structure와 Context를 결합한 경우와 동일한 개선을 보이지 않는다.
  • 변형(abalations) 결과 Structure와 Context 모두가 성능에 기여하며 포인터 네트워크가 결과를 더 향상시킨다.
  • 여러 AST 거리 측정을 함께 사용하는 것이 단일 거리보다 더 나은 성능을 낳는다.

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

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

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

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