바둑판 줄이 몇개인지 모르고, 인공지능 감은 잃었고, Deep Learning은 수박 겉핥기로 아는 나도 읽을 수 있게 해 주어 고마운 생각에.
page 1)
■ MCTS와 같이 Monte Carlo 기반의 game tree에서의 search는 (당연히) sampling/roll_out을 많이 하면 할 수록 바둑판의 유/불리 상황이나 다음 수로 어떤 것이 최적일까 추정하는 것이 정확해진다. 문제는, 바둑의 search space가 너무 크다. 바둑과 같이 막대한 크기의 search space를 갖는 Game Tree의 search space를 줄여보자.
1. Search Depth를 줄이자 : 게임을 끝까지 하지 않고도 현재 상태, 또는 현재 상태에서 어느 정도까지 depth를 내려 가면 누가 이길 지 결과를 어느 정도 estimation 할 수 있는 valuation function v(s) (v: valuation, s: 바둑판 모양) 를 구해 게임 트리의 solution을 구하는 데 요구되는 depth를 줄이자.
v(s)에 대해 알 수 있는 것:
- 게임 후반부에 갈 수록 v(s)의 계산이 쉬워지고(남아있는 depth가 작아지므로 search space가 줄고) 정확해 진다
- Monte Carlo Tree Search를 써 v(s)를 추정
- Markov : 논문에 따르면 현재 바둑판 상황 s만 활용. 현재 s에 이르게 된 과거 상황을 활용한다는 내용 없음
- v(s)가 정확할 수록 depth를 다 진행하지 않아도 게임의 결과를 더 일찍 정확히 예측할 수 있어 게임 자체를 더 일찍 끝낼 수 있음. 내가 이기든, 상대가 이기든...
- v(s) 추정에는 바둑판 상황외에도 다른 변수, 즉 player에 대한 실력, computation time들 다른 제한 조건들도 포함되어야 할 것 같음
2. Search Breadth를 줄이자 : 현재 바둑판 s에서 다음에 어디에 둘 까 'a'를 결정하는데 쓰는 policy distribution 'p(a|s)' 에서 가능한 적게 (잠재) a를 sampling/exploration 해서 (진짜/최적의) a를 결정할 수 있도록 하자.
- Monte Carlo Tree Search에서의 Monte Carlo roll out과 같이 현재 s에서 depth first search를 할 때 가능한 Monte Carlo roll out 의 수를 줄이고도 원하는 결과 v(s)를 잘 추정하면 좋겠다. 이는 다른 Monte Carlo Simulation에서 어떻게 sampling을 하면 좋겠는가와 같은 이슈.
- p(a|s)를 s 상태에서 a를 추천함의 세기, 또는 a로 둘 때 (결과적으로) 이길 가능성/확률이라고 생각할 수 있음.
- v(s)가 정확해 질수록 p(a|s) 값의 신뢰도가 높아지고, 따라서 p(a|s)에 따라 게임을 하면 현재 s와 player의 실력으로 최선의 게임을 하는 것임.
■ 그럼, v(s)와 p(a|s)를 어떻게 구하나
- s를 19x19 image로 만듬. 이를 CNN의 convolution layer가 convolution해서 여러개의 feature map으로 만듬. Layer에 최대 384개의 Feature map을 만들었음. Map의 다른 구조, stride/overlap나 크기는 어떤지?
- pσ (supervised learning based policy network: 사람들의 play로 부터 “이런 s일 때 어떤 a를 취했나”를 training set 삼아 Supervised Learning (SL 방식)으로 구한 policy network.
- pπ : Monte Carlo roll out을 (적게) 실행하여 빨리 구한 policy. (충분한 수의 roll out을 하지 않아 정확성 낮음)
- pρ (reinforcement learning based policy network) : pσ 가 s에 대해 다음 최적의 a가 어떤 것인가를 Supervised Learning으로 만든 NN인데 비하여, pρ 는 현재 바둑판이 s일 때 reinforced learning 으로 게임 결과가 어느 정도의 정확성으로 추정될 시점까지 최선의 결과를 목표로 하여 자체 학습을 하여 구한 policy. pσ 와 같이 Convolution Neural Network로 만듬. pρ 는 pσ 을 초기조건으로 게임에서 이기는 것을 목표로 higher level, abstract 레벨의 학습을 하는 형태. Deep Learning 보편 구조. pρ 학습을 할 때 어느 depth 단계까지 내려가야 할 지, 또 이를 위해 신뢰할만한 v(s)가 필요한데 이를 어떻게 구하는 지가 이슈.
- vθ (valuation network estimator ) : 앞의 valuation function v를 convolution neural network로 구현한 estimator. 현재 바둑판 s에서 pρ 를 활용해 게임을 해 나갈 때 누가 결국 이기는 가를 estimate/예측. vθ 변수로 s, pρ 외에 또 무엇이 있을 수 있을까?
- policy network ( pσ, pπ, pρ )의 입력이 되는 보드판 상황 정보 s는 "Extended Data Table 2" 형태. 바둑을 몰라 그런 지 무슨 말인지 잘 모르겠음. 11개의 feature map으로 구성. 왜 이런 모양으로 했는 지 궁금. 학습으로?
- policy network나 valuation network을 구성하는 CNN의 다른 구조, Pooling이나 최종단 NN에 대한 얘기 없음. 19x19개의 receptive field로 된 s에서 점차로 global한 값을 제공해야 하는 vθ 네트워크를 만들어야 하는데…
page 2)
- fig 2-b) : policy network을 이용해 경기를 진행했을 경우 100개의 rollout 만으로는 uniform random sampling으로 정확한 승/패 예측이 경기 막판까지도 거의 불가능. RL Policy Network은 경기가 진행될 수록 결과 예측 정확성이 제일 좋음. Value Network의 정확성도 RL Policy Network에 비해 그리 나쁘지 않음. 즉, RL Network으로 끝까지 경기를 진행해 본 것과, 현재 s에 기반해 학습된 Value Network vθ 가 예측한 결과가 거의 비슷한 성능을 보임. 따라서 가능하면 vθ 로 바둑판 형세 판단 끝내자.
page 3) 의 Fig-3)를 이해하려면 바둑을 좀 알아야 할 것 같다.
- 바둑 search tree에서 가능한 edge의 수 (s, a)는 몇개일까? 가능한 바둑판 모양 s의 갯수에, 각 s에서 돌을 놓을 수 있는 수.
- SL : Leaf Node. 즉, 이 바둑판에서 다음으로 이어진 바둑판이 없었다는 말인가? 처음 막닥뜨린 바둑판이란 말? 똑 같은 바둑판 모양이 바둑 중에 되풀이 될 수 있나?
- Leaf Node SL의 valuation은 간단히 vθ 네크워크로 값을 추정하지 않고, vθ 로 예측한 값과 빠른 policy pπ 로 끝까지 경기를 진행시켜 구한 reward 값 Z의 combination으로 구한다. 이 때 weight parameter λ를 0~1 사이 어떤 값으로 할 것인가? 논문에 언급 있음.
- Fig-3)에는 heuristics가 꽤 사용됨. 이해하려면 바둑을 알아야 할 것 같음.
■ 읽고 나서
- 현재 알파고로도 매우 다양하게 변화를 줄 수 있다. Policy Network을 훈련시킬 때 training set으로 어떤 것을 쓰나에 따라 결과가 달라질 수 있다. 이세돌과 같은 특정인에 맞추어 tuning 할 수도 있다.
- s의 구조, Policy Network, Valuation 값을 추정하는 방법, Policy와 Valuation Network 결과를 이용해 돌을 어디에 놓을 까를 판단하는 방법, 이런 모든 것에 현재 알파고로도 무지 변화를 꾀할 수 있다. 사람들이 실력에 따라, 기분에 따라 판단이나 계산이 달라지듯이, 알파고도 현재 구조로도 상대에 따라 성격을 바꿀 수 있다. 가령, 게임 도중에도 다음 돌을 놓을 자리를 결정할 때 valuation 값을 구하는 식을 약간 random하게 변화 줄 수 있고, 이는 action value Q를 바뀌게 하고, 다음 수를 바뀌게 한다. 이런 것들을 적절히 활용해 게임 중에도 상대에게 적용할 수 있다
- 알파고에 현재 s에 이르기까지의 몇 단계 이전 움직임도 포함시킬 수 있다. 이를 통해 상대의 일련의 움직임에 따른 집중, 또는 무시를 학습 영역에 포함할 수 있다. 알파고 사람들이 LSTM 개념을 접목시키는 것은 어려운 일이 아니다.
- 알파고는 그 만든이들이 Discussion에서 언급했듯이 General AI를 지향하고 있는 과정 중 "바둑도 둘 줄 알아요" 를 보여주는 것이다. AI에게 "넌 이 것은 못하지" 하는 말 나오게 되면 게임 끝났다.
- 학교 다닐 때 동료들과 함께 인공지능에서 추상화, 감정, 경험을 어떻게 할 수 있을까? 필요한가? 인공지능이 사람과 비슷하게 작동해야 하는 이유는 있나? 우리 뇌가 하는일의 대부분이 자동 기계작용이고, 알게 될 수록 사람의 인지메커니즘이 다른 동물과 그리 다르지 않고, 볼 수록 기계같다고. 이런 얘기를 한 생각이 난다. 인간의 가치, 인공지능과 무슨 관계?
'Learning & Reasoning' 카테고리의 다른 글
Artificial Intelligence meets Natural Stupidity (0) | 2016.05.19 |
---|---|
Data Science는 막장? (0) | 2015.08.31 |
데이터 사이언티스트의 조건 (0) | 2014.04.04 |
데이터사이언스, 머신러닝, 통계학, 빅데이터가 어떻게 모였나? (1) | 2014.02.26 |
Yahoo와 Microsoft에서 하둡기반 분석 데이터의 중간크기가 14GByte? (0) | 2014.02.22 |