코드 생성을 위한 계층적 앵커 기반 확산 모델 AnCoder
초록
AnCoder는 추상 구문 트리(AST) 구조를 활용해 토큰을 계층적으로 앵커링하는 새로운 확산 기반 코드 생성 프레임워크이다. 키워드와 식별자를 루트에 가깝게 배치하고 가중치를 부여해 초기 단계에서 중요한 토큰을 복원하도록 유도함으로써, 기존 확산 모델이 겪던 구문 오류와 실행 오류를 크게 감소시킨다. 실험 결과 HumanEval·MBPP 등 표준 코딩 벤치마크에서 기능적 정확도가 현저히 향상되었다.
상세 분석
본 논문은 확산 언어 모델(DLM)이 코드 생성에 적용될 때 마주치는 “구조적 불일치” 문제를 근본적으로 해결하고자 한다. 기존 DLM은 토큰을 독립적으로 마스킹·복원하는 과정에서, 코드의 문법적·의미적 제약을 충분히 반영하지 못해 종종 구문 오류나 실행 오류가 발생한다. 이를 극복하기 위해 저자들은 두 가지 핵심 아이디어를 제시한다. 첫째, 코드의 고유한 계층 구조인 추상 구문 트리(AST)를 이용해 토큰을 “앵커”로 지정한다. 여기서 앵커는 키워드(if, for 등)와 식별자(변수명, 함수명) 등 의미적으로 중요한 토큰이며, AST에서 루트에 가까울수록 높은 가중치를 부여한다. 둘째, 이러한 가중치를 기반으로 “소프트 앵커링”을 구현한다. 기존 연구가 하드 앵커링(앵커 여부만 이진화)만을 사용한 반면, AnCoder는 각 토큰에 연속적인 중요도 점수를 할당해 denoising 순서를 정밀하게 제어한다. 구체적으로, 모델은 두 단계 네트워크(앵커 네트워크 yᴀ와 디노이저 네트워크 xᴅ)로 구성된다. 앵커 네트워크는 현재 마스크 상태 zₜ에서 높은 가중치의 토큰을 먼저 복원하도록 학습되며, 이 결과는 디노이저 네트워크의 조건으로 전달되어 남은 토큰을 보다 풍부한 컨텍스트 하에 복원한다. 학습 목표는 기존 NELBO에 앵커 손실을 가중치 µ로 추가한 ANELBO이며, 이는 앵커 토큰이 초기 단계에서 정확히 예측되도록 강제한다. 또한, 전처리 단계에서 AST 파싱을 통해 토큰‑노드 매핑을 자동 생성하고, 깊이‑기반 가중치 함수를 설계해 “루트‑우선” 복원을 실현한다. 실험에서는 HumanEval와 MBPP 두 벤치마크에서 기존 DLM(예: DiffuCoder, Gemini Diffusion) 대비 함수적 정확도가 10~15%p 상승했으며, 특히 복잡한 제어 흐름을 포함한 코드에서 오류율이 크게 감소했다. Ablation 연구를 통해 (1) 소프트 앵커링 vs 하드 앵커링, (2) AST 깊이 가중치 vs 단순 빈도 기반 가중치, (3) 두 단계 네트워크 vs 단일 디코더 구조가 각각 성능에 미치는 영향을 정량화하였다. 한계점으로는 AST 파싱 비용과 파싱 오류가 전처리 단계에서 전파될 수 있다는 점, 그리고 현재는 파이썬 단일 언어에 초점을 맞추었으며 다중 언어 확장에 추가 연구가 필요하다는 점을 언급한다. 전반적으로 AnCoder는 코드 생성에 구조적 사전지식을 효과적으로 주입함으로써 확산 모델의 실용성을 크게 높인 혁신적 접근이라 할 수 있다.
댓글 및 학술 토론
Loading comments...
의견 남기기