[논문 리뷰] Contrastive Learning for Source Code with Structural and Functional Properties
BOOST는 소스 코드를 위한 자기지도 학습 대비 학습 모델로, 구조적이고 기능적인 특성을 활용하여 코드 이해를 향상시킨다. 기능적으로 동일하지만 구조적으로 다른 코드와, 문법적으로 유사하지만 기능적으로 다른 코드를 생성함으로써, 대비 학습과 새로운 노드 유형 마스킹 언어 모델링 목표를 통해 강력한 표현을 학습하며, 상당히 작은 사전 훈련 데이터로도 최신 기술 수준의 성능을 달성한다.
Pre-trained transformer models have recently shown promises for understanding the source code. Most existing works expect to understand code from the textual features and limited structural knowledge of code. However, the program functionalities sometimes cannot be fully revealed by the code sequence, even with structure information. Programs can contain very different tokens and structures while sharing the same functionality, but changing only one or a few code tokens can introduce unexpected or malicious program behaviors while preserving the syntax and most tokens. In this work, we present BOOST, a novel self-supervised model to focus pre-training based on the characteristics of source code. We first employ automated, structure-guided code transformation algorithms that generate (i.) functionally equivalent code that looks drastically different from the original one, and (ii.) textually and syntactically very similar code that is functionally distinct from the original. We train our model in a way that brings the functionally equivalent code closer and distinct code further through a contrastive learning objective. To encode the structure information, we introduce a new node-type masked language model objective that helps the model learn about structural context. We pre-train BOOST with a much smaller dataset than the state-of-the-art models, but our small models can still match or outperform these large models in code understanding and generation tasks.
연구 동기 및 목표
- 기존 코드 모델이 텍스트적 및 문법적 특성에 크게 의존하여 기능적 의미를 놓치는 데에 대비하여 이를 해결하고자 한다.
- 자동화된 코드 변환을 통해 기능적 동치성과 문법적 유사성을 통합함으로써 코드 표현 학습을 향상시키고자 한다.
- 더 많은 대규모 사전 훈련 데이터셋에 의존하는 것을 줄이기 위해 더 데이터 효율적인 자기지도 학습 접근 방식을 도입하고자 한다.
- AST에서 특정 노드 유형을 마스킹함으로써 코드 모델의 구조적 인식 능력을 향상시키기 위한 새로운 노드 유형 마스킹 언어 모델링 목표를 사용하고자 한다.
제안 방법
- 자동화된 구조 유도 코드 변환 알고리즘이 두 가지 유형의 증강 샘플을 생성한다: 기능적으로 동일하지만 구조적으로 다른 코드, 그리고 문법적으로 유사하지만 기능적으로 다른 코드.
- 기능적으로 동일한 코드 쌍의 표현을 가까이 모으고, 기능적으로 다를지라도 유사한 코드 쌍의 표현을 멀리 떼는 대비 학습 목표를 적용한다.
- AST에서 특정 노드 유형을 마스킹함으로써 코드의 구조적 맥락 이해 능력을 향상시키기 위해 새로운 노드 유형 마스킹 언어 모델링 목표를 도입한다.
- 유사한 코드 변형 간의 의미적 일치를 장려하고 악성 또는 의도하지 않은 동작의 차이를 유지하도록 대비 손실을 사용하여 모델을 사전 훈련한다.
- 더 작은 사전 훈련 데이터셋으로도 우수한 성능을 낼 수 있도록 설계된 데이터 효율적인 접근 방식을 통해 강력한 성능을 달성한다.
- 최종 모델은 다운스트림 코드 이해 및 생성 작업에서 파인튜닝되며, 더 적은 사전 훈련 데이터로도 뛰어난 또는 경쟁 가능한 성능을 보여준다.
실험 결과
연구 질문
- RQ1기능적 동치성과 문법적 유사성을 명시적으로 모델링할 때, 자기지도 대비 학습이 코드 표현을 향상시킬 수 있는가?
- RQ2노드 유형 마스킹 언어 모델링 목표는 코드 모델의 구조적 인식 능력을 향상시키는 데 얼마나 효과적인가?
- RQ3더 작은 사전 훈련 데이터셋을 사용할 때, 기존의 더 큰 모델들과 비교해 성능이 유사하거나 뛰어나게 달성할 수 있는 정도는 어느 정도인가?
- RQ4자동화된 코드 변환 기법을 통해 대비 학습을 위한 의미 있는 양성 및 음성 샘플을 생성할 수 있는가?
- RQ5기능적 특성과 구조적 특성을 결합함으로써 더 강력하고 일반화 능력이 뛰어난 코드 표현을 얻을 수 있는가?
주요 결과
- BOOST는 기존 모델들보다 상당히 작은 데이터셋으로 사전 훈련되었음에도 불구하고 코드 이해 및 생성 작업에서 최신 기술 수준의 성능을 달성한다.
- 다양한 코드 관련 벤치마크에서 더 큰 최신 기술 수준의 모델들보다 뛰어난 성능을 보이며, 데이터 효율적인 훈련 접근 방식의 효과를 입증한다.
- 노드 유형 마스킹 언어 모델링 목표의 통합은 모델이 코드 표현에서 구조적 맥락을 더 잘 포착할 수 있도록 한다.
- 기능적으로 동일한 코드 쌍과 기능적으로 다를지라도 유사한 코드 쌍을 대비 학습함으로써 더 강력하고 의미적으로 유의미한 표현을 얻을 수 있다.
- 자동화된 코드 변환 파이프라인은 대비 학습을 향상시키는 데 성공적으로 고품질의 양성 및 음성 샘플을 생성한다.
- BOOST는 더 큰 데이터셋으로 사전 훈련된 모델들과 비교해도 경쟁력 있거나 뛰어난 성능을 보이며, 데이터 효율성의 우수함을 입증한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.