DeepLearning 이라는 말이 널리 알려진 날
2016년 3월 알파고와 이세돌의 대국이 있었다.
Deep Learning이라는 말이 생소하던 그 때, 주변 사람들과 공유하기 위해 내가 이해할 수 있는 범위에서 자료를 읽고, 생각을 정리했다.
이제는 Deep Learning이라는 말을 쓰면 사람들이 지루해 하는 시대가 되었다.
내가 그 때 했던 생각은 어떤게 틀렸고 어떤게 맞았는지, 그리고 그런 생각을 한 이유는 무엇이었는지 되짚어 보기 위해 그날의 글을 다시 아래에 옮긴다. 일부러 오타/어투 외에는 하나도 수정하지 않았다.
2016년 3월
요약하자면, AlphaGo는 Deep Learning을 통해서 바둑의 다음 수와 그 결과를 높은 수준으로 예측할 수 있게 되었고, 그를 통해 각 시점에 최적의 수를 두는 방식으로 게임을 플레이한다.
즉, AlphaGo의 실력은 상대의 수에 좌우되기에 어느 정도 수준인지 아직 아무도 모른다는 것이 오늘 승부의 첫번째 변수이며, 인간과 computer의 대결이라는 점이 가져오는 심리적 요인이 승부의 두 번째 변수가 될 것이다.
AlphaGo는 바둑을 위한 프로그램으로 향후 AlphaGo가 다른 일에 쓰일 가능성은 없지만,
Google DeepMind가 축적한 Deep Learning 기술은 의료를 시작으로 여러 영역에 쓰일 것이다.
[AlphaGo가 바둑을 플레이하는 방법]
*Deep Learning은 Machine Learning 중 Deep Neural Network를 학습시키는 방법을 말한다.
Network를 학습시켜서 결과물의 품질을 높이는 것이며, 이 Network가 결과물을 내는 함수 역할을 한다고 생각하면 이해가 편할 것이다.
AlphaGo는 크게 Policy Network와 Value Network를 학습시키는 데에 Deep Learning을 활용했다.
Policy Network (정책 네트워크)
AlphaGo는 다음 수를 예측하기 위해서 Policy Network를 사용합니다. Policy Network는 바둑판의 상황에 따라 다음에 놓여질 수가 어떤 것인지를 예측한다. 이로 인해 AlphaGo는 각 상황에서 다음에 놓일 확률이 가장 높은 수가 무엇인지 판단하게 된다.
Policy Network를 학습시키기 위해 AlphaGo는 인터넷 바둑 사이트에 올라온 약 3,000만개의 상황을 사용하였다. 이제부터는 다음에 놓일 확률이 높은 수만 놓아도 AlpahGo는 바둑을 플레이할 수 있다.
하지만 예측의 정확도 외에도, 2가지 한계가 발생한다.
1) 많은 사람의 수(=놓일 확률이 높은 수) 라고 해서 반드시 좋은 수는 아니다.
2) 많은 사람의 수라고 해서 반드시 이기는 수는 아니다.
이를 위해 AlpahGo는 아래 이어지는 방법들을 사용한다.
Reinforced Policy Network
간단히 말하면, 조금 더 수준이 높은 수가 나올 수 있도록 Policy Network를 학습시키는 것이다.
이를 위해서 DeepMind는 AlphaGo의 Policy Network들끼리 바둑을 두도록 하고, 이기는 경우에 조금 더 높은 가중치를 두는 방식으로 Policy Network를 강화했다.
그 결과, Policy Network만(무조건 확률이 높은 수만 둠)을 사용한 게임에서 AlphaGo는 기존의 open source 바둑 프로그램 중 가장 수준이 높다고 알려져 있는 Pachi를 대상으로 85%의 승률을 기록했다.
Value Network
그 다음은 해당 수가 이기는 수인지 지는 수인지를 판단하는 것이다.
이를 위해 DeepMind는 기존의 기보를 사용하는 방법과 Policy Network끼리 대결하도록 하는 방법을 활용하여 Value Network를 지속적으로 강화하도록 했다.
자 이제, 각 상황에서 가장 나올 확률이 높은 수도 알았고, 그 수에 따른 결과도 어느 정도 예측할 수 있게 되었다.
간단히 생각하면 확률이 높은 수 중에서 가장 이길 것 같은 수를 선택하면 되지만, 조금 더 정교하게 하기 위해서는 몇 수 앞을 미리 계산해 보아야 한다. 이를 위해서 AlphaGo는 다음 Monte Carlo라는 방법을 활용합니다.
Monte Carlo Tree Search
Monte Carlo를 간단히 말하면 Sampling이라고 볼 수 있다.
즉, 확률이 높은 지역에서 더 많은 Sample을 뽑고, 낮은 지역에서 적은 Sample을 뽑은 후 그 결과물을 조합해서 전체 결과를 평가하는 것이다.
AlphaGo는 다음에 어떤 수가 나올 확률이 가장 높은지를 예측할 수 있고, 개별 수에 따라서 결과를 예측할 수도 있습니다. 또, 필요할 경우 몇 수 앞을 play해볼 수도 있다.
AlphaGo는 확률값에 따른 예측과, 미리 Play해본 결과를(자신의 Policy Network끼리 대결을 시키면 된다..) 조합하여 해당 상황에서의 각 수별 승패값을 조금 더 정확하게 예측하고, 결과에 따라 다음 수를 예측하고, 가장 적절하다고 생각하는 수를 두게 된다.
So, AlphaGo is here
실제 경기에서 AlphaGo는 학습된 Network정보를 가지고 Play를 하게 된다.
이 연산을 위해 사용된 HW가 논문에 공개되어 있는데 40개의 search threads와 48개의 CPU, 8개의 GPU를 사용한다.
다만 이것은 게임을 Play하기 위해 필요한 HW이고, 실제 Deep Learning을 시키는 데 사용된 Spec은 비교할 수 없을 것이다.
아마 이세돌과의 경기에서는 조금 더 Spec이 좋은 장비를 가지고 나오지 않을까 한다.
[이세돌과 AlphaGo의 승부의 향방은?]
AlphaGo가 지면 그 이유는 당연히 AlphaGo의 현재의 한계로 귀결될 수 있다.
다만 이긴다면 그 이유는 여러 가지가 제시될 수 있을 것이다.
1) 실력의 한계를 모름
논문 게재 시점에 DeepMind가 추정한 AlpahGo의 실력치는 아래와 같습니다. (도표 생략) FanHui가 눈에 띄며, 나머지는 기존의 Computer 프로그램들이다.
즉, 누구를 이겼는지를 기반으로 실력을 판단할 뿐, 컴퓨터 프로그램을 모두 이긴 후에는 정확한 실력은 아무도 모른다는 의미이다.
본인인 이세돌 프로9단과 중국의 커제9단, 그리고 많은 Player들이 AlphaGo의 능력이 별로 뛰어나지 않다고 말한 것이 사실이다.
다만, 알파고의 기존 경기에 대한 사람들의 평이 ‘상대의 상황에 따라 play를 바꾼다’인 것을 보면, 결국 어느 정도 수준일지는 예측할 수 없을지 모른다.
아래 Google DeepMind CEO의 interview에서 일부 힌트를 얻을 수 있다.
Q : 실력 차가 클 경우 수십 집 이상으로 상대방을 이길 수 있다. 알파고도 이렇게 할 수 있나.
A : “알파고는 상대방을 이기기 위해 정보를 처리한다. 현재로선 ‘몇 집 차 승리’라는 식의 구체적인 목표를 달성하도록 설계하진 않았다.”
Q : 프로 기사의 수에는 대응해도 아마추어의 ‘꼼수’에는 대응하기 어렵다는 지적도 있다.
A : “공식적으로 공개한 것은 판후이와의 대국뿐이지만 내부적으로는 많은 아마추어와 대국을 치렀다. 실수를 유도하는 수나 엉뚱한 수에도 알파고는 정수로 대응한다.”
2) 심리적 압박감
IBM의 deepblue가 인간 체스 챔피언을 이겼을 때 해당 챔피언은 제 1국에서 deepblue의 자신이 예측할 수 없는 수를 두는 것을 보고 나서 두려움을 가지고 되었고 결국 이후의 경기에서도 자신감을 잃게 되었다고 이후에 말했다.
그런데 결국 그 수는 deepblue의 오류였던 것으로 밝혀졌다. 즉 심리적 요인이 충분히 결과에 영향을 미칠 수 있다는 것이다.
[향후 전망]
Deepblue의 현실
AlphaGo가 다양한 프로그램에 쓰일 것이라고 생각하기는 어렵다. 위에 나온 것처럼 철저하게 바둑을 잘 두도록 설계된 프로그램이기 때문이다. 인간 체스 챔피언을 이긴 deepblue도 지금 있는 곳은 박물관이다.
즉, 상징적인 성과를 보여줄 수는 있지만, 바로 응용 가능한 프로그램은 아니라는 의미다.
Deepmind의 행보
하지만 DeepMind의 행보를 보면, Deep Learning 자체는 계속해서 사용될 것이라는 전망이 보인다.
AlphaGo와 별개로 DQN이라는, 다양한 상황을 학습할 수 있는 범용적인 방법론을 연구하기도 했고, 2월에는 의료와 관련된 솔루션도 제공하겠다고 얘기했다.
즉, Deep Learning 자체는 계속 응용 분야를 넓혀갈 것이다.
AlphaGo는 상징성을 남길 것이다.
DeepMind가 얼마나 잘할지는 두고 보아야 알 것이다.
“Deep learning is killing every problem in AI.” – Nature 지 기사 중에서.
참고할 만한 링크
알파고 홈페이지 : https://deepmind.com/alpha-go.html
알파고가 기보를 구한 곳 : https://www.gokgs.com/
해당 사이트의 인공지능 바둑 프로그램 토너먼트 : https://www.gokgs.com/tournInfo.jsp?id=1005