Core Concepts
장문 코드 표현을 위해 코드를 분할하고, 인코딩하며, 집계하는 새로운 기준선 SEA를 제안한다.
Abstract
이 논문은 장문 코드 검색의 문제를 다룬다. 기존 Transformer 기반 코드 사전 학습 모델은 입력 토큰 길이에 제한이 있어 장문 코드를 효과과적으로 표현하지 못한다. 이를 해결하기 위해 저자들은 SEA(Split, Encode and Aggregate)라는 새로운 기준선을 제안한다.
SEA의 핵심 과정은 다음과 같다:
코드를 코드 블록으로 분할한다. 공백, 토큰, 라인, AST 기반 분할 방법을 비교한다.
각 코드 블록을 인코더(예: GraphCodeBERT)로 인코딩한다.
주의 기반 집계 방법을 사용하여 코드 블록 표현을 통합하여 장문 코드 표현을 생성한다.
SEA는 Transformer 모델의 내부 구조를 변경하지 않고 기존 사전 학습 모델을 활용할 수 있다는 장점이 있다. 또한 병렬 처리를 위한 결합-분할 모듈을 설계하여 효율성을 높였다.
실험 결과, SEA는 GraphCodeBERT 대비 10.1% 향상된 MRR 성능을 보였다. 또한 다양한 프로그래밍 언어에서도 우수한 성능을 보였다. 이를 통해 SEA가 장문 코드 검색을 위한 강력한 기준선이 될 수 있음을 입증했다.
Stats
장문 코드(토큰 수 > 256)가 전체 코드의 54%를 차지한다.
GraphCodeBERT의 MRR 성능은 코드 길이가 증가할수록 감소한다.
Quotes
"GraphCodeBERT는 256토큰 이후의 키워드 "Tensor"와 "patches"를 고려하지 못해 해당 코드 조각을 21,148위에 랭크했다."
"SEA는 Transformer 모델의 내부 구조를 변경하지 않고 기존 사전 학습 모델을 활용할 수 있다는 장점이 있다."