← 최신 논문
💻 computer science

Reducing Hallucinations in LLM-Generated Code via Semantic Triangulation

이 논문은 LLM 이 생성한 코드의 환각을 줄이기 위해 원문제를 알고리즘적으로 이질적인 변형 문제로 전환하여 독립적인 해법 간의 일관성을 검증하는 '의미 삼각측량 (semantic triangulation)' 프레임워크를 제안하며, 이를 통해 기존 방법론 대비 정답 선택 확률과 F1 점수를 유의미하게 향상시킨다고 주장합니다.

원저자: Yihan Dai, Sijie Liang, Haotian Xu, Peichu Xie, Sergey Mechtaev

게시일 2026-03-31
📖 3 분 읽기☕ 가벼운 읽기

원저자: Yihan Dai, Sijie Liang, Haotian Xu, Peichu Xie, Sergey Mechtaev

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

🕵️‍♂️ 비유: "수사관과 거짓말쟁이 용의자들"

상상해 보세요. 어떤 사건이 발생했고, 용의자 100 명이 있습니다. 이 중 진짜 범인은 1 명이고, 나머지는 무고한 시민입니다. 하지만 문제는 용의자들이 모두 같은 거짓말 (환각) 을 하고 있다는 점입니다.

  1. 기존의 방법 (다수결 투표):

    • 수사관 (개발자) 은 용의자들에게 "너희가 한 일을 설명해 봐"라고 묻습니다.
    • 거짓말쟁이 90 명이 "우리는 A 를 했어"라고 합창하고, 무고한 시민 10 명이 "우리는 B 를 했어"라고 말합니다.
    • 기존 방식은 **"가장 많이 말한 A 를 진실로 믿고 선택"**합니다.
    • 문제점: LLM 은 종종 같은 실수를 반복합니다 (상관된 오류). 그래서 거짓말쟁이들이 뭉쳐서 거짓말을 하면, 다수결은 오히려 그 거짓말을 진실로 확정해 버립니다.
  2. 기존의 다른 시도 (생성된 테스트나 명세):

    • "그럼 용의자 A 가 만든 '증거' (테스트) 를 믿어보자"라고 합니다.
    • 하지만 그 '증거'도 똑같은 거짓말쟁이 (LLM) 가 만들었습니다.
    • 결과: 거짓말쟁이가 만든 거짓 증거는 거짓말쟁이의 거짓말을 더 확신시켜 줄 뿐, 진실을 찾아내지 못합니다. (비유하자면, 범인이 만든 가짜 지문으로 범인을 잡으려 하는 꼴입니다.)

💡 이 논문의 해결책: "의미 삼각측량 (Semantic Triangulation)"

이 연구는 수사관에게 새로운 전략을 제안합니다. 바로 **"완전히 다른 각도에서 질문을 던져라"**는 것입니다.

1. "역방향 질문" (Problem Inversion)

용의자에게 "너는 어떻게 A 를 만들었니?"라고 묻는 대신, **"A 를 만들려면 어떤 재료가 필요했을까?"**라고 완전히 반대되는 질문을 던집니다.

  • 비유:
    • 원래 문제: "이 케이크를 어떻게 만들었니?" (프린터)
    • 역방향 문제: "이 케이크를 보고, 어떤 밀가루와 설탕이 들어갔을지 추론해 봐." (파서/해석기)
    • 효과: 거짓말쟁이는 원래 문제 (케이크 만들기) 에 대한 거짓말은 잘 준비해 왔지만, 완전히 다른 알고리즘이 필요한 역방향 문제 (재료 추론) 에서는 그 거짓말을 유지하기가 매우 어렵습니다.
    • 만약 두 가지 다른 각도에서 나온 답변이 서로 완벽하게 맞아떨어진다면, 그건 진실일 확률이 매우 높습니다.

2. "모든 답을 나열하기" (Answer Enumeration)

어떤 문제는 정답이 하나만 있는 게 아니라 여러 개일 수 있습니다 (예: "문장 속 '?'를 알파벳으로 바꿔서 'abc'가 나오게 해줘" → 'abc', 'abd' 등 여러 답이 가능).

  • 기존 방식은 하나만 고르려다 실패합니다.
  • 이 방법은 **"모든 가능한 정답 리스트"**를 먼저 만들어놓고, 그 리스트 안에 우리가 고른 답이 들어있는지 확인합니다.
  • 비유: 범인 목록을 다 만들어놓고, 그 목록에 우리 용의자가 있는지 확인하는 식입니다.

3. "삼각측량의 원리"

이론적으로 증명된 바에 따르면, 서로 다른 알고리즘을 요구하는 두 가지 문제 (원래 문제 + 역방향 문제) 에서 LLM 이 동시에 같은 거짓말을 할 확률은 극히 낮습니다.

  • 두 가지 다른 각도에서 나온 답변이 일치한다면, 그것은 단순한 우연이 아니라 진실일 가능성이 압도적으로 높습니다.

🚀 이 방법이 왜 특별한가요?

  1. 거짓말을 잡아냅니다: LLM 이 자주 하는 '연관된 오류' (같은 실수를 반복하는 것) 를 무력화시킵니다.
  2. 어려운 문제도 해결: 정답을 찾을 확률이 7% 밖에 안 되는 아주 어려운 문제에서도, 이 방법을 쓰면 정답을 찾아낼 확률을 24% 이상 높여줍니다.
  3. 정답이 여러 개인 문제도 처리: "정답이 여러 개일 때" 기존 방법들은 혼란을 겪지만, 이 방법은 모든 정답을 포괄하는 리스트를 만들어서 해결합니다.
  4. 신뢰할 수 없는 건 말하지 않음: "이건 확실하지 않아"라고 거절 (Abstention) 하는 능력도 뛰어나서, 엉뚱한 코드를 고를 위험을 줄여줍니다.

📝 요약

이 논문은 **"LLM 이 코드를 짤 때, 같은 실수를 반복하는 경향을 역이용하자"**고 말합니다.

"단순히 같은 질문을 여러 번 묻거나, 같은 사람이 만든 증거를 믿는 게 아니라, 완전히 반대되는 질문을 던져서 두 답변이 서로 일치하는지 확인하세요. 그게 일치한다면, 그것은 거짓말이 아니라 진실일 가능성이 매우 높습니다."

이 방법은 마치 수사관이 범인의 거짓말을 간파하기 위해, 범인이 예상하지 못한 완전히 다른 각도에서 질문을 던지는 것과 같습니다. 이를 통해 LLM 이 생성한 코드의 신뢰성을 획기적으로 높일 수 있습니다.

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

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

Digest 사용해 보기 →