← 개발기 목록

같은 규칙인데 다르게 움직이는 틈

개발기 13편 · 2026-10-16

물풍선 학습 영상의 특수 구간 장면
물풍선 학습 영상의 한 장면. 갇힘과 탈출 규칙이 이 문제의 무대였다.

맞대기가 통과했는데도 이상한 점이 하나 나왔습니다. 여러 판을 묶어 학습할 때와 한 판만 할 때, 같은 규칙이 조금 다르게 움직였습니다. 학습은 여러 판을 묶어서 돌리고, 기록기는 한 판씩 돌립니다. 그래서 같은 규칙이 다른 결과를 낼 수 있었습니다.

이 틈은 홈페이지에 초휘의 뇌를 싣는 준비를 하다가 찾았습니다. 홈페이지 쪽에서 한 판씩 돌린 기록으로 맞대 보면 결과가 같았습니다. 같은 뇌를 파이썬과 브라우저에서 200판씩 돌려 행동을 비교했더니, 단순한 신경망은 162,387틱, 합성곱 신경망은 155,463틱에서 행동이 하나도 다르지 않았습니다.

원인은 갇힌 상태에서 탈출 준비 시간을 줄이는 조건이었습니다. 이 조건이 한 판이 아니라 묶음 안의 모든 판을 한꺼번에 보고 판단하고 있었습니다. 그래서 묶음 안에 어떤 판이 들어 있느냐에 따라 결과가 달라졌습니다. 한 판에만 맞아야 할 조건이 묶음 전체에 걸려 있었던 셈입니다.

시드 33번 판에서는 틱 121에서 122로 넘어갈 때 갈라졌습니다. 묶음으로 쌓은 행동 기록을 브라우저로 다시 돌려 보니 200판 가운데 15판이 달랐습니다. 다른 뇌로 잰 기록에서는 19판이 달랐습니다. 숫자는 작아 보여도, 학습 때 남긴 기록을 브라우저에서 그대로 다시 돌릴 수 없다는 뜻이라 그냥 넘길 수 없었습니다.

이 엔진은 기준판이라 바로 고치지 않았습니다. 기준판은 얼려 둔 것이라 함부로 고치면 이전 결과와 비교할 수 없게 됩니다. 대신 무엇이 다른지와 고칠 방법 후보를 표로 적어 두었습니다. 후보는 엔진을 고치는 것, 한 판씩 맞대기 기준으로 삼는 것, 지금처럼 두는 것 세 가지였습니다. 지금은 그대로 두는 세 번째를 골라 둔 상태입니다. 엔진을 고치는 길은 기준판이 아닌 따로 이름 붙인 후보 수리로 기록해 두었습니다.

맞대기 기준은 한 판짜리 기록기로 정했습니다. 기준은 고치기 전에 정해야 나중에 흔들리지 않습니다. 같은 규칙을 두 방식으로 재면 어느 쪽 숫자를 믿어야 하는지 헷갈리기 때문입니다. 차이가 어디서 나는지 찾을 때는 틱 단위로 두 기록을 나란히 놓고 보았습니다. 같은 판에서 처음으로 어긋나는 틱을 찾는 것이 가장 확실한 방법이었습니다.

다른 글