(드디어 본격적인 알파고 이야기가 나옵니다. 편의상 이 글은 데미스 하사비스의 1인칭 시점으로 작성하겠습니다.)


자 ! 이제 요즘 뉴스를 통해 많이 알려진 알파고에 대해 이야기를 해봐야 할 것 같네요. 딥마인드가 알파고를 만들기 시작한 이유는, 장기적으로 딥러닝과 강화학습을 합친 기술을 만드는 것을 목적으로 하기 때문이고, 이런 측면에서 바둑이야말로 최적의 검증 환경이라고 판단했기 때문입니다.

판 후이 2단과 대국한 알파고
판 후이 2단과 대국한 알파고

1. 왜 바둑인가?

여기는 한국이니까 여기계신 많은 분들이 이미 바둑을 잘 아실 거라고 생각하기에 바둑에 관한 설명은 생략하겠습니다.(흑..바알못이어서 죄송합니다) 여기에 바둑판이 있습니다. 바둑은 엄청난 역사와 전통을 가지고 있고요, 4천만 정도의 사람들이 바둑을 두고, 그 중 2천명 정도만 프로기사 입니다. 아마도 게임중에서는 유래없이 가장 많은 연구가 이루어졌을 것입니다. 멋지지요? 바둑이 얼마나 복잡한 게임인지를 수치적으로 말씀드리자면, 바둑판에서 가능한 배치 방법이 10의 170제곱입니다. 이는 우주 속 원자보다 많은 수이지요. 제가 들은 바로는 바둑으로 둘 수 있는 총 경우의 수는 10의 700제곱입니다. 정말 엄청난 수치지요. 이처럼 바둑은 인류가 만들어낸 게임 중 가장 복잡한 게임이기 때문입니다. 물론 전문적으로 둘 수 있다는 전제하에서요. 또한, 바둑은 전체적인 계획을 세우는 것과 동시에 순간적인 직감(intuition) 또한 아주 중요한 게임이고, 경우에 따라 빠른 계산도 요구하기 때문입니다. 그래서 인공지능에게 바둑은 지난 몇 십년간 정말 커다란 도전이었습니다. 특히 딥블루가 카스파로프를 이기고 나서부터, 많은 인공지능 연구자들은 바둑을 정복하는 것을 다음 목표로 설정하고 많은 노력을 기울였습니다. 


이 게임을 하기 위해서는 직감과 계산이 모두 필요하다는 점에서, 이것을 구현하기 위해서는 패턴 인식 기능과 전략 수립이 결합되어야 합니다. 바로 이것이 딥마인드에게는 아타리 게임 이후의 다음 목표이기도 했지요. 그래서 저희들은 이 문제에 바둑으로써 도전하기로 했습니다. 


2. 바둑은 왜 어려운가?

1) Search space is really huge

2) "Impossible" to write evaluation function to determine who is winning

우선은 이 어마어마한 10에 170제곱이라는 복잡성 때문에, 직접적으로 모든 수를 계산하는 것(Brute Force)은 불가능합니다. 인공지능 바둑 프로그램을 만다는데 가장 어려운 점 두 가지 중 하나는 이 검색할 대상을 실행 가능한 현실적인 규모로 줄여야 한다는 것이고, 두번째는 어느 특정한 상황에서 어느 쪽이 이기고 있는지 형세판단을 하기가 힘들다는 것입니다.


지난 이틀간의 알파고vs이세돌 9단의 경기를 관람하면서, 한국에서 9단 기사들이 해설하는 것을 유심히 경청하였습니다. 특히 어제의 게임(제 2국, 2016년 3월 10일)에서는 게임이 진행되는 대부분의 시간동안 많은 9단 해설자들이 서로 상반되는 형세판단을 하는 것을 보았습니다. (주석 : 대국 중반에 바둑TV만이 알파고의 상당한 우세를 점쳤고, KBS 해설진은 미묘하게 엇갈린다는 평을 냈음. 그 외 다른 방송들은 이세돌이 이미 이겼다는 태도로 일관했으나, 막상 패배의 결과가 나오자 멘붕에 빠졌음.) 저도 그때서야 알게 된 거지만, 심지어 프로9단 해설가의 수준에서도 형세가 비슷하거나 복잡하면 누가 유리한지 쉽게 판단하기 힘들다는 것입니다. 아주 흥미로운 사실은, 딥마인드 팀원들은 아주 불안해하고 있었지만, 알파고는 게임 내내 꽤 자신만만해하고 있었고, 중반에 접어들었을 때 더욱 형세가 좋아지고 있다고 판단했다는 것입니다. (관련기사) 또한 흥미롭게도 이세돌 씨가 게임 후 인터뷰에서 "내내 자신이 뒤처지고 있다고 느꼈고, 따라잡을 수가 없었다"고 하였는데, 하지만 다른 9단 해설자들은 전혀 그렇게 생각하지를 않았습니다. 아주 흥미롭지요. 오직 이세돌 9단의 형세판단만이 실제와 같았다는 점에서, 그의 실력을 느낄 수 있었습니다.

(관련기사 : "오늘은 알파고의 완승이었다. 초반부터 한순간도 앞선 적이 없었다. 내용상으로 보면 정말 완패였다." -이세돌 9단)


아시다시피 저는 체스관련 경력이 있습니다. 체스와 바둑의 복잡성을 비교하여 설명해드리겠습니다. 체스에서는 평균적으로 20개 정도의 움직임이 가능합니다. 이를 분기계수(branching factor)라고 합니다. 하지만 바둑에서는 상대적으로 각 상황에서 평균적으로 200개 정도의 움직임이 가능합니다. 그래서 분기계수가 열배나 더 큽니다.

체스와 바둑의 경우의 수 탐색크기 비교
체스와 바둑의 경우의 수 탐색크기 비교
체스와 바둑의 경우의 수 탐색크기 비교
체스와 바둑의 경우의 수 탐색크기 비교

그래서 바둑은 소요시간이 아주 깁니다. 그렇기 때문에 탐색트리의 복잡성이 굉장히 크죠. 


뿐만 아니라, 바둑을 더 어렵게 만드는 또 하나의 이유는 계산 대 직감에 관한 문제입니다.(intuition versus calculation) 저도 바둑을 둡니다. 아주 잘하는 것은 아니지만, 바둑의 묘미를 이해할 정도는 됩니다. 바둑은 주로 직감(Intuition)에 많이 좌우되는 게임입니다. 만약 아주 잘하는 프로기사에게 "왜 그렇게 두었습니까?"라고 물어보면, 그들의 대답은 아마도 "그냥 그것이 옳게 느껴졌다'일 것입니다. 그들의 직감과 무의식이 그 수가 옳다고 판단한 것입니다. 그것은 그들 평생의 배움과 경험을 바탕으로 나온 것입니다. 당연히 바둑에서도 어느정도의 계산법이 필요합니다. 하지만 고수와 하수를 가르는 진정한 차이는 '직감'을 이용하는 능력입니다. 고수들은 바둑경기를 할 때 머리속으로 모든 경우의 수에 대한 확률 계산을 통해서 판단을 내리며 게임을 진행하지 않습니다. 체스 선수도 마찬가지겠지만, 체스에서 왜 그런 수를 두었는지에 대한 이유와 계산법을 말해줄 수 있는 것과, 바둑에서의 이유는 차원이 다른 문제입니다. 시합이 시작되기전, 이세돌씨와 저녁을 함께 먹으며 바둑과 바둑 실력에 대해서 이야기를 나눌 때 이세돌씨의 직감에 관한 말씀에서 제 생각을 확신할 수 있었고, 그의 직관능력이 얼마나 대단한지를 알 수 있었습니다. 아마 세계에서 최고일 것입니다. 그도 동의한 것이, 바둑에서는 너무나도 많은 경우의 수 때문에, 최고의 기사들도 직감에 의존을 해야 한다는 것입니다. 너무 많은 다른 가능성을 가지고 있기 때문입니다.


형세판단 기능을 만드는 것이 힘든 또 다른 이유로, 바둑에는 명확한 점수체계 개념이 없다는 것입니다. 체스에서는 퀸이 9점의 가치를 가지고 있고, 루크는 5점, 나이트는 3점 등의 점수체계가 있기 때문에 자신의 말들의 점수를 합하면 어느정도 이기고 있는지, 혹은 불리한지의 형세가 판단이 됩니다. 하지만 바둑에서는 이것이 불가능합니다. 모든 돌이 동일한 중요성을 가지고 있고, 게임의 중반까지는 어느 구역이 누구의 땅이 될지를 알 수 없기 때문입니다. 그럼 어떻게 해야 이 어려움 문제들을 극복할 수 있을까요?


3. 심층 신경망(Deep Neural Network)과 딥러닝(Deep Learning)

Neural network training pipeline and architecture
Neural network training pipeline and architecture

 저희는 두가지의 심층신경망이라는 기술을 사용했습니다. 먼저 인터넷에서 다운로드 받은 10만개 정도의 상급 아마추어 수준의 기보를 넣었습니다. 그리고 이를 이용하여 정책 네트워크(Policy Network)라고 이름 지은 첫번째 신경망을 지도학습(Supervise Learning) 방법으로 훈련시켰습니다. 우리가 학습시킨 것은 인간 바둑기사가 둔 기보의 자리를 바탕으로 정책 네트워크로 하여금 다음 수를 예상하도록 만들었습니다. 이 예측 실력이 어느정도 좋아졌을 때, 이 정책 네트워크가 스스로 자신과 수천, 수백만번 게임을 하도록 만들었습니다. 이렇게 인간 아마추어 바둑기사를 단순히 흉내내는 것에 그친 것이 아니라, 강화학습을 이용해서 아마추어 수준의 바둑인보다 더 잘하도록 만드는게 목표였습니다. 그래서 우리는 정책 네트워크를 자신과 시합을 할 때 그냥 따라만 하는 것이 아니라, 승률을 최대한으로 더 끌어올리도록 최적화 시켰습니다. 그리고 정책망 네트워크에 대한 강화학습을 통한 이런식의 개선이 80%의 승률을 가진 또 다른 정책 네트워크를 탄생시켰습니다. 이 시점에서 우리는 정책 네트워크를 더 이상 학습시키지 않고, 3천만 번의 게임을 더 하도록 훈련시켰습니다. 그리고 이것이 'Go Data set'이라고 부르는 최종적인 데이터 세트가 됩니다. 한 게임에 한 수인 3천만 개의 수로 구성된 데이터 세트입니다. 당연히 지금의 데이터베이스에는 세계에서 바둑이 두어진 횟수보다 더 많은 게임 정보가 들어있고, 이것으로 형세판단 기능 구현을 시도할 수 있었습니다. 이미 가지고 있는 3천만 개의 경우의 수에서, 각 수의 게임 결과를 이미 알고 있었습니다. 우리는 이것을 위에 핑크색으로 표기된 새롭게 만들어진 신경망, 즉 가치 네트워크(Value Network)의 훈련용으로 만들고 연습을 시켰습니다. 어떤 자리에 놓았을 때 궁극적으로 누가 이기게 된다는 형세를 판단하기 위해서요. 그렇게 많은 학습과정을 통해 드디어 두 개의 신경망이 만들어 졌습니다.

Policy network(Probability Distribution over moves) : (나무를 보며) 지금 어디에 둘지 판단

정책 네트워크는 바둑판 위의 돌들의 위치정보를 입력하면, 그 상황에서 가장 가능성이 높은 착지점들을 예측하는 확률을 계산합니다. 여기 화면 위쪽에 보이는 초록색 기둥들은 알파고가 가능성이 높은 착지점들을 표기해 놓은 것들입니다. 기둥들이 높을수록 개연성도 높은 것이죠.


Value Network(Real numbers: 0 White - 1 Black) : (숲을 보며) 전체적으로 이기고있는지 판단

두번째 네트워크인 가치 네트워크 역시 바둑판 위에 돌들의 위치를 입력으로 받아들이면, 0부터 1사이의 실수를 결과값으로 보여줍니니다. 0은 백돌이 이기고 있음을 말하고, 1은 흑돌이 이기고 있고, 0.5는 동률이라는 뜻입니다. 바로 이것이 알파고의 대단한 능력의 핵심입니다!


4. MCTS와 Rollouts

여기에 있는 이 두 개의 신경망을 몬테카를로 트리 탐색법과 롤아웃 기법으로 통합하고 최종 알파고 시스템을 만듭니다.

Monte Carlo tree search in AlphaGo
Monte Carlo tree search in AlphaGo

이 시스템의 원리를 아주 간단하게 설명할 수 있는 도표입니다. 자! 알파고가 착수점을 찾고 있다고 가정해 봅시다. 맨 위 가장 작은 그림이 현재 바둑판의 지역 상태라고 가정하고, 대략 절반정도 탐색을 끝냈다고 볼 때 여기 보이시는 Q-값이 현 상황에서 추정된 승점입니다. 그리고 이길 확률이 가장 높은, 즉 Q-값이 가장 높은 방향으로 가겠지요. 그리고 보시는 바와 같이 알파고는 이 상황에서 아직까지는 고려해보지 않는 방향으로 가는 것을 볼 수 있습니다. 아래쪽에 나와 있듯이 왼쪽으로 향한 검은색의 화살표를 보실 수 있습니다. 이제 새로운 방향의 트리를 만들어야 해요. 그래서 정책 네트워크를 불러내서 트리를 더 크게 만들도록 하지요. 이전에 보여드린 초록색 네트워크 처럼요. 하지만 그렇다고해서 저 상황에서 가능한 모든 경우의 수(착수점)을 고려하지는 않습니다. 그냥 정책 네트워크가 지정하는 가장 확률이 높은 서너개의 착수점만 고려하지요. 이렇게 하면 탐색 트리의 크기를 현저하게 줄일 수가 있지요.


탐색 트리의 크기가 저 상황에서 더 커지고 그 후에 두 번째 신경망인 가치 네트워크를 불러내서 현재 트리에서 새롭게 형세를 판단합니다. 여기에서 더 고전적인 방법의 두 번째 형세판단 방법인 롤아웃 기법을 접목해서 게임을 끝까지 두었을 때 양측에 몇 번의 승과 패가 있었는지의 통계를 내고 우선도가 낮은 경우를 롤아웃 합니다. 그러니까 착수점을 평가하는 두 개의 다른 방법을 쓰는 것입니다. 가치 네트워크는 착수점을 즉각적으로 평가하고, 롤아웃 기법은 통계를 이용하는 평가를 합니다. 그리고 우리가 알아낸 바에 의하면 알파고는 그 두개의 평가법을 복합적으로 사용할 때 더 강합니다. 그 두 개의 평가법이 병합되면서 최종적 평가를 내리는 것입니다. 이런 과정이 끝나면 Q-값을 되짚어 돌아가 트리의 현 상태로 갑니다. 만약에 알파고가 시간이 부족해서 착수를 두어야 할 때 알파고는 가장 가능성이 높은 Q값을 선정해 착수를 하게 됩니다.


이번에는 도표를 통해서 바둑 조합의 어려움을 어떻게 해결하는지 보겠습니다. 

이 그림이 바둑에서 착수점에 대한 탐색트리라고 가정했을 때, 정말 방대한 양의 트리라는 것을 알 수 있습니다. 여기에서 정책 네트워크가 하는 일은, 폭을 잘라내서 줄이는 역할입니다. 그러니까 모든 200개 정도의 착수점을 보는 것이 아니라 가능성이 가장 높은 서너개의 착수점만 보게 되는 것입니다. 그리고 가치 네트워크의 일은 깊이를 줄이는 일이라고 보시면됩니다. 그러니까 게임의 맨 마지막까지 보면서 누가 이기고 지는가를 몇백만 번 하는 것이 아니라, 어느 선에서 길이를 줄이고 가치 네트워크를 불러내서 알파고가 얼마나 잘하고 있는지 형세를 판단해 줄 수 있는 겁니다. 이렇게 보시다시피 이 두개의 신경망을 결합해 탐색의 범위를 처리 가능한 범위까지 줄인 것입니다.


5. 알파고의 기량

자, 그럼 우리는 알파고를 만들어 낸 후 어떻게 평가를 했을까요? 지난 여름, 아니 봄에 다른 최고의 기존 프로그램들과 비교를 하기 시작하였습니다. 가장 훌륭한 상업용 프로그램들은 크레이지스톤과 젠이라는 것들인데, 이 두 프로그램은 모두 아마추어 5단에서 6단의 실력이었습니다. 우리가 이 프로그램들을 상대로 알파고와 시합을 시켰을 때 알파고가 495판 중에서 494판을 이겼습니다. 뿐만 아니라 크레이지 스톤과 젠에게 4점을 접어주고 바둑을 두어도 75%의 승률을 보였습니다. 꽤 높은 확률입니다.

알파고는 분산 컴퓨팅 환경에서 동작할 때 훨씬 강해집니다. 알파고와 그 다음으로 잘 두는 상업 바둑 프로그램과의 실력차이는 1,000 Elo 포인트를 상회합니다. 사실 이것은 지난 10월 수치이니 현재는 더 큰 차이가 있겠지요. 여러분들께서 이미 알고 계시듯이 모든 상업 바둑프로그램에게 승리를 했으니 이젠 진짜 프로기사를 대상으로 시험해볼 차례였습니다. 그래서 저희는 정말 훌륭한 상대이자, 시합 이후에 좋은 친구가 된 판후이(Fan Hui) 씨를 모셨습니다.

판 후이(Fan Hui)
판 후이(Fan Hui)

판후이 씨는 유럽 3년 연속 챔피언이시고 바둑 저서도 있으시며 프랑스 대표팀 코치로 활동하고 계십니다. 그는 중국에서 자라셨고 그곳에서 프로기사 자격을 취득하셔서 현재 프로 2단이십니다. 지난해 10월에 저희는 판후이 씨와 시합을 가졌고 놀랍게도 결과는 5대 0이었습니다. 이로써 알파고는 처음으로 동등한 토너먼트 형식의 게임에서 인간 프로기사를 이긴 프로그램이 되었습니다. 그리고 이것은 기계학습 분야, 인공지능 분야, 그리고 바둑분야에 있어서 아주 획기적인 사건이었습니다. 많은 바둑 인공지능 전문가들이 예상한 것보다 적어도 10년 빨리 벌어진 일이었습니다. 이 내용은 몇 달 전 네이처 저널의 표지 논문으로 수록되었으며 이것에 대해 더 많은 정보를 원하시는 분들은 이 저널에서 자세한 정보를 얻으실 수 있으십니다. 학술계에 적지 않은 파장을 일으킨 내용입니다. 자 이제 저희가 이곳에 왔고요, 이제 최후의 도전입니다. 제 생각에 이세돌씨와 경합을 벌이는 이 다섯 번의 시합은 현재 2판 앞서 있기는 하지만 한판 한판이 접전이고, 어떤 일이 벌어질지는 아무도 모릅니다. 경합 전 우리의 예상은 알파고가 유리할 것이라고 생각했습니다. 왜나하면 저희 자체 테스트를 진행할 때 모든 self-테스트를 했습니다. 그러니까 알파고는 게임 전에 수백 수천 번의 게임을 다른 알파고와 해본 것입니다. 그렇기 때문에 지난 10월의 알파고 실력을 아는 저희는, 새로운 알파고가 얼마나 강한지를 추정할 수 있었습니다. 결론적으로는 판후이 씨의 실력에서 얼마나 더 올라갔는지를 추정할 수 있는 것입니다. 우리는 이세돌 씨가 판후이 씨에 비해 얼마나 상위하는 실력을 가지고 계신지 알고, 현재의 알파고가 지난 10월의 알파고보다 얼마나 상위하는 실력을 가지고 있는지 알기 때문입니다. 

그렇기 때문에 그 기간 동안의 실력 변화에는 확신을 가지고 있지만 결과에 확신을 가질 수 없는 이유는 이것은 오버피팅(특정한 측면에 과도하게 치중하여 학습되는 문제)의 결과를 가지고 올 수 있다는 것입니다. 왜냐하면 알파고는 여러가지 버전이 있고, 그 다양성을 수용하려고 하고 있지만 결국은 그 다양성이 모두 같은 기술에 기반을 두고 있다는 겁니다. 물론 모두 다른 하이퍼파라미터 세팅을 가지고 있지만요. 우리는 새 버전의 알파고에게 여러 가지 다른 도전을 제공하려고 노력하고 있습니다. 그러니까 경기를 실제로 할 때까지는 어떻게 될지 확신할 수 없습니다. 예를 들어 알파고가 자신과 게임을 할 때 어떤 위치에는 습관적으로 착점을 잘 하지 않을수도 있고요, 그리고 새 버전이 구 버전을 이길수는 있겠지만, 그것이 꼭 어떠한 상황을 경험하는 것은 아니거든요. 우리는 그런 방식으로 인한 문제점이 전혀 없을거라고 확신하지 않습니다. 그렇기 때문에 이세돌 씨와 같이 창의적인 싸움기술을 가진 유명한 프로기사와 시합을 시키고 싶은 것입니다. 만약 누군가가 알파고의 약점을 찾아낼 수 있다면 그게 바로 이세돌 씨라고 생각합니다. 그리고 우리는 우리가 찾지 못한 큰 약점이 있다면 그것을 알고 싶습니다. 이제 더이상 우리의 능력으로는 알파고를 검증할 수 가 없습니다. 알파고가 우리보다 더 강한 기력을 가진지 벌써 일년도 넘었거든요. 

(관련기사 : 누리꾼들은 무표정한 얼굴로 돌을 놓고 있는 아자 황의 사진을 두고 우스개 소리로 “인간 최초의 ‘친알파’”라고 지칭하는가 하면 “바둑 아마 6단에 박사인데 알파고 돌 셔틀하고 있다”라고 표현했다.)


사실 저희 팀에도 실력있는 바둑기사가 한 명 있습니다. 아자 황이라고 아마추어 6단 정도의 실력입니다. 하지만 알파고가 그를 이기기 시작한지 1년도 넘었습니다. 그러니까 우리는 이제 알파고의 실제 실력을 검증할 수 있는 방법이 없습니다. 저도 많은 밤을 지새우며 알파고가 자신과 한 게임을 보는데요, 정말 멋지고 훌륭한 경기입니다. 하지만 저는 프로기사가 아니라서 뭐라고 단정지어 말씀드리지는 못하겠네요. 이세돌 씨와 알게 되고 시합을 할 수 있다는 것이 제가 큰 특혜를 받은 것 같고 영광입니다. 남은 세 게임에서 이세돌의 행운을 빕니다.


(이미 2:0으로 이기고 있는 상황에서, 이세돌씨의 행운을 빈다던 하사비스의 말에 청중들은 웃음섞인 박수를 보냈다. 하사비스는 진심이에요!라고 대답했다.)


(알파고는 그 다음경기에서도 승리하여 3:0으로 앞서갔지만, 제4국에서 이세돌이 승리함으로써 완승을 거두지는 못하였다. 최종적으로 경기는 4:1로 마무리되었다.)


참고문헌 : 

Mastering the game of Go with deep neural networks and tree search(Nature)

인터넷신문중 가장 정확하게 알파고의 작동원리와 논문내용을 설명해준 기사입니다.
http://news.chosun.com/site/data/html_dir/2016/04/01/2016040101422.html

CPUU님의 창작활동을 응원하고 싶으세요?