---
title: "두는 법을 배우기"
url: https://raskell.io/ko/articles/learning-to-play/
author: Raffael Schneider
date: 2026-10-25
description: "체스 신동이 읽은 핸드북, 오래된 세 가지 게임, 그리고 노트북 한 대. 게임 AI의 바탕이 된 아이디어를 휴대폰 브라우저에서 돌아가도록 Rust로 다시 만들고 측정한 기록입니다."
tags: [game-ai, machine-learning, reinforcement-learning, games, rust, webassembly, history-of-technology, chess, shogi, go-game]
lang: ko
translation_of: https://raskell.io/articles/learning-to-play/
---

# 두는 법을 배우기

## 요약

*The Infinity Machine*을 읽다가, 어린 Demis Hassabis가 읽은 체스 핸드북의 세 부분이 지금도 체스 프로그램의 전부라는 사실에 놀랐습니다. 달라진 점은 평가 함수를 이제 학습한다는 것뿐입니다. 체스, 쇼기, 바둑은 게임 AI의 역사를 그대로 따라갑니다. 고전적인 방법은 체스에서 통하고, NNUE 네트워크가 발명된 쇼기에서 한계에 부딪히며, 바둑에서는 네트워크가 탐색을 이끌지 않으면 실패합니다. 저는 세 게임 모두를 위한 엔진을 Rust로 만들고 WebAssembly로 컴파일해 휴대폰에서 오프라인으로 두도록 했습니다. 탐색 안에 들어가는 네트워크는 작고 손으로 쓴 산술이어야 하기 때문입니다. 자기 대국으로 학습한 제 네트워크는 같은 탐색 깊이에서는 손으로 쓴 체스 평가 함수를 이겼지만, 같은 시간에서는 비기는 데 그쳤습니다. 국면 하나당 비용이 더 크기 때문입니다. 한 달이 지나고 나니 처음보다 더 나은 질문들이 남았습니다. 저는 실패를 포함한 모든 실행을 노트에 기록하고 있으며, 이것이 연재로 이어질 수도 있습니다.

이번 달에 저는 [*The Infinity Machine*](https://raskell.io/reading/#the-infinity-machine)을 읽고 있습니다. Sebastian Mallaby(서배스천 맬러비)가 쓴 Demis Hassabis(데미스 허사비스)의 전기입니다. 허사비스는 북런던 출신의 체스 신동으로, AlphaGo와 AlphaFold를 만든 연구소 DeepMind를 세운 사람입니다. 제가 이 책을 집어 든 것은 지금 우리가 함께 살아가는 AI를 초기에 설계한 사람 가운데 한 명을, 그와 서른 시간을 함께 보낸 저자의 목소리로 이해하고 싶었기 때문이고, 또 게임, 시뮬레이션, 기계가 스스로 무엇을 배울 수 있느냐는 질문처럼 저를 끄는 거의 모든 것이 그의 이야기를 관통하기 때문입니다. 100쪽쯤 읽었을 때 한 장면이 나왔는데, 저는 아직도 그 장면을 내려놓지 못하고 있습니다.

1988년, 허사비스는 열두 살입니다. 그는 체스 상금으로 Commodore Amiga 500을 샀고, 채링크로스 로드의 큰 서점 Foyles에서 얇은 페이퍼백 한 권을 발견합니다. David Levy(데이비드 레비)의 *The Chess Computer Handbook*입니다. 그는 그 책을 앉은 자리에서 다 읽습니다. 레비는 체스 프로그램이 세 부분으로 만들어진다고 설명합니다. 먼저 판을 숫자로 바꾸어야 합니다. 다음으로 어떤 함수가 국면을 보고 누가 더 나은지 말해야 합니다. 그리고 탐색이 수를 시도하고, 그 수에 대한 응수를 시도하고, 다시 그 응수에 대한 응수를 시도해야 하는데, 트리는 어떤 컴퓨터도 따라갈 수 없을 만큼 빠르게 자라므로 명백히 나쁜 가지는 잘라 내야 합니다. 허사비스는 이것을 만들어 보려 하지만 Amiga가 체스를 감당하지 못한다는 것을 깨닫고, 대신 오델로 프로그램을 짭니다. 그 프로그램은 다섯 살 남동생을 이깁니다.

저는 거기서 책을 내려놓았습니다. 그 소년에게서 제 모습을 조금 알아본 탓도 있고, 두 가지를 깨달았기 때문이기도 합니다. 첫째, 그 세 부분은 지금도 체스 프로그램의 전부입니다. 38년이 지난 지금, 세계에서 가장 강한 엔진도 숫자로 바꾼 판, 평가 함수, 가지치기를 하는 트리 탐색으로 이루어져 있습니다. 달라진 것은 평가 함수를 이제 사람이 쓰지 않고 기계가 학습한다는 점, 그리고 기계가 자기 자신과 두면서 그것을 학습했다는 점입니다. 둘째, 제 책상 위의 노트북은 그 Amiga보다 메모리가 3만 배나 많은데, 저는 그 세 부분을 직접 만들어 본 적이 한 번도 없었습니다.

그래서 이번 달에 만들었습니다. 저는 체스, 일본의 쇼기, 바둑을 위한 게임 엔진 세 개를 Rust로 작성하고, 휴대폰 브라우저에서 두도록 WebAssembly로 컴파일했으며, 그중 하나를 제가 손으로 만들 수 있는 것보다 더 강하게 만들어 줄 학습 루프를 구축했습니다. 앱은 [kishi.raskell.io](https://kishi.raskell.io)에 있고 코드는 [GitHub에](https://github.com/raskell-io/kishi) 있습니다. 이 글은 왜 그 세 게임이었는지, 왜 그 도구들이었는지, 그리고 책 속의 아이디어가 평범한 기계 한 대를 만났을 때 무슨 일이 일어났는지에 관한 기록입니다.

## 책, 사람, 그리고 연구소 {#the-book-the-man-and-the-lab}

맬러비는 본업이 기술 저술가가 아닙니다. 그는 *Financial Times*의 기고 편집자를 지냈고, 퓰리처상 최종 후보에 두 번 올랐으며, 지금은 미국외교협회(Council on Foreign Relations)의 선임 연구원입니다. 그의 이전 책들은 돈에 관한 것이었습니다. *More Money Than God*은 헤지펀드를, *The Man Who Knew*는 Alan Greenspan(앨런 그린스펀)을, *The Power Law*는 벤처 캐피털을 다룹니다. 알고 보니 이것이 딱 맞는 배경이었습니다. *The Infinity Machine*은 전기이자 동시에 회사의 역사이며, 허사비스와 나눈 약 서른 시간의 대화와 그 주변 인물들과의 100건이 넘는 인터뷰를 바탕으로 합니다. 그리고 누군가가 왜 스스로 위험하다고 믿는 기술을 만드는지라는 질문을, 어떻게 만드는지라는 질문만큼 진지하게 다룹니다. 이 책은 올해 초에 나왔습니다. 저는 천천히 읽고 있고, AlphaGo를 다룬 장들은 아직 앞에 남아 있습니다. 그게 그다지 아쉽지 않은데, 그 장들은 제 나름의 버전을 돌려 놓은 채로 만나고 싶기 때문입니다.

이 분야를 따라가지 않는 분께 덧붙이면, 허사비스는 쉰 살인 지금 이 분야가 원로로 대하는 인물입니다. 1976년 핀칠리에서 싱가포르 화교 어머니와 그리스계 키프로스인 아버지 사이에서 태어난 그는 열세 살에 체스 마스터가 되었고, 같은 나이대에서 세계 2위의 선수였습니다. 열여섯 살에는 게임 스튜디오 Bullfrog에서 *Theme Park*를 공동 개발했는데, 이 게임은 수백만 장이 팔렸습니다. 케임브리지에서 컴퓨터 과학을 공부했고, 7년 동안 자기 게임 스튜디오를 운영한 뒤, 신경과학 박사 과정을 밟으러 대학으로 돌아갔습니다. 지능을 가진 기계를 만드는 유일한 길은 먼저 현존하는 유일한 사례를 이해하는 것이라고 생각했기 때문입니다. 2010년, 러셀 스퀘어의 한 다락방에서 그는 Shane Legg(셰인 레그), Mustafa Suleyman(무스타파 술레이만)과 함께 DeepMind를 세웠습니다. 그들이 제안한 것이 가능하다고 믿는 사람이 이 분야에 거의 없던 시절이었습니다. 처음으로 들어온 제대로 된 돈은 Peter Thiel(피터 틸)의 펀드에서 나왔는데, 그 파트너들은 과학에는 A+를, 비즈니스 모델에는 F를 주었습니다.

DeepMind는 인공지능을 위한 맨해튼 프로젝트로 구상되었고, 그 방법론이 이 책과 이 글을 이어 줍니다. 그들이 건 승부는 2010년에는 둘 다 유행에서 벗어나 있던 이 분야의 두 갈래를 결합하는 것이었습니다. 하나는 Geoffrey Hinton(제프리 힌턴)이 사반세기 동안 옹호해 온 층층이 쌓인 신경망, 곧 딥러닝이고, 다른 하나는 프로그램이 레이블이 붙은 예제가 아니라 자기 행동의 결과로부터 배우는 강화학습이었습니다. 그 위에 신경과학의 아이디어를 얹었습니다. 시험장은 게임이었습니다. 게임에는 글로 적을 수 있는 규칙과 판 위에서 읽어 낼 수 있는 점수가 있기 때문입니다. 2013년에 공개된 첫 성과는 픽셀만 보고 Atari 게임을 배운 하나의 에이전트였습니다. 2014년에 Google이 회사를 인수했습니다. 2016년에 AlphaGo가 서울에서 이세돌을 이겼고, 2017년에는 그 후계자인 AlphaZero가 규칙과 자기 자신과의 대국 외에는 아무것도 없이 하나의 알고리즘으로 체스, 쇼기, 바둑을 배워 각 게임에서 당시 가장 강한 프로그램을 이겼습니다. 이 세 게임이 바로 이 글에 나오는 세 게임이고, 순서도 같습니다. 그리고 자기 대국이 제가 만든 루프입니다. 이어서 2020년에 AlphaFold가, 그다음에 2억 개 단백질의 예측 구조가, 그리고 2024년 노벨 화학상이 뒤따랐습니다. 이름조차 세 겹의 경의를 담고 있습니다. 딥러닝, Deep Blue, 그리고 『은하수를 여행하는 히치하이커를 위한 안내서』에서 모든 것에 대한 답을 요구받은 컴퓨터 Deep Thought에 대한 경의입니다.

저는 왜 이 책을 읽고 있을까요? 하나는 분명한 이유입니다. 저는 AI 플랫폼을 만드는 일로 생계를 꾸리고 있고, 이 혁명을 설계한 사람 가운데 한 명의 이야기를 안쪽에서 듣고 싶었습니다. 이 책은 정확히 그것이고, 그 이상입니다. 또 하나는 자꾸 저를 놀라게 한 유사점들 때문입니다. 놀이공원 게임 안에 시뮬레이션을 몰래 들여놓은 게임 디자이너, 보드게임을 보면 이기고 싶어서 그냥 지나치지 못하는 승부사, 세계를 정보로 여기고 마음을 현실을 기록하는 것이 아니라 현실을 짓는 것으로 생각하는 사람. 저는 그 안에서 편하다고 하기 어려울 만큼 많은 것을 알아봅니다. 그리고 마지막은 믿음 때문입니다. 허사비스는 거의 아무도 인공지능을 믿지 않을 때 그것을 믿었고, 책은 그 확신을 거의 종교에 가깝다고 부를 만큼 정직하며, 그는 옳았습니다. 이 이야기에는 트랜스휴머니즘의 한 갈래가 흐릅니다. 그가 Bullfrog 시절에 읽은 Iain Banks(이언 뱅크스)의 소설에서부터 DeepMind가 첫 투자자를 찾은 Singularity Summit에 이르기까지 말입니다. 그리고 그는 그 캘리포니아식 버전과는 건조한 영국식 거리를 둡니다. 저에게도 저만의 갈래가 있습니다. 다른 결을 지녔고 다른 방향에서 왔지만, 그것은 다른 글의 주제입니다. 여기서는 제가 회의론자로서 이 책을 펼친 것이 아니라는 정도만 말씀드리면 충분합니다.

그 초반부에서 저를 사로잡은 것은 신동 이야기보다도, 게임이 얼마나 자주 입구가 되는가 하는 점이었습니다. 허사비스는 체스를 통해 프로그래밍을 배웁니다. 그의 첫 지능형 프로그램은 오델로를 둡니다. 케임브리지에서 그는 한 교수에게 바둑을 배우고, 쇼기는 영국 랭킹 정상에 오를 만큼 깊이 파고듭니다. 훗날 AlphaGo 작업을 이끌게 될 그의 친구 David Silver(데이비드 실버)는, 두 사람의 게임 회사가 망한 뒤 남프랑스에서 읽은 강화학습 교과서를 통해 이 분야에 들어옵니다. 맬러비는 이 실마리를 컴퓨터가 체스를 두도록 프로그래밍하는 법에 관한 Claude Shannon(클로드 섀넌)의 1950년 논문까지 거슬러 올라가 추적하는데, 레비의 핸드북이 열두 살 소년에게 소개한 것이 바로 그 논문이었습니다. 섀넌은 체스 프로그램에 실용적인 중요성은 없지만, 게임을 정복하는 것이 “비슷한 성격을 지닌 더 중요한 다른 문제들을 공략하는 쐐기”가 될 수 있다고 썼습니다. 이 문장은 76년 전의 것이지만, 보드게임에 한 달을 쓰는 일을 정당화하는 한 줄짜리 문장으로는 제가 아는 것 가운데 여전히 가장 좋습니다.

## 저의 게임들 {#my-own-games}

제 체스 이야기는 그보다 작습니다. 저는 십대 초반에 체스 클럽에 들어가 지역 대회에 나갔고, 그중 몇몇 대회에서는 좋은 성적을 냈습니다. 허사비스가 여섯 살 때 그랬던 것처럼 체스 칼럼니스트가 홀을 가로질러 와서 제 아버지에게 말을 걸 만한 정도는 전혀 아니었고, 이 책이 우리 둘을 같은 서점에 세워 두지 않았다면 그의 경력과 같은 문단에 올릴 생각도 하지 않았을 정도입니다. 그래도 게임은 남았습니다. 저는 누가 한 판 두자고 하면 거절하지 않습니다. 마지막 대국은 올해 샌프란시스코 유니언 스퀘어에서 동료이자 친구와 둔 것이었습니다. 저는 무릎 높이의 말이 놓인 커다란 야외 체스판에 약한데, 좋아하는 곳이 두 군데 있습니다. 하나는 루체른에, 하나는 이곳 바젤의 라인강 옆에 있습니다. 기차에서는 휴대폰으로 lichess에서 둡니다. 그리고 2020년대에 이 게임이 맞이한 묘한 두 번째 삶을 기대 이상으로 즐겼습니다. 가상의 신동을 다룬 텔레비전 시리즈가 사람들을 체스판 사러 나가게 했고, 그랜드마스터들은 어떤 대회장도 담을 수 없을 만큼의 시청자를 거느린 스트리머가 되었습니다. 저는 그런 일이 올 줄 몰랐고, 불만도 없습니다.

제 게임 생활의 나머지 절반은 독일어로 Aufbauspiele라고 부르는 것, 곧 건설 게임입니다. Anno, Die Siedler, 타이쿤 장르 전체처럼, 규칙이 있는 세계를 깔아 두고 그것이 돌아가는 모습을 지켜보는 모든 게임입니다. 허사비스의 *Theme Park*도 그중 하나라서, 그 장은 개인적으로 다가왔습니다. 감자튀김에 소금을 너무 많이 치면 목이 말라 음료를 더 사는 방문객들, 롤러코스터가 너무 빠르면 멀미를 하는 탑승객들은 제가 이런 게임을 하는 이유가 되는 바로 그런 종류의 메커니즘입니다. 저는 게임이 현실을 흉내 내려 하고, 두툼한 규칙 집합이 아무도 쓰지 않은 이야기를 만들어 내게 할 때 가장 좋아합니다. 제가 Dwarf Fortress를 사랑하는 이유도 그것이고, 자극 속에서 학습하는 [접시 위의 뉴런](https://raskell.io/articles/brain-emulation-as-an-infrastructure-problem/)에서부터 진화하도록 내버려 둔 [테라리움](https://terrarium.raskell.io)까지 제가 계속 저만의 시뮬레이션을 만드는 이유도 그것입니다. 그 관점에서 보면 체스 엔진은 만들 가치가 있는 가장 작은 시뮬레이션입니다. 규칙을 갖춘 완결된 세계, 그리고 그 안에서 배워야 하는 에이전트입니다.

## 왜 게임인가, 그리고 왜 이 세 가지인가 {#why-games-and-why-these-three}

섀넌의 요점은 실용적입니다. 체스 같은 게임에는 완전히 글로 적을 수 있는 규칙이 있고, 논쟁의 여지 없이 판 위에서 읽어 낼 수 있는 결과가 있으며, 아무리 연구해도 바닥나지 않는 깊이가 있습니다. 이런 조합은 드뭅니다. 대부분의 현실 문제는 규칙이 흐릿하고, 결과에 다툼이 있으며, 잣대가 없습니다. 게임은 새로운 아이디어를 오후 한나절 만에, 수백 년에 걸친 인간의 지식에 맞대어 시험할 수 있는 실험실을 주며, 그 답은 숫자로 나옵니다.

게다가 체스, 쇼기, 바둑은 이 분야의 역사가 바로 그 순서대로 펼쳐진 세 게임이기도 하며, 각 게임은 앞의 게임에서 통하던 것을 무너뜨렸습니다. 제가 하나가 아니라 세 가지를 모두 고른 이유가 그것입니다.

**체스**는 6세기 무렵 북인도에서 차투랑가로 생겨나 페르시아를 거쳐 유럽으로 건너갔고, 15세기 말 스페인과 이탈리아에서 멀리 움직이는 퀸과 비숍을 갖춘 현대의 형태를 얻었습니다. 섀넌이 고른 게임이고, 레비의 핸드북이 가르치는 게임이며, 탐색과 평가라는 고전적인 방법이 바로 그것을 위해 만들어진 게임입니다. 1997년 IBM의 Deep Blue는 전용 칩 위에서 초당 2억 개의 국면을 탐색하고, 사람이 작성하고 조정한 평가 함수를 써서 Garry Kasparov(가리 카스파로프)를 이겼습니다. 그것은 세 부분의 승리였고, 통찰을 기대한 사람에게는 실망이었습니다. 기계는 더 많이 이해해서가 아니라 더 멀리 내다봐서 이겼습니다. 레비의 장 이후로 흥미로운 질문은 평가 함수를 작성하는 대신 학습할 수 있느냐는 것이었습니다. 체스에서 이 질문은 2018년에서 2020년 사이에, 엔진의 가장 안쪽 루프 안에 사는 작은 신경망으로 답해졌습니다. 그 이름은 NNUE이고, 체스를 위해 발명된 것이 아닙니다.

**쇼기**는 같은 계열의 일본 갈래입니다. 11세기 무렵까지 중국과 동남아시아를 거쳐 일본에 들어왔고, 16세기 무렵 지금의 형태를 갖추었으며, 가장 뛰어난 기사들에게 녹봉을 준 도쿠가와 쇼군들 아래에서 하나의 제도가 되었습니다. 지금도 쇼기 챔피언에게 주어지는 칭호인 첫 명인(名人)은 1612년에 수여되었습니다. 오늘날 쇼기는 일본에서 수백만 명이 두는 게임으로, 프로 제도와 텔레비전으로 중계되는 타이틀전이 있고, 2023년 스물한 살의 나이로 8대 타이틀을 한꺼번에 보유한 젊은 스타 Sota Fujii(후지이 소타)가 있습니다. 판은 9×9이고, 양쪽은 각각 여덟 종류의 말 스무 개를 가지며, 대부분의 말은 판의 맨 끝 세 줄에 들어서면 승격합니다. 규칙 하나가 이것을 다른 게임으로 만듭니다. 잡은 말은 편을 바꾸어 잡은 쪽의 손으로 들어가고, 나중에 한 수로서 거의 모든 빈칸에 내려놓을 수 있습니다. 아무것도 판을 영영 떠나지 않으므로, 게임은 체스처럼 단순해지지 않습니다. 보통의 차례에 고를 수 있는 수는 체스의 35개 남짓에 비해 80개쯤이고, 대국은 더 길며, 종반은 기술적인 소모전이 아니라 서로 먼저 도달하려는 경주가 됩니다. 프로그래머에게 말 내려놓기는 평가 함수를 손으로 작성하기 훨씬 어렵게 만들며, 그래서 학습은 여기서 먼저 일어났습니다. 컴퓨터 쇼기는 2006년 Bonanza로 탈바꿈했습니다. 손으로 조정하지 않고 프로 기보에 맞추어 평가 함수를 학습시킨 최초의 프로그램이었습니다. 2017년에는 Ponanza가 현역 명인 Amahiko Sato(사토 아마히코)를 이겼고, 2018년에는 Yu Nasu(나스 유)가 네트워크 설계를 발표했는데, 2년 뒤 Stockfish가 그것을 체스에 채택했습니다. 제가 쫓던 아이디어는 쇼기에서 왔습니다.

**바둑**은 둘보다 오래되었고 어느 쪽보다도 단순합니다. 중국에서 생겨나 적어도 2500년의 역사를 지녔고, 음악, 서예, 그림과 함께 교양인의 네 가지 소양 가운데 하나로 꼽혔습니다. 8세기 무렵 일본에 전해졌는데, 에도 시대에는 프로 기사들의 가문이 막부의 지원을 받았습니다. 그리고 바둑이라고 불리는 한국에도 깊은 뿌리를 두고 있습니다. 규칙은 카드 한 장에 들어갑니다. 두 사람이 번갈아 19×19 격자의 교차점에 흑돌과 백돌을 놓습니다. 바로 옆에 빈 점이 하나도 없는 돌 무리는 잡혀서 판에서 들어냅니다. 끝났을 때 판을 더 많이 둘러싼 쪽이 이기며, 나중에 두는 백에게는 몇 집의 덤이 주어집니다. 이 규칙들로부터 매 차례 250개 안팎의 선택지가 있고, 한 판이 200수나 300수에 이르며, 아무도 손으로 점수를 매기지 못한 국면들을 지닌 게임이 나옵니다. 레비의 세 부분은 여기서 무너집니다. 바둑에서 네 수 앞을 내다보는 탐색은 거의 아무것도 보지 못하고, 잎 노드에서 적용할 누가 이기고 있는지에 대한 공식도 없습니다. 바둑은 허사비스를 포함해 이 분야의 모든 사람이 거대한 도전이라고 부른 게임이었고, DeepMind가 자신들이 가진 것을 보여 주고 싶을 때 고른 게임이었습니다. 2000년대 후반의 프로그램들은 체스의 방법을 몬테카를로 트리 탐색으로 바꾸었습니다. 무작위 대국 수천 판을 끝까지 두어 보고 누가 이기는지 세는 방법입니다. 그것으로 강한 아마추어 수준에는 이르렀지만 거기서 멈추었습니다. AlphaGo는 그 탐색을 유지하면서 두 개의 신경망을 붙였습니다. 하나는 수를 제안하고, 하나는 국면을 판정하며, 처음에는 사람의 기보로, 그다음에는 자기 기보로 학습했습니다. 그리고 2016년 3월, 이세돌을 4대 1로 이겼습니다.

정리하면 이렇습니다. 하나는 고전적인 방법이 통하고 네트워크가 평가 함수를 대신하는 게임, 하나는 같은 방법이 한계에 부딪히고 네트워크가 발명된 게임, 하나는 그 방법이 실패하고 네트워크가 탐색 자체를 이끌어야 하는 게임입니다. 셋을 합치면 이 분야 40년의 짧은 강의가 되며, 각각은 누구나 내려받을 수 있는 상대와 겨루어 측정할 수 있습니다.

## 왜 읽는 대신 만들었는가 {#why-i-built-it-rather-than-read-about-it}

허사비스는 만들 수 없는 것은 이해하지 못한 것이라는 Feynman(파인먼)의 말을 즐겨 인용하는데, 이것이 이 프로젝트의 솔직한 이유입니다. 저는 AlphaGo 논문과 Stockfish NNUE 해설을 한 번 넘게 읽었습니다. 그림을 설명할 수도 있었습니다. 하지만 K가 무엇인지, 같은 탐색 깊이에서 이기는 네트워크가 왜 같은 시간에서는 질 수 있는지, 한 세대의 자기 대국이 노트북의 수명에서 몇 시간을 잡아먹는지는 말할 수 없었을 것입니다. 그런 것들은 논문이 빼놓는 것이고, 그것을 배우는 유일한 방법은 직접 대가를 치르는 것이기 때문입니다. 책을 읽으면서 그 간극이 불편해졌고, 저를 테라리움 만들게 하는 그 근질거림이, 규칙을 갖춘 세계와 그 안의 학습자가 제 기계 위에서 돌아가기를 원했습니다.

또 다른 이유는 재료가 처음으로 모두 제 책상 위에 있다는 것입니다. 아이디어는 발표되어 있고, 참조 구현은 오픈 소스입니다. 노트북은 Apple M4에 코어 열 개, 메모리 16기가바이트를 갖춘 MacBook Pro로, 연구용 기계는 아니지만 범용 연산 능력은 Deep Blue보다 큽니다. 제 휴대폰의 브라우저는 이제 벡터 명령어와 진짜 스레드를 갖춘 컴파일된 코드를 실행할 수 있습니다. 그리고 코드를 작성하는 일 자체는, 예전 같으면 겨울 내내 저녁 시간을 바쳐야 했을 텐데, 코딩 에이전트와 함께 며칠 만에 끝났습니다. 무엇을 만들지는 제가 정하고, 타이핑의 대부분은 에이전트가 했습니다. 이것은 방법론에 속하는 이야기입니다. 에이전트가 코드를 썼고, 두 엔진 사이의 대국이 그 코드가 쓸 만한지를 판정했으며, 대국은 누가 코드를 썼는지 신경 쓰지 않습니다.

## 왜 PyTorch가 아니라 Rust인가 {#why-rust-and-not-pytorch}

2026년에 머신러닝을 하는 뻔한 방법은 Python과 PyTorch이고, 목표가 서버에서 질문에 답하는 모델이었다면 저도 그것을 썼을 것입니다. 목표는 제 휴대폰의 브라우저 탭 안에서, 오프라인으로 두는 상대였고, 그것이 그 아래의 모든 것을 바꾸었습니다.

체스 평가 함수는 요청당 한 번이 아니라 탐색 안에서, 코어 하나로, 배치 없이, 초당 약 100만 번 호출됩니다. 거기에 사는 네트워크는 API 뒤의 모델일 수 없습니다. 엔진과 같은 언어로 쓰인 수백 줄의 산술이어야 하고, 정수로 돌아가야 하며, 매번 처음부터 다시 계산하는 대신 수를 둘 때마다 점진적으로 갱신되어야 합니다. 바로 그것이 NNUE의 비결입니다. 다시 말해 추론은 어차피 손으로 작성해야 했습니다. 일단 그렇게 하고 나니, 학습기는 같은 산술을 거꾸로 돌리는 것이었습니다. 100만 개의 파라미터와 거의 전부가 0인 입력 위에서 말입니다. 그것 역시 수백 줄에 들어갔습니다. 그것을 직접 작성하는 일은 프레임워크가 제게서 숨겼을 것을 알아내는 방법이기도 했습니다. 맞추어 학습시키지 않고 짐작으로 정한 상수 하나가 이기는 네트워크를 지는 네트워크로 바꾸었는데, 프레임워크를 썼다면 저는 그 이유를 몰랐을 것입니다.

Rust는 [뉴런 배양](https://hotaru.raskell.io)에서 [판타지 콘솔](https://wasmad.raskell.io)까지 이 사이트에 있는 모든 것을 제가 작성하는 언어이고, 흔한 이유들로 엔진에 맞는 도구입니다. 초당 100만 번 도는 루프에 가비지 컬렉터가 없고, 메모리 배치를 통제할 수 있으며, 네이티브 바이너리와 같은 소스에서 벡터 명령어를 갖춘 WebAssembly를 만들어 내는 컴파일러가 있습니다. 노트북 위의 자기 대국에서 휴대폰 위의 한 수까지 하나의 언어가 하나의 저장소 안에서 돌아가고, 웹 앱에는 빌드 단계가 없습니다. 트레이드오프도 솔직하게 말씀드리겠습니다. 작고 희소한 네트워크를 CPU에서 학습시키는 것은 괜찮습니다. 하지만 바둑 네트워크가 수백만 개의 조밀한 파라미터를 가진 합성곱 신경망이 된다면, 코어 열 개 위의 Rust는 느릴 것이고, 저는 Metal 커널을 작성할지, 아니면 여기가 노트북 연구가 GPU를 만나는 지점이라고 인정할지 정해야 할 것입니다.

## 왜 WebAssembly인가 {#why-webassembly}

휴대폰이 핵심이기 때문입니다. 서버에 사는 상대는 제 것이 아닙니다. 앱 스토어에 있는 상대는 다른 누군가의 승인을 받아야 합니다. 홈 화면에 추가할 수 있고, 비행기 안에서도 작동하며, 제 노트북에서 돌아가는 것과 똑같은 바이너리를 실행하는 웹 페이지가 제가 원한 버전이었고, 2026년의 브라우저는 그것을 할 수 있습니다. WebAssembly는 한동안 128비트 벡터 명령어를 지원해 왔고, Safari는 이제 올바른 격리 헤더와 함께 제공되는 페이지라면 스레드 사이에 메모리를 공유하도록 허용합니다. 그래서 제 휴대폰의 체스 엔진은 네 개의 코어로 탐색합니다. 무료 체스 사이트인 Lichess는 분석 보드에서 같은 방식으로 Stockfish를 돌리는데, 이것이 시작하기 전에 이 접근이 타당하다는 제 증거였습니다.

이 제약은 어떤 논문보다도 설계를 많이 빚었습니다. 페이지와 함께 내려받아 휴대폰에서 실행해야 하는 네트워크는 작아야 합니다. Kishi의 체스 네트워크는 820킬로바이트이고 엔진 바이너리 안에 컴파일되어 들어갑니다. 브라우저 탭에서 돌아가야 하는 탐색은 검소해야 합니다. 코드에서 취향처럼 보이는 모든 결정은 사실 휴대폰이 무언가에 아니라고 말한 결과입니다.

## 무슨 일이 일어났는가 {#what-happened}

체스 엔진이 먼저였습니다. 비트보드, 흔히 쓰이는 가지치기 휴리스틱 계열을 갖춘 탐색, 그리고 잘 알려진 기물-칸 표에서 빌려 온 손으로 쓴 평가 함수입니다. lichess가 컴퓨터 상대를 설정하는 방식대로 설정한 Stockfish를 상대로, 단계마다 코어 하나로 20판씩 두었을 때, 이 엔진은 레벨 4를 19대 1로 이기고, 레벨 6을 13대 7로 이기며, 레벨 7에게는 19.5대 0.5로 집니다. lichess 컴퓨터와 두어 본 적이 있다면 그것으로 위치가 잡힐 것입니다. 클럽 수준의 탄탄한 선수이고, 정상과는 거리가 멉니다.

그다음은 루프였습니다. 엔진은 무작위 오프닝에서 출발해 52분 동안 자기 자신과 두었고, 그 결과 5만 7천 판에서 560만 개의 국면이 나왔습니다. 각 국면에는 탐색이 그것을 어떻게 보았는지와 대국이 어떻게 끝났는지가 레이블로 붙었습니다. 그 국면들로 20분이 채 안 되게 학습한 네트워크는, 양쪽이 같은 수의 국면을 살펴보도록 허용했을 때, 자기가 대체한 손으로 쓴 평가 함수를 레이팅 85점, 오차 ±32점 차로 이겼습니다. 양쪽에 같은 밀리초를 허용하자 둘은 비겼습니다. 네트워크는 국면 하나당 두 배 반의 비용이 들기 때문입니다. 이것이 이런 종류의 학습이 지닌 문제 전체를 한 문장으로 담은 것이고, 저는 숫자를 손에 쥐기 전에는 그것을 이해하지 못했습니다.

쇼기는 같은 모양의 자기 엔진과 손으로 쓴 평가 함수를 얻었고, 이 엔진은 Fairy-Stockfish의 가장 약한 설정을 20대 0으로 이기고 중간 정도의 설정에는 18대 2로 집니다. 바둑은 2000년대 후반의 방법, 곧 옛 MoGo 프로그램의 모양 패턴을 쓰는 몬테카를로 트리 탐색을 얻었고, 가장 낮은 레벨의 GNU Go를 상대로 한 수에 1초씩 주었을 때 열 판 중 세 판을 이깁니다. 셋 모두 휴대폰에서 둡니다. 높은 레벨에서 만족스러운 상대라고 부를 만한 것은 체스 하나뿐이고, 그것도 손으로 쓴 평가 함수로 그렇습니다. 학습한 네트워크는 아직 시계 위에서 제자리를 얻어 내지 못했기 때문입니다.

## 이것이 열어 준 것 {#what-this-opened-up}

저는 레비의 세 부분을 만들 수 있을까라는 하나의 질문으로 시작했고, 한 달을 다섯 개의 더 나은 질문으로 마무리했습니다.

체스 네트워크는 같은 탐색에서 이기고 같은 시간에서 비깁니다. 이것은 자기 대국의 세대가 거듭되어 학습 재료가 되는 대국이 강해지면 달라질까요, 아니면 노트북 크기의 네트워크는 언제나 자기 비용을 치르느라 바쁠까요? 이 글을 쓰는 지금도 루프는 낮은 우선순위로 돌아가고 있어서 노트북은 계속 쓸 수 있습니다. 왜 상수 하나가 결과를 레이팅 176점이나 흔들었을까요, 그리고 그것은 학습된 구성 요소와 그것이 꽂히는 손으로 조정된 시스템 사이의 계약에 대해 무엇을 말해 줄까요? 네트워크가 왕의 위치를 볼 수 있게 되면 같은 루프가 쇼기에서도 통할까요? 나스의 원래 설계는 그렇게 했고, 제 것은 아직 그렇지 않습니다. 바둑에는 두 번째 종류의 루프가 필요합니다. 탐색이 네트워크에게 어떤 수를 살펴볼지 가르치는 루프입니다. 저는 노트북이 19×19 전체 판에서 무엇을 학습할 수 있을지 모릅니다. 곧 다다를 이 책의 AlphaGo 장들은 2016년에 무엇이 필요했는지 알려 줄 것이고, 저는 2026년에 가게에서 산 기계로는 무엇이 필요한지 알고 싶습니다. 그리고 그 모든 것의 밑바닥에는 이런 질문이 있습니다. 엔진의 강함 가운데 얼마가 네이티브 바이너리에서 휴대폰 브라우저 탭으로 가는 여정을 견뎌 낼까요, 그리고 스레드는 그중 얼마를 되찾아 줄까요?

이 질문들은 각각 며칠의 작업과 몇 개의 숫자에 해당합니다. 저는 저장소에 [노트](https://github.com/raskell-io/kishi/blob/main/docs/study/notebook.md)를 쓰기 시작해서, 숫자가 나오는 대로 실패까지 포함해 적어 두고 있습니다. 답이 질문만큼 흥미롭다면, 이것은 여러 편의 글 가운데 첫 편이 될 수도 있습니다. 한 번에 아이디어 하나씩, 체스 먼저, 그다음 쇼기, 그다음 바둑. 지켜보겠습니다.

## 참고 문헌 {#references}

- Sebastian Mallaby, *The Infinity Machine: Demis Hassabis, DeepMind, and the Quest for Superintelligence* (Penguin Press, 2026), 1장부터 5장까지.
- Claude Shannon, [Programming a Computer for Playing Chess](https://www.computerhistory.org/chess/doc-431614f6d9b4e/), *Philosophical Magazine* (1950).
- David Levy, *The Chess Computer Handbook* (Batsford, 1984).
- Yu Nasu, [Efficiently Updatable Neural-Network-based Evaluation Functions for Computer Shogi](https://www.apply.computer-shogi.org/wcsc28/appeal/the_end_of_genesis_T.N.K.evolution_turbo_type_D/nnue.pdf) (2018, 일본어); Stockfish, [Introducing NNUE Evaluation](https://stockfishchess.org/blog/2020/introducing-nnue-evaluation/) (2020).
- David Silver 외, [Mastering the game of Go with deep neural networks and tree search](https://www.nature.com/articles/nature16961), *Nature* (2016).
- [Kishi](https://github.com/raskell-io/kishi): 엔진, 학습 루프, 그리고 모든 실행을 기록한 노트.
