알파고가 바둑을 두는 방법


바둑 인공지능은 예전부터 연구되어 온 분야입니다. 하지만 바둑의 복잡함 때문에 프로선수보다 강한 인공지능을 만드는 것은 오랫동안 난제였습니다. 

구글은 2016년에 알파고를 발표했고, 이세돌 선수와의 경기를 생중계하였습니다. 결과는 4대1로 알파고가 승리했고, 세상은 큰 충격을 받았습니다. 

지금은 알파고가 사람보다 강력하다는 것이 기정사실로 여겨지며, 프로 선수들도 알파고를 보고 공부를 하고 있습니다. 
알파고는 어떻게 이정도로 강력해질 수 있었을까요

고전 보드게임 바둑

바둑 게임은 더 넓은 공간을 차지하기 위해서 매 순간 최고의 자리에 돌을 두어야 하는 게임입니다. 돌을 한번 둘 때마다 몇 분 동안 깊게 생각해야 합니다. 

어떻게 해야 가장 좋은 수를 결정할 수 있을까요? 당장 둘 수 있는 곳은 너무나도 많습니다. 수백개의 빈자리 중 한 곳을 선택하기까지 어떤 생각들을 하게 될까요?

이창호 선수의 인터뷰를 보면 바둑을 할 때 어떤 생각들을 하는지 알아볼 수 있습니다.

이창호 선수 인터뷰 

질문 : 이것은 바둑 두는 모든 팬들의 궁금사항인데, 수읽기를 할 때 보통 몇 수 앞까지 내다보나요? 

이창호 선수 : ”뻔한 외길 장면이라면, 프로라면 누구나 100여 수는 볼 것입니다. 저도 물론 100수 정도는 내다봅니다만 모든 경우에 이런 수읽기를 하는 것은 아닙니다. 어떤 때는 한 수 앞을 못보는 수도 있어 바둑을 망치기도 하지요. 이건 비밀인데, 제가 수읽기하는 방법은, 보통 열 가지 정도의 경우의 수를 상정하고 하나 하나씩 수읽기를 해나갑니다. 20~30수 정도 읽다가 모양이 아니다 싶으면 버리고 다른 수에 대해 읽기 시작합니다. 그러다보면 한두 가지로 좁혀지게 되는데 이때는 100수 이상 읽습니다. 그런데 정작 어려운 것은 이렇게 수를 읽는 것보다는 그 한두 가지의 수를 놓고 어떤 것을 선택해야 할 것인지에 대한 확신이 서지 않을 때입니다. 이런 순간은 참으로 고통스럽죠.”


알파고의 구성과 아이디어

이창호 선수가 위와 같은 과정을 거치는 이유는, 다름아닌 가장 좋은 수를 두기 위함입니다. 그런데 가장 좋은 수란 무엇인가 생각해보면, 결국 게임의 마지막에 승리하는 수입니다. 

게임 마지막에 승리를 가져다주는 수를 알아내려면 어떻게 해야할까요? 최대한 경기가 끝날 때 까지 경기를 그려봐야 할 것입니다. 하지만 시간이 정해져 있기에 이창호 선수는 몇가지 전략을 함께 사용하면서 여러 가지 경우를 생각합니다.

먼저 이창호 선수는 빠르게 열가지 정도 수를 정해두고, 각각에 대해서 20~30수를 가 본다고 합니다. 이렇게 접근하는 방법은 아주 합리적인 방법입니다.

만약 열가지 정도 수를 정해두지 않고 둘 수 있는 곳 모두에 대해서 20~30수를 가보면 시간이 엄청나게 많이 걸립니다. 경기 초반에는 300곳이 넘게 비어있습니다. 그렇기에 경험으로부터 괜찮아보이는 수 열가지로 좁히고 시작하는 것입니다.

알파고에서는 정책 네트워크가 동일한 역할을 해줍니다. 정책 네트워크는 좋아보이는 수를 빠르게 고르는 능력을 담당합니다. 지금 바둑판 상황에서 모양을 보고 직관적으로 둘만한 곳을 빠르게 점찍는 것입니다.

그리고 20~30수를 가본다고 했는데, 100수가 아니라 20~30수만 가보는 이유 또한 시간 때문입니다. 열가지 경우에 대해서 100수씩 가본다면 시간이 너무 많이 걸릴 것이기 때문입니다. 20~30수만 가 보고 돌들의 모양을 보고 승패를 가늠하여 좋은 수일지 아닐지를 평가하는 것입니다.

여기서 알파고의 가치 네트워크가 해당 역할을 담당합니다. 가치 네트워크는 돌들의 모양을 보고 좋은지 나쁜지 판단을 가능하게 해 줍니다.

이창호 선수는 이렇게 생각하는 시간을 줄이기 위한 전략을 사용하면서 여러가지 경우의 수에 대해서 탐색합니다. 그리고 좋지 않다고 생각되는 수는 빨리 머릿속에서 제외하고, 다른 수를 더 깊게 100수 넘게 생각해보면서 최종적으로 제일 좋은 수가 뭔지 비교하는 과정을 거칩니다. 

알파고에서 이러한 역할은 몬테 카를로 트리 서치(MCTS)가 담당합니다. MCTS는 정책 네트워크와 가치 네트워크의 도움을 받으면서 여러 가짓수를 탐색하고 어떤 수가 좋을지 비교하여 최종 수를 결정합니다.

정책 네트워크

정책 네트워크는 바둑판 모양을 입력으로 넣으면 두어볼만한 수를 추천해 주는 뉴럴 네트워크입니다.

(바둑판을 입력으로 넣으면 어디가 좋을지 확률을 알려준다)

정책 네트워크를 만들기 위해 프로들의 수많은 경기 내용이 담겨있는 기보를 가져와서 '지금 바둑판 상황' 에 '다음 수로 어디를 두었는지' 를 뉴럴 네트워크에게 기억하게 합니다. 이렇게 하면 지금 바둑판 상황에는 어떤 수가 몇%확률로 선택될지 뉴럴 네트워크가 기억하게 됩니다. 뉴럴 네트워크에게 물어보면 위와 같이 각 착수점들의 확률을 알려줍니다.

이렇게 만든 네트워크는 SL(Supervised learning) 정책 네트워크인데, 그대로 사용하면 높은 성능을 내지를 못합니다. 그래서 SL정책 네트워크를 가지고 자가대전을 진행해서 더 강한 RL(Reinforment Learning)정책 네트워크를 만드는 강화학습 기법이 사용됩니다.

(사실 알파고의 핵심은 이 강화학습 과정에 있으나, 내용이 너무 길어지기에 강화학습의 관점에서 보는 알파고에서 추가 설명하였습니다.)

알파고는 이렇게 정책 네트워크를 통해 좋아보이는 수를 빠르게 떠올려 볼 수 있는 능력을 가지게 됩니다.

가치 네트워크

가치 네트워크는 바둑판 모양을 입력으로 넣으면 최종 승리/패배 확률을 알려주는 뉴럴 네트워크입니다.
가치 네트워크
(가치 네트워크에 현재 바둑판 모양을 넣으면, 승리할 확률을 추측해준다)

정책 네트워크를 가지고 자가대전을 할 때 여러가지 바둑판 모양에 해당하는 승/패 결과를 알 수 있게 됩니다. 여기서 얻는 '바둑판 상황' 과 '게임의 승/패 결과'를 가치 네트워크가 기억하게 합니다.

알파고는 가치 네트워크를 사용함으로써 경기가 끝날 때까지 두어보지 않고, 20~30수만 가 보더라도 지금 상황이 괜찮은지 아닌지 파악하여 수의 가치를 빠르게 파악하는 능력을 가지게 됩니다.

몬테카를로 트리서치 (MCTS)

위에서 열심히 정책 네트워크, 가치 네트워크를 만든 이유는 MCTS알고리즘에 사용하기 위해서입니다.

MCTS(몬테카를로 트리 서치) 알고리즘은 정책 네트워크와 가치 네트워크의 도움을 받으면서 이 방향 저 방향으로 가지를 펼쳐나가며 수많은 경우에 대해 탐색하고 가장 좋을것으로 생각되는 수를 선택합니다.

만약 정책 네트워크 없이 탐색을 진행하면 첫 수를 둘때는 300가지가 넘는 경우에 대해 가지를 펼쳐야 합니다. 정책 네트워크의 도움을 받으면 네트워크가 알려주는 몇가지 수에 대해서 먼저 가지를 펼쳐 볼 수 있게 되어 탐색의 너비가 좁아집니다.

이렇게 가지를 펼치며 내려가는데, 어떤 길이 가장 좋은 길인지 평가할 수 있어야 합니다. 경기가 끝날 때까지 200수 넘게 내려가보면 정확하게 알 수 있습니다. 하지만 시간이 많이 걸리기에 가치 네트워크를 사용해 몇십 수 선에서 탐색을 끊어 탐색의 깊이를 얕게 하는 것입니다.

이렇게 정책 네트워크와 가치 네트워크의 도움으로 탐색 시간을 엄청나게 줄일 수 있게 되어 효율적인 탐색이 가능해졌고, 이세돌 선수와의 경기에서 강력한 성능을 보여 준 것입니다.

글을 마치며

이렇게 알파고는 정책 네트워크, 가치 네트워크, MCTS 세 가지 요소들을 함께 사용하여 인간 이상의 바둑 실력을 갖추게 되었습니다. 

알파고가 바둑을 두는 과정은 사람이 바둑을 두는 과정과 닮은 부분이 많지 않나 생각합니다. 알파고의 접근 방법이 사람의 사고와 비슷한 것은 아닌가 하는 상상이 들기도 했습니다.

알파고의 정책 네트워크, MCTS, 가치 네트워크 개념은 바둑에만 적용될 수 있는 개념이 아니라, 더 다양한 문제에 적용되어가고 있습니다. 딥마인드사에서는 바둑 외의 문제에도 이러한 개념들을 적용하는 연구를 진행하고 있습니다. 

아래는 알파고 영화인데, 알파고의 개발단계부터 이세돌선수와 대결과정에 어떤 뒷이야기가 있었는지를 볼 수 있습니다. 


댓글

가장 많이 본 글

구글 람다(LaMDA)란? - 구글의 언어 모델

알파고 강화학습 원리

버텍스 AI란? - 구글 인공지능 플랫폼

카타고와 바둑 두어보기

뉴럴 네트워크란?

블로그 글 목록

뉴럴 네트워크를 학습시키는 방법