모델은 그대로,
하네스만 AI가 고쳤다
212문항 검증에서 재현되지 않았다
같은 모델, 같은 문제인데 점수가 다르다
제출본 · validation 50문항 · 모델 가중치는 동일
차이를 만든 것: 하네스(harness)
모델을 둘러싼 코드 전체.
무엇을 기억시키고, 무엇을 보여 주고, 답을 어떻게 받아 내는가.
Meta-Harness (Stanford, 2026): AI가 실패 기록을 읽고 하네스 코드를 스스로 다시 쓴다.
이 루프를 내 서버에서 직접 돌리면,
AI는 어디를 고치고 결과는 어떨까?
공식 코드를 개인 온프레미스 서버로 옮겨 실제로 돌렸다
22개 질병 중 하나로 분류
토큰 수를 파일로 남김
새 메모리 코드 3개 작성
test로 1회 최종 확인
| 항목 | 설정 |
|---|---|
| 과제 모델 | Qwen3.8-Flash-Next · 개인 DGX Spark |
| 하네스를 고치는 AI | Claude Code (sonnet) |
| 데이터 | Symptom2Disease · 22개 질병 |
| 분할 | train 60 · val 50 · test 212 |
옮기며 직접 해결한 것
- 호출당 7초 → 2.9초: 추론 토큰 생성을 끔 (모든 시스템 동일 적용)
- AI의 모든 권한 허용 옵션 제거 → 작업 폴더 쓰기, 읽기 전용 명령만
AI의 하네스는 점수를 지켰지만, 설계한 장치는 꺼져 있었다
| val (50) | test (212) | 입력 토큰 | |
|---|---|---|---|
| fewshot_all | 82.0% | 84.9% | 144,224 |
| confusion_contrast AI 작성 · 비슷한 예시 6개 | 82.0% | 80.7% | 28,745 |
기억 분량 1/7, 입력 토큰 −80%.
test에서는 −4.2%p: 비용과 정확도의 trade-off
그 하네스의 memory.json 속 기록된 오답
공식 코드의 오프라인 학습은 정답을 '예측'으로, 정오를 항상 '맞음'으로 넘긴다. 틀린 기록이 구조적으로 생길 수 없었다.
실제로 작동한 것은 "비슷한 예시 6개만 골라 넣기" 하나.
점수는 맞았지만, 이유는 AI의 설명과 달랐다.
오답 노트를 실제로 켰더니, 50문항에서는 점수가 떨어져 보였다
실제 예측으로 학습하는 온라인 모드로 7개 기억 방식 비교
같은 예시 6개에 LLM 단서만 더하면 82% → 70%
→ 천식 환자 3명을 폐렴으로 오답
가설: LLM이 쓴 그럴듯한 단서가
판단을 끌어당긴다
숫자를 보기 전에 규칙을 고정하고 212문항으로 다시 쟀다
knn_top6 − cue_bank 정확도 차 (%p) · 오른쪽 = 단서가 손해
축 범위 ±20%p · 불일치 = knn_top6만 맞힘 : cue_bank만 맞힘 · 정확 McNemar
주 가설 H1 판정 (사전 등록 규칙)
세 시드 모두 p ≥ .05, 방향도 엇갈림
시드 통합 불일치 35 : 30 · MH p = .54
- 원시 예시 계열 vs LLM 문장 계열: 차이 없음 (log-odds 0.02, p=.70)
- '정답 질병 단서 주입' 효과: 212에서 미확인 (p=.82)
무엇을 기억하느냐보다, 기억이 있느냐가 컸다
knn_top6 vs no_memory · test 212문항 · 학습 표본별 정확 McNemar
| 학습 표본 | knn_top6 | no_memory | 차이 | 불일치 | p |
|---|---|---|---|---|---|
| seed 42 | 82.5% | 67.0% | +15.6%p | 43 : 10 | 5.6×10⁻⁶ |
| seed 123 | 81.6% | 67.0% | +14.6%p | 39 : 8 | 5.5×10⁻⁶ |
| seed 456 | 84.9% | 67.0% | +17.9%p | 48 : 10 | 4.5×10⁻⁷ |
세 학습 표본 모두에서 유의 (seed 42는 Holm 보정 후 p = 3.3×10⁻⁵)
예시 전부 vs 비슷한 6개
fewshot_all 85.8% vs knn_top6 82.5%
3 : 10, p = .09 · 유의차 없음 (seed 42)
입력 토큰 611k vs 116k: 약 1/5
같은 조건, 두 번 실행
50문항 중 4문항(8%)의 정오가 바뀜
제출본 64%와 후속 70%의 차이(3문항)도 이 범위 안
성능은 하네스가 만들고, 결론은 표본이 만든다
하네스 효과는 크고 견고하다
모델 그대로, 비슷한 예시 6개만 기억시켜 +15~18%p. 세 학습 표본 모두 유의.
50문항의 경향은 결론이 아니다
7 : 1이던 '단서의 역효과'가 212문항에서 13 : 10, 다른 표본에서는 반대 방향.
파일을 열고, 규칙을 먼저 정하라
기억 파일을 열어 꺼진 장치를 찾았고, 사전 등록으로 내 가설을 스스로 재검증했다.
다음 단계
5%p 차이를 검정력 80%로 확인하려면 독립 문항 658개가 필요하다 (불일치율 20% 가정).
이 데이터의 test는 212개뿐이라, 시드를 늘리는 것으로는 부족하고 새 데이터가 필요하다. 추론을 켠 모델과의 대조도 남아 있다.
test 212문항, 7개 시스템 (seed 42, 같은 기억을 test에 적용)
| 시스템 | 정답 | 정확도 | knn_top6 대비 불일치 | 정확 McNemar p | Holm p | 입력 토큰 |
|---|---|---|---|---|---|---|
| no_memory | 142 | 67.0% | 43 : 10 | 0.0000056 | 0.000033 | 56,814 |
| fewshot_all | 182 | 85.8% | 3 : 10 | 0.092 | 0.461 | 611,406 |
| knn_top6 | 175 | 82.5% | — | — | — | 115,873 |
| contrast_online | 170 | 80.2% | 8 : 3 | 0.227 | 0.906 | 162,263 |
| reflexion_notes | 175 | 82.5% | 7 : 7 | 1.000 | 1.000 | 174,276 |
| cue_bank_verified | 176 | 83.0% | 8 : 9 | 1.000 | 1.000 | 158,511 |
| cue_bank | 172 | 81.1% | 13 : 10 | 0.678 | 1.000 | 180,893 |
불일치 = (knn_top6만 맞힘 : 이 시스템만 맞힘). Holm은 knn_top6 대비 6개 비교 묶음. 입력 토큰은 test 평가 호출의 캐시 기록 합계이며 비용 환산값이 아니다. 유의하지 않은 차이는 '같다'는 뜻이 아니다.
이 결과를 어디까지 믿을 수 있나
한계
- 세 시드는 같은 test 문항을 재정렬한다. 시드 합산 p값(예: 4.9×10⁻¹⁶)보다 시드별 검정을 근거로 삼았다.
- 37개 결과 파일 모두 분석에 포함. 결측을 오답으로 채운 값은 없다.
- 추론을 끈 모델 하나, 데이터셋 하나. 추론 모드나 임상적 인과는 이 결과로 말할 수 없다.
- 64% vs 70%: 같은 요청 키에서 캐시된 답이 달랐다. 서버 측 원인은 미확인.
검증 절차
- 사전 등록 문서 해시가 분석 전후 동일
- 분석 코드는 기존 seed 42 결과 21개 비교·350개 문항 행을 정확히 재현한 뒤에만 새 데이터에 적용
- 통계 단위 테스트 26개 통과 · 서버 재호출 없이 캐시만 사용
- 유의성이 나올 때까지 지표·분할·검정을 바꾸지 않음 (부트스트랩 10,000회, 시드 0 고정)
파레토 프론티어와 데이터 분할별 재현성
부트스트랩 신뢰구간과 표본 크기 역전 효과
오차 귀인 로지스틱 회귀와 데이터 사이언스 과제 확장
통계적 검정력 분석과 반복 호출 잡음