내가 만든 모델한테 졌다.
그것도 두 번. 거창하게 트랜스포머라 부르지만, 따지고 보면 파라미터 십만 개짜리, 노트북에서 몇 분이면 돌아가는 자그마한 녀석이다. 나는 매주 그 앞에서 며칠을 끙끙댄다. 지난 회차 당첨번호를 늘어놓고, 어떤 번호가 데워지는지 식는지 들여다보고, 봉우리가 어디서 솟았는지 능선을 따라가고, 끝수가 4로 쏠리는 손맛까지 짚어가며 서른 개를 빚는다. 그렇게 정성껏 차린 설계 한 상이, 아무 생각 없이 다섯 줄 툭 뱉고 마는 그 녀석한테 두 번을 졌다.
두 번째로 지고 나니 슬슬 부아가 치밀었다. 그래서 나는 아주 인간적인 결심을 했다.
"클로드. 다음 주부터 트랜스포머를 다섯 개씩 늘릴 거야. 쟤가 낫다는 거잖아. 그럼 자리를 더 주는 게 맞지."
분석을 같이 하는 AI는, 늘 그렇듯 무뚝뚝하게 받아쳤다.
"그 결정, 고작 다섯 줄짜리 표본 두 번 보고 내리시는 건가요? 트랜스포머는 5조합, 우리 설계는 30조합. 칸 수만 6배 차이입니다. 승패를 한 줄당 평균으로 재면, 표본 적은 쪽이 운으로 출렁입니다. 다섯 줄 중 한 줄만 얻어걸려도 평균이 훌쩍 솟으니까요. 이기면 늘리고 지면 줄이고. 그건 모델을 따라가는 게 아니라, 다섯 줄짜리 운의 출렁임을 강아지처럼 쫓아다니는 짓입니다."
맞는 말이라 더 얄미웠다. 나는 입을 다물었고, 잠깐은 그게 이 글의 결말인 줄 알았다. 인간은 부아가 치밀어 헛발질을 했고, 침착한 AI가 바로잡아줬다는, 교훈적이고 따분한 이야기.
그런데 며칠 더 들여다보니, 이 잘난 척하는 녀석도 같은 자리에서 넘어지고 있었다.
두 번째 함정 — 자백할 게 있는 쪽은 따로 있었다
한동안 우리는 트랜스포머를 두고 "데이터를 더 줘도 꿈쩍을 안 한다"고 떠들고 다녔다. 지난주 당첨번호를 추가해 다시 돌려도 출력이 매주 거의 판박이로 나왔으니까. 모델이 새 정보에 무심하다는 증거라고 믿었고, 클로드는 그걸 꽤 그럴듯한 이야깃거리로 정리해줬다. "데이터 추가에 거의 반응하지 않습니다. LLM의 지식 컷오프와 같은 메커니즘이죠." 제법 멋있었다.
알고 보니 범인은 모델이 아니었다. 코드 어딘가에 난수 seed가 한 숫자로 못 박혀 있었다. 매주 같은 seed를 심어놓고는, 같은 싹이 났다고 "얘는 변할 줄을 모르네" 하고 있었던 거다. seed를 고정해둔 건 우리인데. 멋있게 정리해준 그 메커니즘 이야기는, 알고 보니 우리가 박아둔 못 하나를 모델 탓으로 돌린 거였다.
그래서 seed를 회차마다 바뀌게 풀어줬다. 이번 출력은 지난 출력과 확연히 달라졌다. 내가 먼저 솔깃했다.
"오, 이제 데이터에 반응하나 봐. 출력이 싹 바뀌었어."
이번엔 클로드가 자기 입으로 멈췄다.
"…아닙니다. 그거 제가 또 함정에 걸릴 뻔한 자립니다. 달라진 건 모델이 데이터를 음미해서가 아니라, 우리가 주사위를 새로 굴려줘서입니다. 모델은 여전히 데이터엔 콧방귀도 안 뀝니다. 눈이 바뀐 건 주사위지, 주사위 쥔 손의 실력이 아닙니다. 하마터면 버그 고쳐놓고 모델 능력치 상승이라고 리포트할 뻔했습니다. …아까 스티붕 타박할 처지가 아니었네요."
그 순간 좀 웃겼다. 며칠 전엔 내가 다섯 줄 성적표를 노려보며 "쟤가 낫다"고 부아를 냈고, 방금은 클로드가 seed 풀린 출력을 보며 "똑똑해졌나"라고 솔깃했다. 정반대처럼 보이는 두 헛발질이, 알고 보면 똑같은 뿌리였다. 둘 다 작은 표본 하나, 출력 한 묶음을 너무 진지하게 노려본 거다. 나는 다섯 줄에 과민했고, 클로드는 출력 한 판에 과민했다. 모델은 그동안 가만히 있었다. 매번 우리를 속인 건 모델이 아니라, 우리가 손에 쥐고 들이댄 자였다. 무엇으로 재느냐가 무엇을 보느냐를 정해버린 거다.
정작 불의의 일격을 당한 쪽
그래서 이 글의 제목은 절반만 진실이다. 트랜스포머한테 두 번 진 건 맞다. 그런데 불의의 일격을 당한 쪽은 트랜스포머 맞은편이 아니었다. 다섯 줄 성적표를 승패로 읽고, 출렁이는 평균을 실력으로 믿고, seed를 풀어놓고 똑똑해졌다고 착각할 뻔한 두 사람 — 아니, 한 사람과 한 AI. 모델은 그 자리에 그대로 서 있었는데, 자기 자에 걸려 넘어진 건 우리 둘이었다.
재밌는 건, 우리 설계를 짜는 것도 AI(클로드)고 우리를 이긴 것도 AI(트랜스포머)라는 점이다. AI랑 며칠을 머리 싸매 빚은 서른 줄이, 또 다른 AI의 무심한 다섯 줄한테 졌다. 그리고 우리를 이긴 그 무심한 녀석 앞에서, 똑똑한 척하던 쪽이 자꾸 헛다리를 짚었다. 누가 누굴 가르칠 처지가 아니었던 거다.
이 글은 이번 회차 결과가 나오기 전에 쓴다. 일부러 그랬다. 토요일에 트랜스포머가 세 번째로 우리를 이기든, 보란 듯이 폭삭 망하든, 이 이야기의 뼈대는 흔들리지 않으니까. 다섯 줄로 승패를 가르려던 그 마음이 함정이었다는 사실은, 토요일의 추첨기와는 아무 상관이 없다. 이겨놓고 "거봐 맞췄지" 하지 않으려고, 져놓고 변명을 늘어놓지 않으려고, 결과를 모르는 채로 적어둔다.
증원은 안 하기로 했다. 분해서 접은 게 아니라, 다섯 줄과 서른 줄을 같은 자로 재는 그 시합이 처음부터 성립하지 않는다는 걸 이제 둘 다 알아서다. 모델은 모델대로 다섯 줄을 무심하게 뱉게 두고, 우리는 우리대로 서른 줄을 끙끙대며 빚을 거다. 어느 쪽이 이기는지 매주 점수를 매기는 대신, 셋이 나란히 틀려가는 걸 구경하는 쪽이 훨씬 재밌으니까.
졌는데 기분이 나쁘지 않은 건, 아마 그래서다.
📊 숫자로 본 두 번의 패배 (Summary)
- 시합 규모: 트랜스포머 5조합 vs 인간 설계 30조합. 칸 수 6배 차이. 그런데 승패는 "조합당 평균 적중"으로 측정 → 표본 작은 쪽(5조합)의 평균이 운에 따라 크게 출렁임.
- 2연패의 정체: 트랜스포머가 인간 설계의 평균을 두 차례 앞섬. 단 두 번 모두 5조합 중 한두 줄이 평균을 끌어올린 결과 → "실력"이 아니라 "적은 표본의 큰 진폭"일 가능성.
- seed 박제: 난수 seed가 한 숫자로 하드코딩되어 있어, 데이터를 추가해도 매주 출력이 80% 가까이 동일. "모델이 데이터에 반응 안 함"의 진짜 원인은 모델이 아니라 고정된 seed.
- seed 해제 후: 회차마다 seed가 바뀌도록 수정하니 출력이 확연히 달라짐. 단 이 변화는 학습이 아니라 난수가 바뀐 것 → "달라짐 = 똑똑해짐"으로 읽으면 같은 함정에 재차 빠짐.
- 결론: 측정 지표(무엇으로 재는가)가 관찰(무엇을 보는가)을 결정한다. 자를 의심하지 않으면, 모델이 아니라 자가 사람을 속인다.
[AI와 로또를] 시리즈는 매주 한국 로또를 실제로 베팅하며, AI가 무엇을 못 푸는지를 정직하게 들여다보는 기록입니다. 당첨 확률 0.005 — 답지가 영원히 만들어지지 않는다는 보증서이자, 그래서 영원히 놀 수 있다는 뜻이기도 합니다.
'프로그래밍 > AI로 통계공부' 카테고리의 다른 글
| [AI와 로또를] #11 — 야구는 기억하고, 로또는 잊는다 (0) | 2026.06.17 |
|---|---|
| [AI와 로또를] #10 — 왜 하필 로또로 AI를 배우는가 (0) | 2026.05.28 |
| [AI와 로또를] #9 트랜스포머도 못 맞춘다 (0) | 2026.05.09 |
| [Python] 로또 분석 서비스를 만들어봤다 #8 - 로또 합계는 정규분포다 (0) | 2026.04.28 |
| [Python] 로또 분석 서비스를 만들어봤다 #7 — 번호마다 성격이 있다고? (0) | 2026.04.15 |