본문으로 건너뛰기

© 2026 Molayo

arXiv논문2026. 05. 22. 23:27

유창하지만 틀린: LLM 기반 코드 현대화에서의 자기 검토(Self-Review) 실패

요약

LLM을 이용한 레거시 코드 현대화 과정에서 모델이 자신의 출력 결과가 동작을 변경했는지 스스로 검토하는 능력이 부족함을 연구했습니다. 실험 결과, 모델의 성능이나 가격과 상관없이 특정 코드 구조에서 의미론적 오류가 빈번하게 발생하며 자기 검토 기능이 신뢰할 수 없는 안전망임을 확인했습니다.

핵심 포인트

  • LLM의 자기 검토(Self-review)는 코드 동작 보존을 보장하지 못함
  • 의미론적 보존 드리프트는 모델 규모보다 작업 구조적 특성에 좌우됨
  • 특정 수치 의미론 스니펫에서 모델 간 공통적인 실패가 관찰됨
  • 모델이 오류를 인지하면서도 동작이 보존되었다고 잘못 판단하는 사례 존재

대규모 언어 모델 (LLM) 에이전트는 레거시 코드를 현대적인 스택으로 마이그레이션하는 데 점점 더 많이 사용되고 있습니다. 우리는 매우 단순해 보이는 질문을 던집니다. LLM이 레거시 코드를 현대화할 때, 동일한 모델이 자신의 출력이 관찰 가능한 동작을 조용히 변경했는지 여부를 인식할 수 있다고 신뢰할 수 있을까요? 우리는 7개의 서로 다른 제품군에 속하는 11개의 프로덕션 LLM을 대상으로 60개의 스니펫으로 구성된 균형 잡힌 legacy-Python-2 코퍼스에서 1,980회의 실제 현대화 호출을 실행했습니다. 모든 출력에 대해 타입 엄격(type-strict) 행동 오라클(behavioral oracle)로 평가한 후, 각 모델에게 자신의 출력이 동작을 보존하는지 판단하도록 요청했습니다. 우리는 네 가지 발견을 보고합니다. (1) 의미론적 보존 드리프트(Semantic-preservation drift)가 만연하며, 정밀하게 제어된 베이스라인과 뚜렷하게 구분됩니다. 의미론적 함정(semantic-trap) 스니펫은 시도의 39.7%에서 드리프트가 발생한 반면, 실제 현대화가 필요 없는 양성 제어(benign-control) 코드에서는 7.0%가 발생했습니다 (+32.7%포인트; 각각 n=660). (2) 드리프트는 모델 전반에 걸쳐 실패하는 특정 스니펫에 집중됩니다. 어떤 스니펫이 어려운지에 대한 모델 간 쌍별 일치도(pairwise model agreement)는 높으며(평균 Pearson r=0.52), 수치 의미론(numeric-semantics) 스니펫이라는 작은 핵심 그룹은 거의 모든 모델과 모든 프롬프트 구문에서 실패합니다. (3) 생성 모델에 의한 자기 검토(Self-review)는 신뢰할 수 있는 안전망이 아닙니다. 모든 의미론적 드리프트 사례 중 31.7%가 해당 출력을 생성한 동일한 모델에 의해 조용히 승인되었습니다 (83/262). 모델별 자기 미검출률(self-miss rate)은 강력한 이봉 분포(bimodal)를 보이며, 5개 모델에서는 0%부터 널리 배포된 한 모델에서는 100%에 이르기까지 다양합니다. 특히 몇몇 모델은 자신의 출력을 망가뜨린 바로 그 Py2/Py3 의미론적 차이를 명시적으로 설명하면서도, 동작이 보존되었다고 선언했습니다. (4) 드리프트 비율은 모델의 성능 및 가격과 비단조적(non-monotone)입니다. 모델별 비율은 5.6%에서 46.7% 사이이며 모델 성능을 깔끔하게 따르지 않는데, 이는 이러한 실패가 모델 규모에 의해 주도되는 것이 아니라 작업 구조적(task-structural)임을 나타냅니다. 모든 코드, 프롬프트, 60개 스니펫 코퍼스, 행동 오라클, 출력 추출기 및 원시 모델 출력은 공개됩니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0