Quantcast
Channel: hanmin-dev
Viewing all articles
Browse latest Browse all 31

AlphaGo (알파고)의 원리

0
0

2×2 바둑의 신


일반적으로, 바둑은 가로 19줄, 세로 19줄로 구성된 19×19 바둑판 위에서 이루어진다. 

물론, 초보자들이 연습용으로 가로·세로 13줄이나 9줄로 구성된 바둑판 위에서 바둑을 두기도 한다. 

이를 각각 13×13, 9×9 바둑 이라 하겠다. 


나는 2×2 바둑의 신이다.[각주:1]

백을 잡으면 무조건 이기고, 흑을 잡았을 때에도 최선의 수를 둘 수 있다. 

전략은 간단하다. 

백을 잡았을 때에는 선(先)인 흑이 어디에 두던지 그 대각선에 두면 된다. 

그 후의 수순은, 흑이 어떻게 두던 간에 백이 이길 수 밖에 없다. 

아래 그림은 그 한 예를 보인다. 

흑이 좌상(左上)에 두면, 백은 우하(右下)에 두어 백이 무조건 이기게 된다. 



흑을 잡았을 때의 전략은, 일단 첫 수는 아무 곳에나 두고, 만약 백이 (위에서 설명한 필승 전략대로) 그 대각선에 둔다면 불계패를 선언하고 진다. 

만약 백이 둘 째 수로 대각선이 아닌 곳에 둔다면, 흑은 그 백돌을 따내는 곳에 두어 이기게 된다. 

아래 그림은 그 한 예를 보인다. 

흑이 선으로 좌상에 둔 경우를 나타낸 것이다.




이 장을 ‘2×2 바둑의 신’이라고 거창하게 시작했지만, 사실, 앞서 설명한 백과 흑의 전략들은, 2×2 바둑을 몇 번 둬보면 쉽게 알 수 있는 것들이다. 

그렇다면, 컴퓨터는 2×2 바둑을 어떻게 둘까? 

여러 가지 방법이 있을 수 있겠지만, 가장 단순한 방법은 모든 경우의 수를 두 둬보는 것일 것이다. 

‘모든 경우의 수를 다 둬본다’라고 하는 것을 알기 쉽게 설명하자면, 아래 그림을 그려보는 것이다.



가만히 보면, (당연한 이야기지만) 2×2 바둑은 참 단순하다. 

게임의 최종 형태가 아래의 6가지 밖에 없다. 

그래서 ‘모든 경우의 수를 다 둬본다’라는 것이 가능한 것이다. 



그러나 19×19 바둑에서는 가능한 최종 형태가 약 2×10170개로 알려져 있다 [1]. 

이 숫자는, 우주에 존재하는 원자의 숫자가 약 1080개로 알려져 있음을 감안하면 [2], 그보다 훨씬 큰, 정말 어마어마한 숫자가 아닐 수 없다. 

2 GHz (2×109 Hz)로 동작하는 컴퓨터가 한 번에 한 대국을 둘 수 있다고 가정해도, 약 (2×10170) ÷ (2×109) = 10161초, 즉 10153년도 더 걸린다. 

쉬운 말로 이야기하자면, 그냥, 불가능하다. 

그래서 컴퓨터도 19×19 바둑을 두려면 전략이 필요하다. 


19×19 바둑에서 컴퓨터의 전략


그렇다면 컴퓨터는 어떻게 해야 할까? 

여기서는 AlphaGo [3]의 전략을 알기 쉽게[각주:2]소개하겠다. 

AlphaGo는 일단, 기보를 모은다. 

아주 많이 모은다. 

논문 [3]에서, 저자들은 3천만 기보를 모았다고 한다.[각주:3]

그 기보들로부터 무엇을 알 수 있냐 하면, 다음 그림과 같이, 바둑돌들이 놓인 어떤 상태 (앞으로 이를 ‘바둑 상태’라 하겠다)가 있을 때, 그 다음 수가 어디에 놓였었는지를 세어서, 어떤 수들이 일반적인 수 (혹은 좋은 수)인지를 알아낸다. 



모은 기보 상에서, 어떤 바둑 상태에서 어떤 특정한 위치에 돌이 많이 놓였었다면 그 위치는 좋은 위치일 가능성이 높다고 보는 것이다. 

이러한 통계적인 방법을 통해, 앞 장에서와 같이 모든 경우의 수를 둬보는 것이 아니라, 일반적으로 많이 두어지는 수들로 진행되는 게임들을 중점적으로 둬볼 수 있게 된다. 

즉, AlphaGo는, “현재 바둑 상태가 있으면, 그 다음 수를 해보고, 그 수를 둔 후의 바둑 상태에서 같은 방법으로 그 다음 수를 해보고..” 하는 식으로 끝까지 둬볼 수 있는 것이다. 


여기서, 많은 분들이 이렇게 질문하실 것 같다. 

“그렇다면 만약, 그 3천만 기보에 존재하지 않는 상태에서는 (즉, 일반적이지 않은 상태에서는) 어떻게 다음 수를 예측하는가?” 

이 때 등장하는 것이 바로 심층 합성곱 신경망 (deep convolutional neural network, deep CNN)이다. 

그 기본 아이디어는 간단하다. 

“생물의 신경망을 흉내 내어 동작하게 하는 것”이다. 

더 깊게 설명하자면 수학이 조금 복잡해지기 때문에, 여기서는 정말 간단하게만 설명하겠다. 

만약 사람에게, 다음 두 데이터를 주었다고 해보자. 

  • 1 → 10
  • 2 → 50

그렇다면 왼쪽 값이 1.5 일 때는 오른 쪽 값이 무엇일까? 

혹은, 왼쪽 값이 3일 때는 오른 쪽 값이 무엇일까? 

정답이 없는 문제지만, 대략 그 경향성을 보면, (정말 대략) 1.5 일 때는 30, 3일 때는 90 이라고 할 수 있을 것이다. 

심층 합성곱 신경망은 이런 것을 할 수 있다. 

즉, 훈련 데이터에 없는 문제에 대해서도 대략이나마 답을 낼 수 있는 것이다. 

이게 정말 중요한데, 옛날 바둑 프로그램들은 이것을 잘 못하기 때문에 “정석에서 벗어난 곳에 돌을 두면, 정말 엉뚱한 수를 내어놓는다”라는 평이 나왔던 것이다. 

(심층 합성곱 신경망의 상위 개념인, 더 일반적인 의미에서의) 신경망 기술은 문자 인식, 그림 인식, 음성 인식 같은 분야에서 이런 것들에 탁월하다고 이미 알려져 있고, AlphaGo는 이걸 바둑에 맞게 수정한 것이다.


여기서 또 하나! 

“그렇다면 AlphaGo는 일반적인 수밖에 두지 못하지 않느냐?” 하는 질문이 있을 수 있다. 

왜냐하면 결국엔 AlphaGo가 모은 기보 상에서 두어진 수들로만 게임을 해보는 것처럼 보이기 때문이다. 

답은 “아니다”이다. 

물론 일반적인 수들로 이루어지는 게임들을 중점적으로 해보겠지만, 가끔은 무작위 수를 둬봐서 그것으로 파생되는 게임들도 해본다. 

만약 그 게임의 결과가 좋다면 그 수를 채택하게 되는 것이다. 

(이러한 과정을 “몬테카를로 방법”이라고 한다.) 

언제 일반적인 수를 하느냐, 무작위 수를 하느냐 하는 것은 또 이걸 계산하는 점수 체계가 있다. 

이미 너무 복잡한 곳까지 왔으니까 이에 대한 설명은 여기서 끊겠다. 

이제까지 AlphaGo가 주어진 바둑 상태에서 어떻게 다음 수를 계산하는지를 설명하였다. 

이렇게 다음 수를 계산하는 것을 ‘정책’이라고 부른다. 

AlphaGo가 이용하는 전략은 ‘정책’과 ‘측정’이 있다. 

이제 그 ‘측정’에 대해 설명하겠다.


‘측정’은 어떤 바둑 상태가 있을 때, 더 이상 바둑을 둬보지 않은 상태에서 ‘이 판은 흑이 이겼다’ 혹은 ‘이 판은 백이 이겼다’를 판단하는 것을 가리킨다. 

아까 모은 3천만 기보를 보면, “어떤 바둑 상태가 있으면, 결국엔 흑 (혹은 백)이 이기더라”라는 데이터를 모을 수 있다. 

(물론, 하나의 바둑 상태에 대해서 그 다음 수순들에 따라서 백이 이길 수도 있고 흑이 이길 수도 있지만, 여기서는 통계적으로 이야기하는 것이다. 

즉, “흑이 더 많이 이기더라”, “백이 더 많이 이기더라”를 보는 것이다.) 

‘측정’을 ‘정책’과 함께 이용하면, ‘정책’만으로 할 때 보다, 주어진 시간 안에 더 많은 게임들을 해볼 수 있음을 쉽게 알 수 있다. 


여기서도 앞선 ‘정책’ 때와 같은 질문이 들 수 있다. 

“그 3천만 기보에 없는 바둑 상태는 어떻게 측정할 것인가?” 

답은, ‘정책’ 때와 같다. 

심층 합성곱 신경망을 이용한다. 

즉, ‘정책’을 위한 심층 합성곱 신경망과 ‘측정’을 위한 심층 합성곱 신경망이 따로 존재한다.


자! 이제 AlphaGo가 이세돌 프로 9단과 바둑을 두고 있는 상황을 상상해보자. 

몇 수 가 진행되어 AlphaGo가 돌을 놓을 차례가 돌아왔다고 하자. 

그리고 1분의 시간이 주어졌다면, AlphGo는 그 1분동안 앞서 설명한 바와 같이, 현재의 바둑 상태에서 일반적으로 많이 두어지는 수들로 진행되는 게임들을 몇 천 판 해본다. 

그리고 그 게임들 중에서 자신에게 가장 유리한 게임 쪽으로 다음 수를 둔다.


그 외의 재미있는 사실들


이세돌 프로 9단과 AlphaGo의 5번기는 상금이 100만 달러이다. 

한화로 12억 정도 되는 돈인데, 이세돌 9단의 2015년 총 상금 액수가 3억 1700여 만원임을 감안하면 (상금 랭킹 3위) 정말 큰 돈이다. 

(참고로 상금 랭킹 1위인 박정환 9단의 2015년 총 상금은 8억 1300여 만원) 

구글은 이기면 100만 달러를 기부하겠다고 하였다. 


5번기이지만 무조건 다섯 판을 다 한다. 

즉, 예를 들어, 첫 세 경기에서 3-0이 나와도 경기를 더 한다. 


AlphaGo가 이겼다고 하는 판 후이 프로 2단은(어느 정도 공신력이 있는지는 모르겠지만) http://www.goratings.org/ 에 의하면 이 글을 쓰는 현재, 세계 랭킹 371위이다. 

반면 이세돌 프로 9단은 4위. 

논문 [3]에서 저자들은, AlphaGo가 프로 5단쯤 될 거라고 자평 하였으나, 프로 기사들은 아마 최강 정도 되는 것 같다고 평함. 


판 후이 프로 2단은 중국 출신 바둑기사로, 15년 전쯤 프랑스로 건너가 지금까지 활동 중. 

2013, 2014, 2015년 유럽 바둑 챔피언. 


판 후이 프로 2단이 AlphaGo에게 5-0으로 졌다고 발표 되었고, 실제로 그랬지만, 사실, 비공식 경기까지 하면 그도 AlphaGo에게 열 판 중 두 판을 이겼다. 

아래 표 (논문 [3])를 보면, “판 후이 대 AlphaGo”는 5일간 펼쳐졌고, 하루에 공식 경기 한 판, 비공식 경기 한 판을 뒀는데, 판 후이 프로 2단는 두 번의 비공식 경기에서 불계로 이겼다. 

이 비공식 두 판에서 판 후의 프로 2단은, 한 번은 흑, 다른 한 번은 백을 잡았다. 



판 후이 대 AlphaGo의 경기는 중국 규칙으로 진행되었다. 


AlphaGo의 기풍은 “균형있는 무난한 기풍”이라 한다. 
아마도, 몇 천만 기보를 학습하다 보면 가장 승률이 좋은, 다시 말해 가장 무난한 기풍을 띄게 되었으리라 생각할 수 있다. 
  • 판 후이 프로 2단 - 첫 판을 지고 나서 느낀 점은, AlphaGo는 싸움을 싫어한다고 느꼈고, 그 다음 대국부터는 계속 공격적으로 뒀다.
  • 커제 프로 9단 - (알파고는) 버릴 곳은 버리고 버릴 곳은 버리고 물러날 곳은 물러나는, 아주 균형적인 기풍이었다. 이전에 일본 인공지능 바둑프로그램 젠(zen)은 간혹 난데없이 이상한 수를 두기도 했는데 알파고한테서는 전혀 그런 면을 찾아볼 수가 없었다. 어디가 중요한지 알고 있었고 흐름도 끊기지 않았다. 정말 대단하다.
  • Toby Manning (판 후이 대 AlphaGo 경기의 심판) – AlphaGo는 공격적이지 않음 (싸움을 잘 걸거나 하지 않음).

AlphaGo는 선수의 개념이 없는 것 같다는 평이 있다. 


참고 문헌


[1]J. Tromp and G. Farnebäck, "Combinatorics of go," in Computers and Games, Springer, 2006, pp. 84-99.

[2]Wikipedia, https://en.wikipedia.org/wiki/Observable_universe#Matter_content

[3]D. Silver, A. Huang, C. J. Maddison, A. Guez, L. Sifre, G. van den Driessche, et al., "Mastering the game of Go with deep neural networks and tree search,"Nature, vol. 529, no. 7587, pp. 484-489, 2016.

  1. 흑에게 덤을 주지 않는 정선 바둑을 가정하겠다. [본문으로]
  2. 다른 말로 이야기하자면, ‘약간의 오류를 감안하고서라도 이해하기 쉽도록’. [본문으로]
  3. 이 기보들은 KGS Go Server (https://www.gokgs.com/)라는, 인터넷 대국 사이트에서 가져왔다고 한다. 재미있는 건, 이 사이트는 아무나 이용할 수 있는 사이트라는 것이다. 즉, AlphaGo는 프로들의 고단수 대국들로만 훈련한 것이 아니라, 아마추어들의 대국들로도 훈련한 셈이다. [본문으로]

Viewing all articles
Browse latest Browse all 31

Latest Images

Trending Articles