← 최신 논문
💬 NLP

Fine-Tuning Pre-Trained Code Models for AI-Generated Code Detection

본 논문은 AI 생성 코드를 탐지하고 그 출처를 규명하는 데 있어 최상위 성능을 달성하기 위해 미세 조정된 사전 훈련된 코드 모델과 언어별 교차 검증 및 샌드위치 토큰 패킹과 같은 전문 전략을 활용하는 SemEval-2026 태스크 13 을 위한 "Archaeology"팀의 시스템을 제시합니다.

원저자: Jany-Gabriel Ispas, Sergiu Nisioi

게시일 2026-05-05
📖 4 분 읽기☕ 가벼운 읽기

원저자: Jany-Gabriel Ispas, Sergiu Nisioi

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

고고학이라는 이름의 디지털 탐정 사무소를 상상해 보세요. 그들의 임무는 고대 도자기를 파내는 것이 아니라, 컴퓨터 코드 더미를 뒤져 두 가지 큰 질문에 답하는 것입니다:

  1. 누가 이걸 썼을까? 인간 프로그래머였을까, 아니면 로봇 (AI) 이었을까?
  2. 어떤 로봇이 썼을까? 만약 로봇이었다면, 어떤 특정 AI 모델이 만들었을까?

이 팀은 자신의 실력을 증명하기 위해 SemEval-2026 Task 13이라는 고도의 위험이 따르는 대회에 참여했습니다. 그들이 어떻게 했는지 간단히 설명해 드리겠습니다.

도전 과제: 두 부분으로 이루어진 미스터리

대회는 각각 다른 탐정 전략이 필요한 두 가지 뚜렷한 퍼즐로 구성되어 있었습니다.

퍼즐 A: "인간 vs 로봇" 테스트 (이진 분류)

  • 목표: 코드 조각을 보고 "인간" 또는 "AI"라고 말하기.
  • 함정: 팀은 주로 파이썬 코드 (연습 데이터의 91%) 로 훈련되었지만, 최종 테스트에는 자바스크립트, Go, C#처럼 그들이 본 적 없는 언어들이 포함되었습니다. 마치 이탈리아 요리만 요리하도록 훈련된 셰프에게, 실제로는 태국 커리일 때 그 요리가 집에서 만든 것인지 공장에서 만든 것인지 식별하라고 요구하는 것과 같습니다.
  • 단서: AI 코드는 일반적으로 더 길고 균일한 반면, 인간 코드는 더 짧고 혼란스럽습니다. 하지만 이 규칙은 언어에 따라 뒤집힙니다 (예: C++ 의 경우 인간이 AI 보다 실제로 더 긴 코드를 작성합니다).

퍼즐 B: "어떤 로봇?" 테스트 (다중 클래스 귀속)

  • 목표: 코드가 AI 에 의해 생성된 경우, 정확히 11 개의 서로 다른 AI 모델 중 어떤 것이 작성했는지 식별하기.
  • 함정: 데이터가 극도로 불균형했습니다. 한 카테고리 (인간이 작성한 코드) 는 데이터의 **88%**를 차지하는 반면, 일부 특정 AI 모델은 2,000 개 미만의 예시만 있었습니다. 99% 가 건초이고 바늘은 다양한 색이지만, 빨간 바늘은 하나뿐이고 파란 바늘은 백만 개뿐인 건초더미에서 바늘을 찾으려 하는 것과 같습니다.
  • 단서: 서로 다른 AI 모델은 미묘한 "필체" 스타일을 가지고 있지만, 이러한 스타일은 길고 복잡한 코드에서는 발견하기 어렵습니다.

탐정의 도구상자

팀은 단순히 추측한 것이 아니라, 각 퍼즐에 맞는 특별한 훈련 기법을 적용한 네 가지 다른 "초시력" (사전 훈련된 AI 모델) 을 사용했습니다.

퍼즐 A (인간 vs 로봇) 를 위해

  1. "언어 교체" 훈련: 테스트 중 예상치 못한 언어에 대비하기 위해, 한 번에 하나의 언어를 숨기며 모델을 훈련시켰습니다. 이는 모델이 파이썬이 #을 주석으로 사용하는 것과 같은 특정 언어 트릭에 의존하지 않고 패턴을 인식하도록 가르쳤습니다.
  2. "스크럽 및 마스킹" 운동: 훈련 중 주석을 제거하고 숫자를 자리 표시자로 대체했습니다. 이는 모델이 표면적인 장식이 아닌 코드의 논리를 보도록 강요했습니다.
  3. "조각화" 전략: 테스트 코드가 한 번에 읽기에는 너무 길기 때문에, 겹치는 조각으로 잘랐습니다 (긴 책을 몇 페이지씩 읽는 것처럼). 그런 다음 가장 극단적인 "노이즈" 추측을 무시하고 이 조각들의 평균을 내어 최종 결정을 내렸습니다.
  4. "어려운 사례" 보정: 간단한 컴퓨터 프로그램이 틀린 예시를 사용하여 특별한 "어려운 테스트"를 만들었습니다. 그들은 이러한 까다로운 사례를 기반으로 결정 임계값 ("인간"과 "AI" 사이의 선) 을 조정하여 테스트 데이터에 속지 않도록 했습니다.

퍼즐 B (어떤 로봇?) 를 위해

  1. "샌드위치" 기법: 코드가 모델의 메모리에 들어가기에 너무 길었기 때문에, 단순히 중간을 잘라내지 않았습니다. 대신 코드의 머리 (시작) 와 꼬리 (끝) 를 유지하고 중간에 특별한 마커를 넣어 샌드위치처럼 끼웠습니다. 이는 종종 "로봇 서명"이 숨어 있는 시작과 끝의 스타일을 보존했습니다.
  2. "공정성" 가중치: 일부 AI 모델이 데이터에서 희귀했기 때문에, 팀은 모델에게 "가장 흔한 것을 추측하기만 하지 마라! 희귀한 것들에 더 주의를 기울여라"라고 말했습니다. 그들은 점수 시스템을 조정하여 모델이 인기 있는 로봇뿐만 아니라 희귀한 로봇도 찾도록 학습시켰습니다.
  3. "군중의 지혜" 투표: 그들은 동일한 코드를 약간의 변형으로 모델을 여러 번 실행하고 모델들이 답에 투표하도록 했습니다. 이는 오류를 줄이고 신뢰도를 높였습니다.

결과

"고고학" 팀은 매우 잘했습니다:

  • 퍼즐 A: 0.737의 점수를 받아 81 개 팀 중 6 위를 차지했습니다. 그들의 가장 훌륭한 도구는 다른 모델들보다 코드의 "논리"를 더 잘 이해하는 것처럼 보였던 CodeBERT였습니다.
  • 퍼즐 B: 0.422의 점수를 받아 34 개 팀 중 7 위를 차지했습니다. 여기서 그들의 가장 훌륭한 도구는 더 긴 코드 조각을 보고 "투표" 전략을 사용한 UniXcoder였습니다.

핵심 교훈

팀은 모델이 어떻게 훈련되었는지가 모델의 크기보다 더 중요하다는 사실을 발견했습니다.

  • 코드 논리를 이해하도록 특별히 훈련된 더 작은 모델들 (1 억 2,500 만 개 파라미터) 이 AI 를 찾아내는 데 더 잘 수행했습니다.
  • 거대 모델 (2 억 2,000 만 개 파라미터) 은 승리하지 못했는데, 이는 이 특정 작업의 경우 "전문가"가 "일반가"보다 낫다는 것을 시사합니다.

요약하자면, 팀은 긴 코드를 잘라내고, 표면 노이즈를 무시하며, 답에 투표하는 것과 같은 올바른 훈련 트릭을 사용하면 새로운 언어로 위장하려 할지라도 AI 에 의해 생성된 코드를 잡는 데 놀라울 정도로 뛰어난 시스템을 구축할 수 있음을 증명했습니다.

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

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

Digest 사용해 보기 →