[Paper] LLMSniffer: GraphCodeBERT와 Supervised Contrastive Learning을 이용한 LLM이 생성한 코드 감지
발행: (2026년 4월 17일 PM 10:32 GMT+9)
9 분 소요
원문: arXiv
Source: arXiv - 2604.16058v1
개요
LLMSniffer는 시기적절한 문제에 접근합니다: GPT‑4와 같은 대형 언어 모델(LLM)이 프로덕션 수준의 코드를 작성하기 시작하면서, 개발자, 교육자, 보안 팀은 코드 조각이 인간에 의해 작성된 것인지 AI에 의해 생성된 것인지 신뢰할 수 있는 방법이 필요합니다. 저자들은 코드 인식 트랜스포머 GraphCodeBERT를 두 단계의 지도 대비 학습 파이프라인으로 미세 조정하는 탐지 프레임워크를 제안하며, 두 개의 확립된 벤치마크에서 정확도가 눈에 띄게 향상된다고 보고합니다.
주요 기여
- 코드 탐지를 위한 대조 학습 미세조정 – GraphCodeBERT의 임베딩 공간을 선명하게 만드는 2단계 감독 대조 학습 방식을 도입하여 AI‑생성 코드와 인간이 작성한 코드를 쉽게 구분할 수 있게 함.
- 주석 제거 전처리 – 학습 전에 주석을 제거하여 모델이 표면적인 단서(예: “generated by …”)에 의존하는 것을 방지하고 보다 깊은 의미 학습을 강제함.
- 정제된 임베딩 위에 MLP 분류기 – 가벼운 다층 퍼셉트론이 대조 학습된 표현을 이진 판단(LLM‑생성 vs. 인간)으로 변환함.
- 최첨단 성능 – GPTSniffer 데이터셋에서 정확도가 70 %에서 78 %로(F1 점수 68 %에서 78 %로) 향상되고, Whodunit 데이터셋에서는 정확도가 91 %에서 94.65 %로(F1 점수 91 %에서 94.64 %로) 개선됨.
- 오픈 리소스 – 모델 체크포인트, 전처리 스크립트, 데이터셋, 인터랙티브 데모를 공개하여 재현성 및 후속 연구를 가속화함.
방법론
- Data preparation – 저자들은 인간이 작성한 코드와 LLM이 생성한 코드 스니펫이 쌍으로 포함된 두 개의 공개 코퍼스(GPTSniffer, Whodunit)로 시작합니다. 모든 주석은 사소한 탐지 신호를 피하기 위해 제거됩니다.
- Base encoder – GraphCodeBERT는 소스 코드 그래프(AST‑보강) 위에서 사전 학습된 트랜스포머로, 구문 및 데이터 흐름 정보를 이미 포착하고 있기 때문에 백본으로 사용됩니다.
- Two‑stage supervised contrastive learning
- Stage 1: 인코더는 동일 클래스(인간 또는 AI)의 임베딩을 서로 가깝게, 반대 클래스의 임베딩은 멀리 떨어뜨리는 감독 대조 손실로 미세 조정됩니다.
- Stage 2: 동일 인코더를 보다 구별력 있는 임베딩 공간을 활용하여 표준 교차 엔트로피 손실로 추가 정제합니다.
- Classification head – 간단한 MLP(두 개의 은닉층)가 최종 임베딩을 읽어 이진 레이블을 출력합니다.
- Evaluation – 정확도, F1‑score, t‑SNE 시각화를 사용하여 정량적 성능과 학습된 임베딩 클러스터의 품질을 모두 평가합니다.
결과 및 발견
| 데이터셋 | Baseline 정확도 / F1 | LLMSniffer 정확도 / F1 |
|---|---|---|
| GPTSniffer | 70 % / 68 % | 78 % / 78 % |
| Whodunit | 91 % / 91 % | 94.65 % / 94.64 % |
- 임베딩 분리: t‑SNE 플롯은 대비 학습 미세조정 후 인간 코드와 AI 코드가 서로 명확히 구분된 군집을 형성함을 보여주며, 손실 함수가 잠재 공간을 효과적으로 구조화함을 확인합니다.
- 주석 제거에 대한 견고성: 주석 단서가 없어도 모델은 높은 성능을 유지하여, 표면적인 패턴이 아니라 더 깊은 코드 의미를 학습함을 나타냅니다.
- 효율성: 대비 단계가 추가된 훈련 오버헤드는 적지만 정확도 향상이 크게 나타나 실제 파이프라인에 적용하기에 실용적입니다.
Source: …
실용적인 시사점
- 코드 리뷰 도구 – LLMSniffer를 pre‑commit 훅이나 CI 단계에 통합하여 AI‑생성된 코드 조각을 표시함으로써 팀이 코딩 표준을 적용하거나 잠재적인 표절을 감지하도록 돕습니다.
- 학문적 무결성 – 대학에서는 학생 제출물을 자동으로 검사하여 LLM‑생성 코드 여부를 확인함으로써 프로그래밍 과제의 공정성을 유지할 수 있습니다.
- 보안 감사 – AI‑생성 코드는 미묘한 취약점을 포함할 수 있으므로, 조기 탐지를 통해 보안 팀이 목표가 되는 정적 분석을 적용할 수 있습니다.
- 라이선스 준수 – 기업은 독점 LLM에 의해 생성된 코드가 다른 사용 라이선스가 적용될 수 있는 경우를 모니터링하여 무심코 포함되는 것을 방지할 수 있습니다.
- 연구 기반 – 공개된 체크포인트와 데모는 코드와 커밋 메시지를 결합하는 멀티모달 탐지와 같은 향후 연구 및 다른 프로그래밍 언어로 확장하기 위한 기준선을 제공합니다.
제한 사항 및 향후 작업
- Language coverage – 실험은 제한된 언어 집합(주로 Python/Java)에 초점을 맞추었습니다. 덜 일반적인 언어로 확장하려면 추가 사전 학습이 필요할 수 있습니다.
- Evolving LLMs – LLM이 개선됨에 따라 탐지는 지속적으로 변하는 목표가 됩니다; 저자들은 새로운 AI 생성 샘플을 사용한 지속적인 재학습의 필요성을 언급합니다.
- Adversarial evasion – 변수 이름 변경, 재포맷과 같은 간단한 난독화는 탐지 성능을 저하시킬 수 있습니다; 향후 연구에서는 이러한 공격에 대한 견고성을 탐구할 수 있습니다.
- Explainability – 임베딩은 잘 구분되지만, 현재 모델은 결정에 대한 인간이 읽을 수 있는 이유를 제공하지 않습니다; 해석 가능성 레이어를 추가하면 실제 환경에서 신뢰성을 높이는 데 도움이 될 것입니다.
저자
- Mahir Labib Dihan
- Abir Muhtasim
논문 정보
- arXiv ID: 2604.16058v1
- 카테고리: cs.SE, cs.CL
- 출판일: 2026년 4월 17일
- PDF: PDF 다운로드