위키득계정 ↗
기술

GraphCodeBERT

GraphCodeBERT기술
최초 공개
2020년
학회 발표
ICLR 2021
구조 정보
변수 사이의 데이터 흐름
모델 기반
그래프 유도 마스킹 어텐션을 사용하는 Transformer
GraphCodeBERT는 코드의 데이터 흐름을 사전 학습에 이용하는 모델이다. 토큰 순서뿐 아니라 변수의 값이 어디서 오는지 나타내는 관계를 반영해 코드의 의미적 구조를 학습한다.

코드 순서와 코드 구조

코드를 토큰의 나열로만 보면 내부 구조가 담고 있는 의미를 놓칠 수 있다. GraphCodeBERT는 코드 이해에 필요한 구조 정보를 사전 학습에서 함께 사용한다.

값의 출처를 나타내는 관계

추상 구문 트리 대신 변수 사이에서 값이 어디로부터 왔는지를 나타내는 데이터 흐름을 사용했다. 구문의 계층보다 의미 수준의 연결에 초점을 맞춘 선택이다.

구조를 배우는 사전 과제

마스킹 언어 모델링에 더해 코드 구조의 간선을 예측하고 소스 코드와 구조의 표현을 정렬하는 과제를 도입했다. 그래프 유도 마스킹 어텐션으로 구조를 모델에 반영한다.

여러 코드 과제의 평가

소개 연구는 코드 검색과 유사 코드 탐지, 코드 번역 및 개선 과제로 평가했다. 코드 구조와 추가 사전 학습 과제가 다양한 후속 작업에 주는 영향을 비교한 연구다.

관련 문서

CodeBERT / CodeXGLUE / CodeSearchNet / Transformer / 그래프 / 프로그래밍