← 최신 논문
💬 NLP

LLMSniffer: Detecting LLM-Generated Code via GraphCodeBERT and Supervised Contrastive Learning

이 논문은 주석 제거 전처리와 두 단계의 지도 대비 학습을 통해 GraphCodeBERT 를 미세 조정하는 'LLMSniffer' 프레임워크를 제안하여, 기존 벤치마크에서 LLM 생성 코드와 인간 작성 코드를 구별하는 정확도와 F1 점수를 크게 향상시켰음을 보여줍니다.

원저자: Mahir Labib Dihan, Abir Muhtasim

게시일 2026-04-20
📖 3 분 읽기☕ 가벼운 읽기

원저자: Mahir Labib Dihan, Abir Muhtasim

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

1. 왜 이런 것이 필요할까요? (배경)

요즘은 GitHub Copilot이나 ChatGPT 같은 AI 가 코딩을 도와줍니다. 마치 요리사가 레시피를 AI 에게 물어보며 요리를 하는 것처럼요.
하지만 문제가 생겼습니다.

  • 학교에서: 학생이 숙제를 AI 에게 시켰는지, 직접 했는지 알 수 없게 되었습니다. (표절 문제)
  • 회사에서: 코드가 AI 가 만든 것이라면 보안에 문제가 있거나 버그가 있을 수 있습니다.

기존의 텍스트 검사기는 "글쓰기"는 잘하지만, 코드의 복잡한 구조를 이해하지 못해 실패했습니다. 그래서 코드의 '뼈대'와 '흐름'까지 보는 새로운 탐정이 필요했습니다.


2. LLMSniffer 는 어떻게 작동할까요? (핵심 아이디어)

이 시스템은 세 가지 비밀 무기를 사용합니다.

🛠️ 무기 1: "주석 (설명글) 은 버려라!" (Comment Removal)

  • 비유: AI 가 쓴 코드는 보통 "이 부분이 무엇을 하는지 설명해 드릴게요"라고 길고 자세한 설명 (주석) 을 달아놓는 경향이 있습니다. 마치 가짜 지문처럼요.
  • 작동: LLMSniffer 는 코드를 분석하기 전에 이 설명글들을 모두 지워버립니다.
  • 이유: 설명글에 의존하면 AI 가 쓴 것을 쉽게 알 수 있지만, 그건 '지문'을 보고 잡는 것이지 진짜 실력을 보는 게 아닙니다. 설명을 지우고 코드 자체의 구조와 논리만 보고 판단해야 진짜 실력 (사람 vs AI) 을 가릴 수 있습니다.

🧠 무기 2: "코드의 혈관 지도" (GraphCodeBERT)

  • 비유: 일반적인 코딩 도구는 코드를 '문장'으로만 봅니다. 하지만 LLMSniffer 는 코드를 도시의 교통 지도처럼 봅니다.
    • "A 변수가 어디서 만들어져서, B 함수로 흘러가서, C 에서 사용된다"는 데이터의 흐름을 그래프로 그립니다.
  • 효과: AI 는 문장은 잘 쓰지만, 복잡한 변수 간의 흐름을 인간처럼 자연스럽게 연결하는 데는 아직 약점이 있습니다. 이 '흐름 지도'를 분석하면 AI 의 뻔한 패턴을 쉽게 찾아냅니다.

🎯 무기 3: "비교 학습" (Supervised Contrastive Learning)

  • 비유: 이 방법은 음악 경연대회 심사와 비슷합니다.
    • 기존 방식: "이 노래가 100 점 만점에 몇 점일까?"라고 점수만 매겼습니다.
    • LLMSniffer 방식: "이 노래 (AI) 와 저 노래 (사람) 는 서로 얼마나 다른가?"를 집중적으로 비교합니다.
    • 작동: 같은 종류 (사람이 쓴 것끼리, AI 가 쓴 것끼리) 는 서로 가까이 붙게 하고, 다른 종류는 멀리 떨어뜨리도록 훈련시킵니다.
  • 결과: AI 가 쓴 코드는 한쪽으로 쏠리고, 사람이 쓴 코드는 다른 쪽으로 쏠려서 완벽하게 분리됩니다.

3. 실험 결과: 얼마나 잘할까요?

이 시스템은 두 가지 큰 시험 (GPTSniffer, Whodunit) 을 치렀습니다.

  • 기존 방법: 70%~90% 정도의 정확도. (AI 가 쓴 것을 사람으로 오인하거나, 반대로 사람을 AI 로 오인하는 경우가 많았습니다.)
  • LLMSniffer:
    • 정확도 78% → 94.65% 로 대폭 상승!
    • 특히 F1 점수(정확도와 빠르기를 모두 고려한 점수)가 크게 개선되었습니다.
    • t-SNE 시각화 (그림 2): AI 가 쓴 코드와 사람이 쓴 코드가 완전히 분리된 두 개의 뭉치로 보였습니다. 마치 검은색 공과 흰색 공이 섞여있지 않고 따로 떨어져 있는 것처럼요.

4. 요약 및 결론

LLMSniffer는 단순히 "단어를 비교"하는 것이 아니라, **코드의 구조 (흐름)**를 보고 **불필요한 설명 (주석)**을 제거한 뒤, AI 와 사람의 코드를 서로 비교하며 학습하는 방식으로 작동합니다.

  • 핵심 메시지: "AI 가 쓴 코드는 설명글이 너무 많고, 변수 흐름이 조금 어색합니다. 이걸 찾아내면 됩니다."
  • 미래: 이 기술은 교육 현장의 공정한 평가를 돕고, 소프트웨어의 안전성을 지키는 데 큰 역할을 할 것입니다.

저자들은 이 모델의 모든 코드와 데이터를 공개하여 누구나 사용할 수 있게 했으며, 웹사이트에서도 실시간으로 코드를 붙여넣고 검사해 볼 수 있습니다.

한 줄 요약: "LLMSniffer 는 코드의 '속마음 (구조)'만 보고, '겉치레 (주석)'는 무시하며, AI 와 사람의 코드를 완벽하게 구별하는 초고성능 탐정입니다."

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →