코드서킷: 내부 어트리뷰션 그래프로 LLM 생성 코드의 정확성 추론

코드서킷: 내부 어트리뷰션 그래프로 LLM 생성 코드의 정확성 추론
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

본 논문은 대형 언어 모델(LLM)이 코드를 생성할 때 내부 신경망 흐름을 라인‑레벨 어트리뷰션 그래프로 변환하고, 그래프의 위상·구조 특징을 이용해 각 코드 라인의 논리적 정확성을 예측한다. Python, C++, Java에 대한 실험에서 제안 방법이 기존 블랙‑박스 검증보다 높은 정확도를 보였으며, 그래프 노드에 대한 직접적인 개입을 통해 오류를 교정할 수 있음을 입증한다.

상세 분석

CodeCircuit은 메커니즘 해석(mechanistic interpretability) 분야의 최신 흐름을 코드 검증에 적용한 획기적인 시도이다. 핵심 아이디어는 LLM의 MLP 레이어를 “Per‑Layer Transcoder”(PLT) 로 대체해 잔차 스트림(residual stream)을 희소하고 해석 가능한 특징 공간으로 투사하고, 이를 기반으로 라인‑레벨 어트리뷰션 그래프(AG)를 구축한다. AG는 노드(임베딩, PLT 특징, 오류 노드, 로짓)와 그 사이의 선형 기여(weight)로 구성된 DAG이며, 각 에지는 잔차 스트림의 Jacobian을 이용해 정량화된다.

그래프를 구축한 뒤, 저자들은 (1) 전역 밀도, 연결 컴포넌트 수, 클러스터링 계수 등 구조적 통계, (2) 오류‑특징 비율 η, (3) 중심성(betweenness, degree) 분포의 평균·표준편차·최대값 등 30여 개의 정량적 피처를 추출한다. 이러한 피처는 “정확한 코드”와 “오류 코드” 사이에 뚜렷한 차이를 보이며, 특히 η가 높을수록 모델이 해석 불가능한 히스토리(오류 노드)에 의존한다는 신호로 작용한다.

학습 단계에서는 각 라인별 AG를 Φ 함수를 통해 고정 차원의 벡터 x_i 로 압축하고, 이를 로지스틱 회귀 혹은 작은 MLP h_φ 로 입력해 라인 정확도 y_i 를 예측한다. 교차 엔트로피 손실을 최소화하는 방식으로 파라미터를 최적화한다.

실험에서는 CodeX‑GLM, LLaMA‑2‑7B 등 여러 사전학습 모델에 대해 Python, C++, Java 코드 샘플을 수집하고, 인간 라벨링된 정답/오답 라인을 기준으로 평가하였다. 결과는 기존 온도 스케일링, 체인‑오브‑임베딩(Chain‑of‑Embedding) 등 회색‑박스 방법보다 평균 7~12% 높은 정확도를 기록했다. 특히, 오류 라인에 대한 η와 중심성 피처의 중요도가 크게 나타났으며, 그래프 내 특정 “핵심” 노드에 대한 활성값을 조정(예: 오류 노드 감소)하면 실제 코드 출력이 수정되는 인과적 개입 실험도 성공했다.

한계점으로는 (1) AG 구축에 필요한 PLT 학습 및 Jacobian 계산이 고비용이며, 대규모 모델에선 메모리·시간 제약이 있다. (2) 현재는 라인‑레벨 라벨링에 의존하므로, 복합적인 논리 오류(예: 전체 프로그램 흐름) 탐지는 추가 연구가 필요하다. (3) 모델이 새로운 언어나 프레임워크를 접했을 때 피처 일반화가 유지되는지에 대한 검증이 부족하다.

향후 연구 방향은 (i) 경량화된 트랜스코더 설계와 그래프 압축 기법을 도입해 실시간 검증 파이프라인을 구축, (ii) 다중 라인·함수 수준의 그래프 통합을 통해 전역 오류 탐지 능력을 확대, (iii) 자동 개입 정책을 강화학습과 결합해 “코드 자체 수정” 루프를 구현하는 것이다.


댓글 및 학술 토론

Loading comments...

의견 남기기