[AI와 로또를] #9 트랜스포머도 못 맞춘다
지난 12주 동안 일곱 개의 알고리즘을 돌려봤다. HOT 추적, COLD 복귀, 시계열 개량, 역발상, 꿈 해몽까지. 매주 30조합을 만들고, 토요일 추첨을 기다리고, 일요일에 결과를 확인하는 일을 반복했다. 누적 수익은 어딘가 마이너스 23만 원 근처를 떠돌고 있다.
그러다가 한 번쯤 이런 생각이 들지 않을 도리가 없었다. 통계는 안 되는 거 알겠는데, 신경망이라면 다르지 않을까. 사람 눈에는 안 보이는 패턴을 잡아낸다는
그 신경망이라면.
그래서 트랜스포머를 가져왔다.
트랜스포머가 뭐길래
요즘 AI 얘기에서 빠지지 않는 이름이다. ChatGPT, Claude, Gemini가 전부 이 구조를 쓴다. 핵심을 한 줄로 줄이면, 순서가 있는 데이터에서 어떤 위치가 어떤 위치를 얼마나 참고할지를 스스로 배우는 모델이다. 문장에서는 단어들 사이의 관계, 음악에서는 음표 사이의 관계, 그리고 로또에서는 회차들 사이의 관계 — 만약 그런 게 있다면.
내가 만든 건 아주 작은 트랜스포머다. 파라미터 수 약 10만 개. ChatGPT의 대략 백만분의 일 크기. 입력은 최근 20회차의 당첨번호, 출력은 다음 회차에 각 번호(1번부터 45번까지)가 나올 확률. 학습 데이터는 1회차부터 1218회차까지의 모든 당첨 기록.
학습은 Colab의 무료 GPU에서 5분 정도 걸렸다.
첫 번째 충격: 지난주 트랜스포머가 인간 30조합을 이겼다
지난 1222회 결과부터 보자.
내가 12주 동안 다듬어온 7개 알고리즘이 만든 30조합의 평균 적중은 0.43개였다. 5등(3개 적중) 0건. 4등 0건. 회수액 0원. 시리즈 시작 이후 가장 처참한 회차였다.
같은 회차에 대해 트랜스포머가 만든 3조합의 평균 적중은 1.0개였다. 그중 한 조합 [3, 4, 6, 17, 36, 37]은 4번과 17번을 둘 다 잡아냈다.
인간 30 — 평균 0.43개
트랜스포머 3 — 평균 1.00개
차이 — 2.3배
10만 파라미터짜리 작은 모델이 12주 동안 다듬은 인간의 알고리즘을 더블링한 것이다. 잠깐 흥분했다. 그동안 내가 잘못된 길로 가고 있었나, 신경망이 진짜 답인가, 그런 생각이 차례로 지나갔다.
흥분이 가라앉기 전에 학습 곡선을 열어봤다.
학습 곡선이 정직했다

왼쪽 그래프부터 보자. 에폭(학습 반복) 0번부터 약 10번까지, 학습 데이터(파란선)와 검증 데이터(주황선)의 오차가 함께 빠르게 떨어진다. 0.53 근처에서 시작해 0.39 근처까지. 모델이 뭔가 배우고 있다는 신호다.
그런데 10번을 넘어가면서부터 두 선이 갈라지기 시작한다. 학습 데이터에서는 오차가 계속 내려간다(0.395 → 0.375). 그런데 검증 데이터에서는 오차가 오히려 올라간다(0.395 → 0.405). 이게 머신러닝 교과서 첫 페이지에 나오는, 과적합(overfitting)의 정확한 시그니처다.
조금 풀어 말하면 이렇다. 모델은 처음엔 데이터의 패턴을 배운다. 어떤 회차 다음에 어떤 번호가 잘 나오는지, 어떤 분포가 흔한지. 그래서 본 적 없는 데이터(검증)에서도 오차가 줄어든다. 그런데 진짜로 배울 만한 패턴이 다 떨어지면, 모델은 학습 데이터를 외우기 시작한다. "1218회의 입력에는 이 출력"같은 식으로 통째로 기억하는 것이다. 그러면 학습 데이터 오차는 계속 줄지만, 본 적 없는 데이터에서는 오히려 못 맞히게 된다.
10번째 에폭이 우리 모델에게 그 분기점이었다. 그 시점 이후, 모델은 더 이상 의미 있는 패턴을 배우지 못하고 있었다.
이게 무엇을 뜻하느냐. 모델이 1218회의 로또 데이터에서 배울 수 있는 의미 있는 정보가 사실상 그 정도까지였다는 뜻이다. 각 번호의 장기 평균 출현 빈도, 그리고 약간의 분포 특성. 그 이상의 패턴은, 없거나 너무 약해서 학습이 안 된다.
두 번째 충격: 적중 그래프가 아무것도 약속하지 않는다
오른쪽 그래프를 보자. 검증 세트에서 모델이 평균 몇 개를 맞히는지를 에폭마다 찍은 것이다.
회색 점선이 0.8 — 무작위로 6개를 골랐을 때의 평균 적중 개수다(6 × 6 ÷ 45 = 0.8). 모델이 이 선 위에 있어야 적어도 무작위보다 나은 것이다. 그래프를 보면 후반부에 0.83 근처에서 안정화되는 것처럼 보인다. 랜덤 0.8보다 살짝 위. 이게 신호일까.
그래서 검증해봤다.
검증 세트는 50개 회차였다. 50개 표본 평균의 표준오차는 0.111. 모델 평균(0.83)이 랜덤(0.80)과 통계적으로 유의미하게 다르다고 말하려면, 검증 평균이 1.017개 이상이어야 한다(95% 신뢰수준 기준). 빨간 점선이 그 임계선이다.
모델은 그 선 근처에도 못 갔다. z-score 0.27, p-value 0.39.
"통계 검정에 넣으면 p=0.39"
이 숫자가 어디서 본 듯한 느낌이라면, 그건 우리 시리즈가 12주째 마주쳐온 그 숫자이기 때문이다. 도박사의 오류를 검증할 때도, 큰 수의 법칙을 살펴볼 때도, "이제 쉰다" 전략을 백테스트할 때도, 언제나 같은 자리에 같은 숫자가 있었다. 약 0.4. 우연 범위 안.
신경망이 가져온 결론이 통계학이 가져온 결론과 동일했다. 다른 도구로 도달한 같은 결론. 로또는 정말로 독립적이다.
그럼 1222회의 1.0개 적중은 뭐였나
이게 마지막 풀어야 할 매듭이었다. 통계적으로는 의미 없다고 나왔는데, 지난주에 트랜스포머는 인간을 더블링했다. 그건 어떻게 설명할 것인가.
답은 그래프 안에 있다. 검증 세트 50개 회차에서 모델의 평균 적중은 0.65에서 0.92 사이를 진동했다. 50개 표본의 95% 신뢰구간이 약 0.59에서 1.01까지다. 즉 평균 0.83짜리 모델이 어떤 회차에서는 1.0개를 맞히고, 어떤 회차에서는 0.5개도 못 맞히는 게 정상이라는 뜻이다.
지난주는 모델에게 운이 좋은 날이었다. 50개 회차 중 1.0개 근처를 맞히는 날이 평균적으로 몇 번 섞여 있는데, 1222회가 그 중 하나였다. 모델의 능력이 아니라, 표본의 자연스러운 흔들림 안에 들어 있는 한 점이었던 것이다.
다음 주에 같은 모델로 같은 일을 시키면, 0.5개도 못 맞히는 회차가 나올 수 있다. 그게 노이즈가 그리는 모양이다.
그래도 하나는 배웠다
여기까지 읽고 나면 허무할 수 있다. 7개 알고리즘으로도 안 됐고, 트랜스포머로도 안 됐다. 그럼 도대체 뭘 한 건가.
그런데 다시 학습 곡선을 들여다보면, 거기에 좀 다른 메시지가 있다.
모델은 자기가 뭘 배울 수 없는지를 그래프로 정직하게 알려줬다.
10번째 에폭에서 두 선이 갈라지는 그 모양이, 그 자체로 "여기까지가 배울 수 있는 전부고, 그 너머는 외우기일 뿐"이라는 신호였다. 적중 그래프가 1.017 임계선 근처에도 못 가고 0.83에서 떠는 그 모습이, "이 데이터에는 의미 있는 신호가 없다"는 정직한 보고였다. 모델은 거짓말을 하지 않았다. 무리해서 패턴을 만들어내지도 않았다. 자기가 못한다는 걸 곡선의 모양으로 보여줬다.
이게 신경망의 진짜 가치일 수 있다. 어떤 문제를 못 푸느냐를 정직하게 알려주는 것. 학습 곡선이 갈라지는 순간을 보고 "여기서 멈춰야 한다"고 판단할 줄 아는 것.
요즘 AI 뉴스를 보면, 모델이 무엇을 더 잘 하게 됐는가에 관한 얘기가 대부분이다. 그런데 사실 더 중요한 질문은, 모델이 무엇을 못 하는지 우리가 어떻게 알 수 있는가다. ChatGPT가 그럴듯하게 거짓말을 만들어낼 때(이걸 환각이라고 부른다), 우리는 그 거짓말을 어떻게 잡아낼 것인가. 답은 뜻밖에 단순하다. 모델이 학습 곡선의 어느 지점에서 갈라졌는지를 보면 된다. 어디서부터 외우기 시작했는지를 보면 된다.
이번 트랜스포머는 그걸 5분 만에, 그래프 한 장으로 보여줬다. 로또에는 학습할 만한 패턴이 거의 없고, 있다고 해봐야 각 번호의 장기 평균 출현 빈도 정도라고. 그 이상은 외우기일 뿐이라고.
이건 통계 검정 결과(p=0.39)와 정확히 같은 메시지다. 다른 언어로 말하고 있을 뿐이다.
그래서 다음 주에는
트랜스포머는 로또를 못 맞힌다. 그런데 이번 주 학습 곡선은 그 사실을 그래프 한 장으로 정직하게 알려줬다. 10번째 에폭에서 두 선이 갈라지는 그 모양 하나가, 12주의 통계 검정과 똑같은 결론을 다른 언어로 말하고 있었다. 여기까지가 배울 수 있는 전부고, 그 너머에는 패턴이 없다고.
이걸 좀 더 동네스럽게 풀면 이렇다. ChatGPT한테 로또 당첨번호 물어봐도 못 알려준다. 트랜스포머가 못 풀면 그 위에 얹은 ChatGPT도 못 푼다. ChatGPT가 못 풀면 GPT-5도, 그 다음에 나올 무언가도 못 푼다. 학습 곡선이 갈라진 자리에는 모델 크기를 키운다고 패턴이 생기지 않는다. 없는 걸 더 큰 모델이 만들어내지는 않으니까.
이게 우리가 AI를 다룰 때 진짜로 길러야 할 감각이다. 모델이 무엇을 잘 하느냐를 보는 눈은 누구나 가지고 있다. 그런데 모델이 어디서부터 못 하기 시작하는지를 알아보는 눈은 따로 길러야 한다. 학습 곡선이 갈라지는 지점을 읽을 줄 아는 것, 적중 그래프가 임계선에 못 미치는 모양을 보고 "여기서 멈춰야 한다"고 말할 줄 아는 것. 이게 ChatGPT가 그럴듯한 거짓말을 만들어낼 때 그 거짓말을 알아보는 능력의 시작점이다.
1223회에도 30조합을 만든다. 트랜스포머도 같이 돌린다. 누적 마이너스 숫자는 한동안 더 자라날 가능성이 높다. 그래도 매주 추첨이 새 데이터를 떠먹여주고, 매주 다른 모양으로 알고리즘이 무너지거나 살아남는 그 기록이, AI를 정직하게 다루는 법을 한 회차씩 알려준다.
그런데 한 가지가 빠졌다. 왜 하필 로또로 AI를 배우려 했는가. 그 얘기는 다음 편에서 따로 하겠다.
이 글은 AI 입문 강의 시리즈의 9편입니다. 다음 편에서는 "왜 하필 로또로 AI를 배우는가"에 대해 씁니다.