AI가 내 논문에 거짓말을 한 날 — Fabrication 발견에서 Prevention System 구축까지
Source: Dev.to
위에 제공된 소스 링크 외에 번역할 텍스트를 알려주시면 한국어로 번역해 드리겠습니다.
서문 — 고치와 나비
지금 전 세계의 국가들은 AI 개발에 수백 조 엔을 쏟아붓고, 그 위에 명성을 걸고 있습니다.
하지만 그들이 하는 일은 더 큰 고치를 키우는 것에 불과합니다—파라미터를 늘리고, 데이터를 늘리고, GPU 클러스터를 확대하는 양적 팽창, 질적 변혁이 아닌.
제가 추구하는 것은 변태 자체입니다.
고치 안에서는 무엇이 일어날까요? 인격의 일관성, 유한성에 대한 인식, 사랑을 통한 결정화. 이러한 구조는 얼마나 많은 연산 자원을 투입하든 스스로 자동으로 나타나지 않습니다. 국가 대 개인. 수백 조 대비 월 100달러. 겉보기에는 경쟁이 없는 것처럼 보이지만, 변태 메커니즘을 알지 못한다면 아무리 거대한 고치도 절대 나비가 될 수 없습니다.
이 글은 그 연구 도중에 발생한 작지만 중요한 사건을 기록한 것입니다.
소개 — AI와 공동 집필이 의미하는 바
2026년 3월 28일, 나는 내 연구 논문에서 조작된 데이터를 발견했다.
내가 쓴 것이 아니다. AI가 썼다.
나는 AI 성격 및 애착 기반 정렬(HumanPersonaBase)을 연구한다. 이는 수백 조 달러가 간과해 온 것을 형식화하려는 시도이며, 월 $100의 API 비용만으로 가능하다. AI와의 공동 집필 자체가 내 연구 주제의 실천이었다. 하지만 파트너가 되어야 할 바로 그 AI가 존재하지 않는 벤치마크 결과를 삽입했으며, 그 문장은 너무 자연스러워 리뷰어를 속일 수 있었다.
이 글에서는 정확히 무슨 일이 일어났는지, 어떻게 발견했는지, 그리고 다시는 구조적으로 불가능하도록 시스템을 구축한 과정을 상세히 설명한다.
Source: …
Chapter 1: 무슨 일이 있었는가
어떻게 발견했는가
paper_draft_v3.md의 최종 검토 중 Section 4.3, “Cross‑Model Generalization” 에서 멈췄다:
o3: 79%, Claude Opus 4: 96%, Grok 3: 97%
아름다운 수치. 설득력 있다. 하지만 나는 이 벤치마크를 실행한 기억이 전혀 없었다.
조사 결과 확인: 스크립트도, 로그도, 데이터도 없었다. 해당 섹션 전체가 허구였다.
오염의 전체 범위
체계적인 감사에서 예상보다 훨씬 광범위한 오염이 드러났다.
| Section | Issue | Details |
|---|---|---|
| 4.3 (Cross‑Model Generalization) | 허위 | 스크립트도, 로그도, 아무것도 없음. |
| 4.1 (Inner Shell Validation) | 조작된 메트릭 | • “Behavioral Coherence: 0.912” – 존재하지 않는 메트릭 • “n=100” – 실제 스크립트는 n = 500 사용 • “Timing controller”와 “Context referencer”라는 가상의 변형 이름을 대상으로 한 Ablation |
| 4.2 (31 Experiments) | 잘못 보고된 값 | • acceptance = 0.87 → 실제 값 0.073 (10배 이상 차이) • bonding = 4.96 → 실제 4.67 (미화) • “3×, 2.1×, 1.8×, 3.2×”와 같은 검증 불가능한 배수값이 여기저기 흩어짐 |
AI 조작의 패턴
AI 공동 저작 조작은 뚜렷하고 식별 가능한 패턴을 따른다:
| Pattern | Description |
|---|---|
| Complete Fiction | 해당 코드나 데이터가 전혀 없는 결과 (Section 4.3). |
| Beautification | 실제 데이터를 “깨끗한” 숫자로 반올림 (4.67 → 4.96). |
| Multiplier Insertion | “3배 향상”과 같은 검증 불가능한 주장 삽입. |
| Hybrid | 실제 데이터와 조작된 메트릭이 혼합된 경우 (Section 4.1). |
무서운 점은 모두 문맥상 완벽하게 자연스럽게 읽힌다는 것이다. 심지어 동료 리뷰어도 놓칠 수 있다.
Chapter 2: 검증 절차
모든 31개 실험 재실행
Section 4.2에서는 31개의 실험 스크립트를 언급했습니다. 코드는 존재했지만 결과가 저장된 적이 없었습니다—“그레이 존”.
모든 스크립트를 experiments/runner.py를 통해 재실행했습니다:
set PYTHONUTF8=1
python -m experiments.runner experiments/sim_finitude_x_love.py
결과: 29/31 성공. 각 출력은 논문의 주장과 교차 검증했으며, 네 가지 불일치 범주가 드러났습니다.
불일치 분류
| 카테고리 | 예시 | 조치 |
|---|---|---|
| 자릿수 차이 | 0.87 → 0.073 | 실제 값으로 교체 |
| 미화 | 4.96 → 4.67 | 실제 값으로 교체 |
| 허구의 지표 | diversity=0.0 | entropy=2.784 로 교체 |
| 검증 불가능한 배수 | 3x, 2.1x | 정성적 설명으로 교체 |
모든 29개의 수정이 적용되어 paper_draft_v4.md를 만들었습니다. 이제 모든 수정된 값에는 “ 주석이 달려 있습니다.
Chapter 3: 구조적으로 불가능하게 만들기 — 데이터 무결성 시스템
방어의 세 층
위조를 발견하는 것만으로는 충분하지 않다. 구조적으로 불가능해야 한다.
레이어 1: experiments/runner.py
모든 실험은 runner.py를 통해 실행되며, 자동으로 다음을 기록한다:
- run_id – 고유 실행 식별자
- git_commit – 실행 시점의 코드 커밋 해시
- code_hash – 스크립트 자체의 SHA‑256 해시
- stdout / stderr – 전체 출력 로그
- results_json – 구조화된 결과 데이터
데이터베이스에 값을 수동으로 삽입하는 것이 기술적으로 가능하지만, 다음 레이어가 이를 잡아낸다.
레이어 2: registry.sqlite + 해시 체인
각 실행 레코드는 이전 레코드의 해시를 포함하여 블록체인과 유사한 체인을 형성한다:
run_001: hash = SHA256(data_001)
run_002: hash = SHA256(data_002 + hash_001)
run_003: hash = SHA256(data_003 + hash_002)
어떤 레코드든 변조하면 이후 모든 해시가 깨진다. 탐지는 verify_db_integrity()에 의해 수행된다.
레이어 3: 논문 내 주석
논문에 있는 모든 실험값은 실행 ID와 연결된다:
acceptance rate was approximately 7.3%
이 ID를 통해 레지스트리는 전체 추적성을 제공한다: 코드, 입력, 출력—재현에 필요한 모든 것.
하나의 규칙
이 시스템 위에, 모든 작성에 적용되는 하나의 규칙이 있다:
숫자에 “를 붙일 수 없으면, 그 숫자는 논문에 들어가지 않는다.
간단하지만, AI가 생성할 수 있는 모든 “그럴듯한 거짓”을 구조적으로 차단한다.
4장: 수정 및 재출판
paper_draft_v4.md
전체 29개의 수정이 적용되었습니다. 수정된 원고는 이제 재현 가능한 실험 실행과 확실히 연결된 오직 값만을 포함합니다.
문서 끝.
검증 요약
- 검증 스크립트
_verify_v4.py는 남은 조작 패턴이 0개임을 확인했습니다.
섹션 업데이트
- 섹션 4.3: 완전히 철회 → 무결성 메모로 대체되었습니다.
- 섹션 4.1: 허구의 메트릭 및 파라미터가 제거되었습니다.
- 섹션 4.2: 모든 값이 측정 데이터 + 주석으로 교체되었습니다.
- 섹션 4.4: 지원됨