UCSC-NLP at SemEval-2026 Task 13: Multi-View Generalization and Diagnostic Analysis of Machine-Generated Code Detection
UCSC-NLP 팀은 UniXcoder-base 의 다중 뷰 파인튜닝 프레임워크를 통해 기계 생성 코드의 강력한 이진 탐지를 달성함으로써 SemEval-2026 태스크 13 에 대응하는 한편, 심각한 데이터 불균형으로 인한 다중 클래스 귀속의 치명적 실패를 극복하기 위해 클래스 가중 훈련이 필수적임을 입증했습니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 숙제 더미를 채점하려는 선생님이라고 상상해 보세요. 당신은 두 가지 주요 과제를 안게 됩니다:
- "누가 썼는가?" 테스트: 학생이 에세이를 직접 썼는지, 아니면 로봇을 이용해 작성했는지 구별할 수 있나요?
- "어떤 로봇인가?" 테스트: 만약 로봇이 작성했다면, 정확히 어떤 로봇 모델 (예: 로봇 A, 로봇 B, 로봇 C) 이 사용되었는지 파악할 수 있나요?
이 논문은 UC 샌타크루즈의 한 팀이 컴퓨터 코드를 위해 이러한 문제들을 해결하는 시스템을 구축했다고 설명합니다. 그들은 그들의 시스템이 AI 가 생성한 코드를 탐지하는 데 얼마나 뛰어난지 확인하기 위해 (SemEval-2026 Task 13) 대회에 참가했습니다.
그들이 어떻게 두 가지 과제를 해결했는지 간단히 설명해 보겠습니다:
과제 1: "누가 썼는가?" 테스트 (이진 탐지)
문제: 팀은 파이썬, C++, 자바 코드로 작성된 데이터로 시스템을 훈련시켰습니다. 하지만 테스트할 때는 그들이 본 적 없는 언어 (예: Go 나 PHP) 와 다른 스타일 (예: 연구 논문이나 프로덕션 소프트웨어) 의 코드를 제공했습니다. 보통 AI 탐지기는 특정 단어나 언어를 외우는 대신 코드의 "분위기"를 학습하지 않기 때문에 여기서 실패합니다.
해결책: "세 가지 렌즈" 카메라
팀은 코드를 한 번만 보는 대신, 모든 코드를 세 가지 다른 렌즈를 통해 동시에 보도록 시스템을 가르쳤습니다:
- 원본 렌즈: 코드를 있는 그대로 봅니다.
- "안대" 렌즈 (탈어휘화): 문장을 가져와서 사람 이름, 장소, 숫자를 "Person", "Place", "Number" 같은 일반적 단어로 모두 대체한다고 상상해 보세요. 이는 시스템이 언어마다 달라지는 특정 변수 이름을 무시하고 논리의 구조에 집중하도록 강요합니다.
- "혼합" 렌즈: 코드 조각에 평범한 영어 텍스트를 무작위로 섞어 넣었습니다. 이는 완벽하게 포맷되지 않은 messy 한 실제 세계의 코드를 처리하도록 시스템을 가르쳤습니다.
비유: 가방을 검사하는 보안 요원을 생각해 보세요.
- 옛 방식: 보안 요원은 "빨간 여행가방 = 나쁜 것"이라고 외웁니다. 당신이 파란 여행가방을 가져오면 그들은 놓칩니다.
- 새 방식: 보안 요원은 가방을 세 가지 각도에서 봅니다: 바깥쪽, 안쪽 (브랜드 로고는 무시), 그리고 무작위 물건을 섞은 버전. 세 가지 시야 모두에서 가방의 구조가 의심스러우면, 그들은 이를 표시합니다.
결과: 이는 놀라울 정도로 잘 작동했습니다. 코드가 새로운 언어나 스타일일지라도, 그들의 시스템은 약 **84.5%**의 확률로 그것을 "인간" 또는 "AI"로 정확하게 식별했습니다.
과제 2: "어떤 로봇인가?" 테스트 (다중 클래스 귀속)
문제: 이는 훨씬 더 어려웠습니다. 팀은 10 가지 다른 AI 모델 중 어떤 모델이 코드를 작성했는지 식별해야 했습니다.
- 데이터 편향: 500 명의 학생이 있는 교실을 상상해 보세요. 442 명은 인간이고, 나머지 58 명은 로봇이지만 10 가지 다른 로봇 유형으로 나뉩니다. 어떤 로봇 유형은 교실에 2 명만 있습니다.
- 함정: 만약 당신이 이 교실의 선생님으로 훈련된다면, 당신은 매우 쉬운 요령을 배우게 됩니다: "내가 그냥 모두에게 '인간'이라고 추측하면, 나는 88% 의 확률로 맞을 것이다!"
- 실패: 팀이 이를 시도했을 때, 시스템은 88% 의 "정확도" 점수를 얻었지만 이는 거짓이었습니다. 그것은 로봇을 완전히 무시하고 있었습니다. 그것은 거의 100% 의 확률로 소수 로봇 클래스를 식별하지 못했습니다. 모든 것에 경보를 울리지만, 오직 동전에만 울리고 금은 무시하는 금속 탐지기 같았습니다.
해결책: "가중 점수"
이를 해결하기 위해 그들은 게임의 규칙을 변경했습니다. 그들은 시스템에게 말했습니다: "만약 당신이 '인간'을 맞히면 1 점을 받습니다. 하지만 희귀한 로봇을 맞히면 200 점을 받습니다."
이것은 시스템을 게으름을 피우지 않고 실제로 희귀한 로봇을 찾아내도록 학습하게 만들었습니다.
결과:
- 이전: 시스템은 로봇을 찾는 데 끔찍한 0.08 점의 "인간 추측기"였습니다.
- 이후: 새로운 규칙으로 인해 시스템의 특정 로봇을 찾는 능력이 301% 급증했습니다. 완벽해진 것은 아니지만, 드문 클래스를 무시하는 대신 마침내 그것을 보기 시작했습니다.
그들이 배운 것은 무엇인가? ("왜")
팀은 시스템의 "뇌"를 살펴보고 (t-SNE 라는 시각화 기법을 사용), 흥미로운 사실을 발견했습니다:
- 과제 1 (인간 vs AI): "인간" 코드와 "AI" 코드는 두 개의 뚜렷하고 분리된 섬을 형성했습니다. 시스템은 이를 쉽게 구별할 수 있었습니다.
- 과제 2 (어떤 AI?): 모든 다른 AI 모델 (OpenAI, Meta, IBM 등) 은 인간 코드와 겹치는 하나의 거대하고 messy 한 더미에 모여 있었습니다.
왜?
- 공유된 식단: 이 모든 로봇은 같은 인터넷 데이터 (GitHub, StackOverflow) 로 훈련되었기 때문에, 모두 매우 유사하게 보이는 코드를 작성하는 법을 배웠습니다.
- 동일한 아키텍처: 그들은 모두 유사한 뇌 구조 (트랜스포머) 를 사용하므로, 그들의 "필적"은 거의 동일합니다.
- 수학은 수학이다: 코딩 문제를 해결하는 올바른 방법은 보통 몇 가지뿐이므로, 누구나 (인간이든 로봇이든) 결국 같은 솔루션을 작성하게 됩니다.
결론
- 코드가 AI 인지 알 수 있나요? 네, 매우 잘 알 수 있습니다. 언어가 변하더라도 시스템이 단어뿐만 아니라 구조를 보도록 가르친다면 가능합니다.
- 어떤 AI 가 작성했는지 알 수 있나요? 매우 어렵습니다. 서로 다른 AI 들이 너무 유사하고 데이터가 불균형하여 표준 방법은 실패합니다. 드문 사례에 관심을 갖도록 시스템을 강제하기 위해 특별한 "가중치" 트릭을 사용해야 합니다.
경고: 저자들은 그들의 시스템이 완벽하지 않다고 지적합니다. 때로는 매우 간결한 인간 코더를 AI 로 오인하거나, verbose 한 AI 를 인간으로 오인하기도 합니다. 이러한 이유로 그들은 이 도구가 (누구를 해고하거나 학생을 낙제시키는 등) 인생을 바꾸는 결정을 내리는 데 절대 단독으로 사용되어서는 안 된다고 말합니다. 반드시 인간이 결과를 재확인해야 합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.