[논문 리뷰] What does Transformer learn about source code?
이 논문은 CodeBERT와 GraphCodeBert와 같은 사전 훈련된 트랜스포머 모델들로부터 문법, 제어 흐름, 데이터 흐름과 같은 구조적 정보를 자동으로 추출하기 위해 집합적 어텐션 점수와 집합적 어텐션 그래프를 도입한다. 이 방법은 수작업 규칙에 의존하지 않고도 효과적으로 프로그램 표현 그래프를 구성할 수 있게 하며, 변수 오용(task)에서 수작업으로 설계된 그래프와 동등하거나 이를 초월하는 성능을 보이며, 트랜스포머가 소스 코드 내에 풍부하고 의미적으로 유의미한 구조적 패턴을 학습하고 있음을 입증한다.
In the field of source code processing, the transformer-based representation models have shown great powerfulness and have achieved state-of-the-art (SOTA) performance in many tasks. Although the transformer models process the sequential source code, pieces of evidence show that they may capture the structural information (\eg, in the syntax tree, data flow, control flow, \etc) as well. We propose the aggregated attention score, a method to investigate the structural information learned by the transformer. We also put forward the aggregated attention graph, a new way to extract program graphs from the pre-trained models automatically. We measure our methods from multiple perspectives. Furthermore, based on our empirical findings, we use the automatically extracted graphs to replace those ingenious manual designed graphs in the Variable Misuse task. Experimental results show that the semantic graphs we extracted automatically are greatly meaningful and effective, which provide a new perspective for us to understand and use the information contained in the model.
연구 동기 및 목표
- 사전 훈련된 트랜스포머 모델이 선형적 순서 모델링을 초월해 소스 코드에 대해 어떤 구조적 정보를 학습하는지 탐구하기.
- 코드 전용 트랜스포머 모델의 구조적 패턴에 대한 효과적인 해석 방법의 부족을 해결하기.
- 수작업 규칙에 의존하지 않고 데이터 기반으로 어텐션 메커니즘에서 프로그램 표현 그래프를 자동으로 추출하는 방법을 개발하기.
- 자동으로 추출된 그래프가 최종 코드 지능 작업에서 수작업으로 설계된 그래프와 동등하거나 이를 초월하는 성능을 보일 수 있는지 평가하기.
제안 방법
- 모든 헤드와 레이어를 통해 어텐션 가중치를 정량화하고 집계하여 소스 코드 내의 구조적 의존 관계를 드러내는 데 사용할 집합적 어텐션 점수를 제안한다.
- 집합적 어텐션 점수를 방향성 없는 사이클 없는 그래프(DAG)로 변환하기 위해 Chu-Liu/Edmonds(CLE) 알고리즘을 사용한다. 이를 통해 집합적 어텐션 그래프를 형성한다.
- CodeBERT와 GraphCodeBert와 같은 사전 훈련된 모델에 이 방법을 적용하여 어텐션 패턴으로부터 의미적 및 구조적 관계를 추출한다.
- 의존성 파싱 벤치마크에서 정밀도, 재현율, F1과 같은 정량적 지표를 사용해 그래프 품질을 측정한다.
- 변수 오용 작업에서 수작업으로 설계된 그래프를 자동으로 추출한 집합적 어텐션 그래프로 대체하고, 표준 지표를 사용해 성능을 평가한다.
실험 결과
연구 질문
- RQ1트랜스포머 기반 모델이 소스 코드에 대해 학습하는 구조적 정보(예: 문법, 제어 흐름/데이터 흐름)는 어떤 것인가?
- RQ2CodeBERT와 GraphCodeBert와 같은 사전 훈련된 모델의 어텐션 메커니즘이 명시적인 구조적 사전 훈련 없이도 프로그램 구조를 암묵적으로 인코딩할 수 있는가?
- RQ3수작업으로 설계된 프로그램 그래프와 비교해 볼 때, 집합적 어텐션 그래프가 의미 있는 프로그램 관계를 얼마나 효과적으로 포착하는가?
- RQ4어텐션 점수에서 자동으로 추출된 그래프가 최종 코드 지능 작업에서 경쟁적인 성능을 달성할 수 있는가?
주요 결과
- 집합적 어텐션 점수는 if-else 및 변수 사용 관계와 같은 구문적 및 의미적 의존 관계를 성공적으로 포착한다.
- CLE 알고리즘을 통해 추출한 집합적 어텐션 그래프는 강력한 구조적 충실도를 유지하며, 변수 오용 작업에서 수작업으로 설계된 그래프와 유사한 성능을 달성한다.
- VarMisuse 작업에서 CodeBERT에서 추출한 그래프는 77.33%의 위치 및 표현 정확도를 기록했고, GraphCodeBert에서는 77.81%를 기록하여 기준 성능과 동등하거나 이를 초월했다.
- 이 방법은 순서 기반 및 원천 기반 그래프 베이스라인을 능가하며, 어텐션 메커니즘이 풍부하고 작업에 관련된 구조적 정보를 인코딩하고 있음을 입증한다.
- 결과는 트랜스포머가 이러한 기능을 명시적으로 사전 훈련하지 않더라도 복잡한 프로그램 구조를 학습하고 유지하고 있음을 검증한다.
- 이 접근법은 외부 도구나 규칙 기반 시스템에 의존하지 않고도 사전 훈련된 코드 모델에서 구조 지식을 자동으로 추출하고 활용할 수 있는 새로운, 확장 가능하며 해석 가능한 방법을 제공한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.