[논문 리뷰] What Do They Capture? -- A Structural Analysis of Pre-Trained Language Models for Source Code
이 논문은 주어진 사전 훈련된 코드 언어 모델(CODEBERT 및 GRAPHCODEBERT)의 구조적 분석을 주의 투사, 단어 임베딩 탐색, 문법 트리 유도를 통해 수행하여 이들이 코드 구조를 어떻게 포착하는지 밝혀낸다. 주의 메커니즘이 코드 문법과 강하게 정렬되며, 중간 표현이 문법적 구조를 유지하고, 모델들이 타당한 AST를 유도할 수 있음을 발견한다—이는 사전 훈련 중에 문법을 통합할 경우 코드 표현 학습이 향상됨을 시사한다.
Recently, many pre-trained language models for source code have been proposed to model the context of code and serve as a basis for downstream code intelligence tasks such as code completion, code search, and code summarization. These models leverage masked pre-training and Transformer and have achieved promising results. However, currently there is still little progress regarding interpretability of existing pre-trained code models. It is not clear why these models work and what feature correlations they can capture. In this paper, we conduct a thorough structural analysis aiming to provide an interpretation of pre-trained language models for source code (e.g., CodeBERT, and GraphCodeBERT) from three distinctive perspectives: (1) attention analysis, (2) probing on the word embedding, and (3) syntax tree induction. Through comprehensive analysis, this paper reveals several insightful findings that may inspire future studies: (1) Attention aligns strongly with the syntax structure of code. (2) Pre-training language models of code can preserve the syntax structure of code in the intermediate representations of each Transformer layer. (3) The pre-trained models of code have the ability of inducing syntax trees of code. Theses findings suggest that it may be helpful to incorporate the syntax structure of code into the process of pre-training for better code representations.
연구 동기 및 목표
- 사전 훈련된 코드 언어 모델이 코드 지능 작업에서 뛰어난 성능을 내는 이유를 이해하기 위해.
- 이러한 모델들이 포착하는 구조적 특징, 특히 문법적 구조를 조사하기 위해.
- 주의, 단어 임베딩, 모델 표현이 코드 문법을 유지하거나 유도하는지 분석하기 위해.
- 사전 훈련된 모델이 명시적 훈련 없이도 추상 구문 트리(abstract syntax trees, ASTs)를 재구성할 수 있는 능력을 평가하기 위해.
- 향후 코드 표현 모델 설계를 안내할 수 있는 해석 가능성 통찰을 제공하기 위해.
제안 방법
- 모델의 자기주의 주의 시각화 및 AST의 구조와의 정렬을 통해 주의가 문법 구성요소에 집중하는지 평가하기 위해.
- 모든 트랜스포머 레이어의 중간 표현이 문법적 구조를 인코딩하는지 테스트하기 위한 구조적 탐색 방법을 설계하기 위해.
- 모델 표현에서 트리 유도 알고리즘을 사용해 AST를 복원하기 위해.
- 자연어 구문 분석에서 유도된 오른쪽 기울기 편향을 트리 구축에 적용하여 AST와의 정렬을 향상시키기 위해.
- 기준 트리 유사도 메트릭을 사용해 유도된 트리를 진짜 AST와 비교 평가하기 위해.
- 일반화를 확보하기 위해 대규모 코드 저장소의 코드 스니펫을 사용해 모델 분석하기 위해.
실험 결과
연구 질문
- RQ1사전 훈련된 코드 모델의 주의 헤드가 소스 코드의 문법적 구조와 얼마나 잘 정렬되어 있는가?
- RQ2각 트랜스포머 레이어의 중간 표현이 문법적 구조를 어느 정도 유지하는가?
- RQ3사전 훈련된 코드 모델은 명시적 훈련 없이도 타당한 추상 구문 트리(abstract syntax trees, ASTs)를 표현에서 유도할 수 있는가?
- RQ4사전 훈련 과정에 문법을 통합함으로써(예: GRAPHCODEBERT를 통해) 표현의 구조적 유지에 어떤 영향을 미치는가?
- RQ5코드 모델에서 주의 패턴, 단어 임베딩, 문법적 구조 간의 관계는 무엇인가?
주요 결과
- 사전 훈련된 코드 모델의 주의 헤드는 함수 호출, 제어 구조, 변수 선언과 같은 문법 구성요소와 강하게 정렬된다.
- 모든 트랜스포머 레이어의 중간 표현이 문법적 구조를 유지하며, 더 깊은 레이어일수록 더 정교한 문법 인식 능력을 보인다.
- 사전 훈련된 코드 모델은 코드 임베딩에서 타당한 추상 구문 트리를 유도할 수 있으며, 트리 유사도의 F1 스코어는 의미 있는 구조 복원을 시사한다.
- 사전 훈련 과정에 데이터 플로우 그래프를 통합하는 모델(GRAPHCODEBERT)은 표준 CODEBERT에 비해 더 향상된 문법적 구조 유지 능력을 보였다.
- 유도된 문법 트리는 구조적으로 일관되며 코드의 계층적 성격을 반영한다—이는 문법적 구조가 표현에 암묵적으로 인코딩되어 있음을 시사한다.
- 본 연구는 문법적 구조가 사전 훈련된 코드 모델이 포착하는 핵심 인덕티브 바이어스임을 밝혀내며, 향후 사전 훈련 목표에 문법을 통합하는 것이 바람직함을 뒷받침한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.