그래프코드버트와 실행 기반 특징 융합을 통한 코드 유사도 향상
초록
본 논문은 사전 학습된 GraphCodeBERT 모델에 실행 결과 기반의 저차원 행동 특성을 추가하고, 이를 학습 가능한 출력 헤드와 결합함으로써 코드 클론 탐지 성능을 향상시키는 방법을 제안한다. 테스트 스위트를 이용해 두 코드 조각의 출력 일치를 측정한 f_out 값을 행동 서명으로 사용하고, 풀링된 Transformer 표현과 선형 투영된 f_out을 연결해 최종 클래시피케이션을 수행한다. 실험 결과, 특히 문법적으로는 다르지만 기능적으로 동일한 Type‑4 클론에 대해 정밀도·재현율·F1 점수가 기존 GraphCodeBERT 대비 유의미하게 개선되었다.
상세 분석
이 연구는 코드 유사도 탐지에서 “행동”이라는 외부 증거를 Transformer 기반 모델에 직접 통합한다는 점에서 의미가 크다. 기존 GraphCodeBERT는 토큰 시퀀스와 추상 구문 트리(ASGT) 기반 그래프 정보를 학습해 코드의 구조적·문법적 특징을 포착하지만, 실행 시 나타나는 실제 동작을 직접 관찰하지는 않는다. 논문은 이를 보완하기 위해 f_out이라는 스칼라 특성을 정의한다. f_out은 사전에 정의된 테스트 입력 집합 T에 대해 두 함수 c_i, c_j를 실행하고, 출력이 일치하는 비율을 0~1 사이 값으로 반환한다. 이 값은 “관찰 가능한 행동 일치”를 정량화한 것으로, 함수형 동등성을 근사하는 실용적인 지표가 된다.
모델 구조는 크게 세 부분으로 나뉜다. 첫째, 입력 코드 쌍을 GraphCodeBERT에 통과시켜 d=768 차원의 풀링 벡터 p를 얻는다. 둘째, f_out을 1×d 선형 변환 W₁(바이어스 포함)으로 투영해 동일 차원의 특징 f를 만든다. 셋째, p와 f를 단순히 연결(concatenation)해 2d 차원의 벡터 c를 형성하고, 이를 또 다른 선형 레이어 W₂와 드롭아웃을 거쳐 최종 복제 확률 ŷ를 출력한다. 이 설계는 구현이 간단하면서도 두 신호를 독립적으로 학습하도록 허용한다.
학습 목표는 이진 교차 엔트로피 손실이며, Adam 옵티마이저와 고정 학습률 스케줄을 사용한다. 중요한 점은 f_out이 신뢰할 수 있는 경우 모델이 이를 높은 가중치로 활용하고, 불일치하거나 실행이 실패한 경우에는 Transformer 표현에 더 의존하도록 자동 조정된다는 점이다. 또한, f_out을 다차원 특성으로 확장하거나, 스칼라 값을 attention 가중치로 변환하는 등 다양한 융합 전략을 탐색했지만, 실험에서는 단순 연결이 가장 안정적이고 성능 향상이 크게 나타났다.
복잡도 측면에서 추가 파라미터는 d×m(=768) 정도에 불과해 전체 1억 2500만 파라미터 중 0.001%에 불과하며, 실행 비용은 데이터 전처리 단계에서 오프라인으로 수행한다. 따라서 실시간 추론 시에는 거의 부가 비용이 없으며, 실행이 불가능한 상황에서는 정적 분석 결과를 f_out의 대체값으로 넣어 동일한 파이프라인을 유지할 수 있다.
실험은 대표적인 코드 클론 벤치마크(예: BigCloneBench, POJ-104 등)를 사용했으며, 각 데이터셋을 학습/검증/테스트로 분할해 10회 반복 실험 후 평균값을 보고한다. 결과는 전체 정확도뿐 아니라 특히 Type‑4(문법·구조는 다르지만 기능은 동일) 클론에 대해 정밀도와 재현율이 5~12%p 상승했음을 보여준다. 이는 실행 기반 행동 특성이 토큰·그래프 정보만으로는 포착하기 어려운 의미적 일치를 효과적으로 보완한다는 증거다.
한계점으로는 테스트 스위트의 커버리지가 낮을 경우 f_out이 잘못된 신호를 제공할 위험이 있으며, 악의적인 코드에 대해 실행 환경을 안전하게 격리해야 하는 추가 비용이 있다. 또한, 현재는 스칼라 형태의 단순 일치 비율만 사용했지만, 출력값의 타입·구조를 고려한 정교한 거리 측정이 향후 성능을 더 끌어올릴 수 있다.
결론적으로, 이 논문은 “행동 기반 특징”을 Transformer 기반 코드 이해 모델에 직접 결합함으로써, 특히 의미적 클론 탐지에서 기존 방법을 능가하는 성능을 달성했으며, 향후 정적·동적 분석을 융합한 하이브리드 코드 이해 시스템의 설계 방향을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기