← 최신 논문
🤖 machine learning

Synthetic Hallucinations, Real Gains: Hard Negatives from Frontier Models for FIM Hallucination Mitigation

이 논문은 프런티어 모델을 사용하여 하드 네거티브 예시를 합성하고, 이를 지도 미세 조정에 활용함으로써 실행 샌드박스나 인간의 레이블 없이도 여러 언어와 벤치마크에서 성능을 크게 향상시키는, 소규모 코드 모델의 Fill-in-the-Middle 환각 현상을 완화하기 위한 실행 불필요(execution-free) 접근 방식을 제안한다.

원저자: Mahdi Erfanian, Nelson Daniel Troncoso, Aashna Garg, Amabel Gale, Xiaoyu Liu, Pareesa Ameneh Golnari, Shengyu Fu

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

원저자: Mahdi Erfanian, Nelson Daniel Troncoso, Aashna Garg, Amabel Gale, Xiaoyu Liu, Pareesa Ameneh Golnari, Shengyu Fu

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

문제점: "자신감 넘치지만 틀린" 자동 완성

당신이 코드 에디터에서 코드를 입력하고 있는데, AI 어시스턴트가 문장을 완성해 주려고 한다고 상상해 보세요. 때때로 이 AI는 특정 교과서의 내용을 실제로 읽지는 않았으면서, 그 교과서의 '스타일'만 암기한 자신만만한 학생처럼 행동합니다.

이 AI는 실제로는 존재하는 것처럼 들리는 함수 이름이나, 문법적으로는 완벽하지만 실제로 당신의 프로젝트에는 존재하지 않는 변수를 제안할 수 있습니다. 이를 **환각(Hallucination)**이라고 부릅니다. 코딩의 세계에서 이것은 매우 위험합니다. 눈으로 보기에는 올바른 코드처럼 보이지만, 실행하는 순간 프로그램이 멈춰버리기 때문입니다.

이를 해결하기 위한 기존 방식들은 번거롭습니다:

  1. "샌드박스(Sandbox)" 방식: 모든 제안을 실제로 실행해 보고 작동하는지 확인합니다. 이는 실시간 타이핑을 하기에는 너무 느립니다 (제안 하나를 받기 위해 5초를 기다릴 수는 없으니까요).
  2. "인간 교사" 방식: 인간이 수천 개의 "좋은" 코드와 "나쁜" 코드 사례에 라벨을 붙입니다. 이는 비용이 많이 들고 속도가 느립니다.

해결책: "장난꾸러기" 선생님

저자들은 코드를 직접 실행하거나 군단 규모의 인력을 고용하지 않고도, 작고 빠른 AI 모델을 훈련시키는 영리한 새로운 방법을 제 และ 제안합니다. 그들은 이를 **"합성된 환각, 실질적인 이득(Synthetic Hallucinations, Real Gains)"**이라고 부릅니다.

이것은 마치 위조지폐를 식별하도록 보안 요원을 훈련시키는 것과 같습니다. 보안 요원에게 진짜 지폐만 보여주는 대신, 전문가 수준의 위조범(프런티어 모델들)을 고용하여 거의 완벽해 보이는 가짜 지폐를 만들게 하는 것입니다.

그들의 파이프라인은 다음과 같이 작동합니다:

  1. 설정: 공개된 프로젝트(GitHub 등)에서 실제 코드를 가져와 중간 부분을 잘라내어, AI가 채워 넣어야 할 "구멍"을 만듭니다.
  2. 장난꾸러기들: 세 개의 매우 똑똑하고 강력한 AI 모델에게 그 구멍을 채우라고 요청하되, 실수를 하도록 지시합니다. 구체적으로, 이 장난꾸러기들에게 그럴듯해 보이지만 틀린 가짜 함수 이름, 가짜 변수, 또는 가짜 임포트(import)를 만들어내라고 요구합니다.
  3. "하드 네거티브(Hard Negative)": 이 가짜 제안들을 "하드 네거티브"라고 부릅니다. 이것은 완벽한 훈련 도구입니다. 왜냐하면 인간(또는 약한 AI)을 속일 정도로 까다로우면서도, 확실하게 틀렸기 때문입니다.
  4. 수업: 작은 AI 모델에게 구멍(코드의 빈칸), 실제 정답(원본 코드에서 가져온 것), 그리고 가짜 오답(장난꾸러기가 만든 것)을 함께 보여줍니다. 그리고 모델에게 이렇게 가르칩니다: "이것이 정답이야. 저 가짜는 그럴싸해 보이지만 함정이야. 함정을 찾아내는 법을 배워라."

결과: 더 똑똑하고 빠른 어시스턴트

그들은 이 방법을 30억(3B) 및 70억(7B) 파라미터 크기의 작은 코딩 모델들에 테스트했습니다. 결과는 다음과 같았습니다:

  • "마법 같은" 개선: 이 방법으로 70억 파라미터 모델을 훈련시켰을 때, 환각을 피하는 능력이 거의 19포인트나 상승했습니다. 이는 엄청난 도약입니다.
  • 더 큰 모델을 이기다: 흥로하게도, 이 방법으로 훈련된 작은 모델(3B 크기)이 훈련되지 않은 훨씬 더 큰 모델(7B 크기)보다 이러한 특정 실수를 피하는 데 더 뛰어난 성능을 보였습니다. 즉, 훈련 데이터뇌의 크기보다 더 중요했던 것입니다.
  • 멈추는 법 배우기: 숨겨진 보너스는 모델이 정확히 언제 타이핑을 멈춰야 하는지를 배웠다는 점입니다. 종종 AI 모델은 문장을 마친 후에도 의미 없는 내용을 계속 써 내려가곤 합니다. 이 훈련은 모델이 결승선 바로 앞에서 멈출 수 있도록 가르쳤습니다.

"비법 소스" (성공의 이유)

저자들은 왜 이 방법이 잘 작동했는지 알아내기 위해 많은 실험을 수행했습니다. 그들은 몇 가지 핵심 규칙을 발견했습니다:

  • 양도 중요하지만, 한계가 있다: 최상의 결과를 얻기 위해서는 약 50,000개에서 100,000개의 사례가 필요했습니다. 그 이상의 데이터를 추가하는 것은 큰 도움이 되지 않았습니다.
  • 다양성이 핵심이다: 다양한 프로그래밍 언어(Python, Java, C# 등)의 예시를 사용해야 했습니다. 만약 Python만 사용했다면 모델은 혼란을 느꼈을 것입니다. 다섯 개 이상의 언어를 사용함으로써 모델은 특정 단어가 아니라 '거짓말을 하는 패턴' 자체를 이해할 수 있었습니다.
  • "함정"의 수준: 가짜 예시는 까다로워야 했습니다. 만약 가짜 코드가 너무 뻔하게 틀렸다면(예: do_fake_stuff라는 이름의 함수), 모델은 아무것도 배우지 못했습니다. 가장 좋은 훈련은 "중간" 단계의 예시, 즉 심판들을 거의 속일 정도로 그럴싸한 가짜들로부터 나왔습니다.
  • 다양한 모델에 적용 가능: 이 방법은 세 가지 다른 유형의 베이스 AI 모델에 모두 작동했으며, 이는 이것이 특정 모델에만 국한된 기술이 아닌 보편적인 레시피임을 증명합니다.

트레이드오프: 크기가 중요하다

한 가지 주의할 점이 있었습니다. 이 방법을 가장 작은 모델(30억 파라미터)에 적용했을 때, 환각을 방지하는 데는 탁월했지만 때때로 길고 복잡한 코드를 올바르게 쓰는 법을 잊어버리는 현상이 나타났습니다. 마치 오타를 잡아내는 데는 완벽하지만, 긴 에세이를 쓰는 법은 잊어버린 학생과 같았습니다. 저자들은 이 방법이 최소 70억 파라미터 이상의 크기를 가진 모델에 가장 적합하다고 제안합니다.

결론

이 논문은 AI의 환각을 해결하기 위해 코드를 실행하거나 인간을 고용할 필요가 없음을 보여줍니다. 대신, "똑똑한 장난꾸러기"를 사용하여 가짜의 까다로운 실수들을 생성하고, AI가 이를 식별하도록 가르치면 됩니다. 이를 통해 더 빠르고 신뢰할 수 있으며, 언제 멈춰야 하는지, 그리고 언제 "그 함수는 모릅니다"라고 말해야 하는지를 아는 코딩 어시스턴트를 만들 수 있습니다.

저자들은 이 전체 과정을 수행할 수 있는 코드를 공개하였으므로, 공개된 코드와 강력한 AI 모델에 접근할 수 있는 사람이라면 누구나 이 결과를 재현할 수 있습니다.

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

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

Digest 사용해 보기 →