NATURE에 AlphaGo(출처)에 대한 논문이 있어서 읽어 보았다. 솔직히 무슨 말인지 거의 이해를 하지 못하였다. 그래서 우선 이해한 부분만 정리하고 이해하지 못한 부분은 다시 정리할 계획이다. 기본적으로 Go(바둑)는 가능한 수가 너무 많아 단순 프로그램으로는 사람을 이기기가 쉽지 않다고 알려져 있다고 한다. AlphaGo가 최초로 사람(프로 기사)을 이긴 Go(바둑) 프로그램이 된 것이다.
그림 1: 이세돌과 AlphaGo 관련 사진 (출처)
(논문의 AlphaGo가 이세돌과의 경기에서 사용된 것인지는 알 수 없음)
기존의 Go(바둑) 프로그램은 크게 2가지 알고리즘(방법(?))으로 작성이 된다고 한다. 하나는 position value (각 점의 priority)를 기준으로 search의 death를 줄이는 방법이다. 내가 이해한 바에 의하면 position value가 높은 점을 기준으로 search를 처리하는 방법인 듯하다. 또 다른 방법은 sampling action을 기준으로 breadth search를 줄이는 방법이다. 두 번째의 sampling action이라는 정의를 잘 이해하지 못하겠다. 결과적으로 2번째 방법을 사용하면 아마추어 레벨 정도의 Go 프로그램을 작성 가능하다고 한다.
AlphaGo의 경우 Monte Carlo rollouts와 neural network를 같이 사용하여 Go(바둑) 프로그램을 만들었다고 한다. Monte Carlo rollout 은 기존에도 Go(바둑) 프로그램에서 자주 사용되는 방법이라고 한다. Neural network는 image classification, face recognition 등에서 좋은 성능을 보여 많이 사용되는 방법이다. NATURE 논문에 따르면 AlphaGo는 총 13개의 층으로 구성된 neural network를 기반으로 설계되었다고 한다. 그리고 아래와 같은 3개의 순서로 learning (학습?)을 진행한다고 한다 (그림 2 참조).
그림 2: Alpha 학습 순서 (출처)
- Step 1: Supervised Learning (SL) of policy networks
- Step 2: Reinforcement Learning (RL) of policy networks
- Step 3: Reinforcement Learning (RL) of value networks

- 40 search threads, 48 CPUs, 8 GPUs
- 40 search threads, 1,202 CPUs, 176 GPUs
- Monte Carlo Tree Search (MCTS) – Monte Carlo rollouts
- Deep neural networks (DNN)
- Supervised Learning (SL) 방법
- Reinforcement Learning (RL) 방법