Learning & Reasoning

알파고 논문을 읽으면서 ... 생각나는 대로

이현봉 2016. 3. 8. 22:17

바둑판 줄이 몇개인지 모르고, 인공지능 감은 잃었고, 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에게 "넌 이 것은 못하지" 하는 말 나오게 되면 게임 끝났다.  

- 학교 다닐 때 동료들과 함께 인공지능에서 추상화, 감정, 경험을 어떻게 할 수 있을까?  필요한가?  인공지능이 사람과 비슷하게 작동해야 하는 이유는 있나?  우리 뇌가 하는일의 대부분이 자동 기계작용이고, 알게 될 수록 사람의 인지메커니즘이 다른 동물과 그리 다르지 않고, 볼 수록 기계같다고. 이런 얘기를 한 생각이 난다.  인간의 가치, 인공지능과 무슨 관계?