비전공자도 이해할 수 있는 AI지식9 -알파고는 왜 인간의 신의 한수를 허용했는가?-

1. 몬테카를로 트리 탐색, 알파고가 생각하는 방법

 

이제 알파고가 학습한 것을 바탕으로 어떤 과정을 거쳐 착수를 하는지 알아보자. 이때는 앞서 설명했던 몬테카를로 트리 탐색을 활용한다.

 

몬테카를로 방법은 무작위로 샘플링하여 정답을 찾는 방식이다.

 

5000만 국민의 선거 결과를 알기 위해 전수조사하는 대신 무작위로 5만 명 정도만 조사해도 비슷한 결과를 낼 수 있는 것과 마찬가지다.

 

바둑의 경우로 다시 한번 생각해보자.

 

1) 바둑은 탐색해야하는 게임 트리가 엄청나게 크다.

 

2) 게임 트리를 전부 탐색하는 것은 불가능하다.

 

3) 일부만 무작위로 샘플링하여 탐색해도 비슷한 결과를 낼 수 있다.

 

이런 방식으로 몬테카를로 방법을 바둑 인공지능에 도입하자 실력이 급상승하기 시작했다.

 

그러나 몬테카를로 방법에도 엄연히 한계는 있다. 무작위로 탐색하다 보니 이른바 "묘수"를 간과할 수 있다는 점이다.

 

99%의 승률이 예상되더라도 단 1%의 허점 때문에 반드시 패배로 연결되는 다음 수가 존재한다면, 그 수는 두지 않아야 한다.

 

상대방이 그 묘수를 간파할 수 있기 때문이다. 하지만 무작위로 시뮬레이션하는 몬테카를로 방법은 아주 작은 확률인 상대의 묘수를 놓칠 수도 있었다.

 

따라서 알파고뿐만 아니라 그즈음에 나온 바둑 인공지능 프로그램들은 수를 좀 더 꼼꼼하게 탐색해 묘수를 놓치지 않도록 게임 트리 탐색에 몬테카를로 방법을 접목한 몬테카를로 트리 탐색을 사용했다.

 

몬테카를로 트리 탐색의 과정을 그림으로 살펴보자.

 

먼저 어떤 수에서 시작할지 선택을 한다.

 

단순히 아무 수나 선택하는게 아니라 어떤 수가 유망한 수가 될지 가치를 잘 따져보고 승리할 가능성이 높아 보이는 수부터 선택한다.(selection)

 

실제 논문에서 제시한 그림

 

그 다음에는 첫번째 정책망인 기보학습 정책망으로 다음 수를 어디에 둘지 확장한다.(expansion)

 

앞에서 이 정책망은 실력이 5단 정도이므로, 5단이 수를 두는 수준과 비슷할 것이다. 당연히 이 수를 선택해서는 이세돌 9단을 이길 수 없을 것이다.

 

따라서 좀 더 엄밀하게 검증하는 작업이 필요하다. 여기에 2가지 방식을 사용한다.

 

먼저 기보학습 정책망이 선택한 수를 이용해 게임이 끝날 때까지 시뮬레이션을 수행한다.

 

하지만 아무리 게임이 중반부에 접어들었다고 해도 남아 있는 모든 경우의 수를 시뮬레이션할 수는 없다.

 

바둑은 그렇게 하기에는 경우의 수가 너무 많기 때문이다.

 

그래서 바로 여기에 몬테카를로 방법을 적용한다. 무작위로 두어도 어차피 비슷한 결과가 나오기 때문이다. 

 

그렇지만 실제로 실험해본 결과 완전한 무작위보다는 실제로 바둑 학습을 진행한 망을 사용했을 때 좀 더 성능이 좋았다고 한다.

 

실제로 알파고 이전 대부분의 바둑 인공지능들도 이 과정을 완전한 무작위보다는 얼마나 더 지능적으로 처리하느냐로 실력 차이가 나기도 했다.

 

그래서 알파고 또한 성능을 높이기 위해 바둑 학습을 진행한 망을 사용한다.

 

당연한 이야기지만 시뮬레이션 단계를 가급적 많이 진행할수록 더 좋은 결과가 나올것이다.

 

하지만 바둑은 제한 시간안에 착수를 해야하기 때문에 빠르게 시뮬레이션할 수 있도록 작동하는 망이 필요하다.

 

그래서 두번째 정책망인 롤아웃 정책망을 사용할 차례이다.

 

대략 1500배 더 빠르다고 했는데 바둑이 끝날때까지 200수 정도 진행된다는 점을 감안해도

 

첫번째 정책망인 기보학습 정책망이 첫 수를 계산하는 동안에, 롤아웃 정책망은 게임을 7번이나 마칠 정도로 아주 빠른 속도로 시뮬레이션할 수 있다.

 

그리고 빠르게 시뮬레이션할 수 있으므로 중요한 수는 보다 꼼꼼하게 살펴볼 수 있다.

 

중요한 수라고 판단되면 더 많이 시뮬레이션하고 더 깊게 탐색을 수행한다. 

 

이처럼 몬테카를로 트리 탐색에 롤아웃 정책망을 접목해 활용하게 된다.

 

체스에서 딥 블루는 엄청난 계산 속도로 가지치기를 하고 남은 모든 수를 탐색해 정답을 찾아냈다.

 

하지만 알파고는 더 이상 모든 수를 탐색하지는 않는다. 애초에 바둑은 모든 수를 탐색할 수는 없기때문이다.

 

대신 알파고의 몬테카를로 트리 탐색을 이용해 가능성이 높은 수를 골라내 좀 더 현명하게 탐색을 해나간다.

 

시뮬레이션을 진행할 때 기존 몬테카를로 방법이 무작위로 탐색해 속력을 높였다면, 알파고의 몬테카를로 트리 탐색은 실제로 바둑학습을 진행한 망을 사용했다.

 

속력을 높이고 방향을 더욱 정확하게 진행했다는 점이다. 그런데 이런 식으로 탐색한다고 항상 완벽한 것은 아니다.

 

아무리 정교한 시뮬레이션을 한다고 해도 중요한 수를 놓칠 가능성은 반드시 존재하기 마련이다. 결국 악수를 두는 경우가 생길 수 있다는 것이다.

 

따라서 알파고는 한가지 보완책을 더 마련했다. 

 

마지막에 만든 가치망의 점수를 승리 여부에 함께 반영하는 것이다. 가치망은 현재 국면에서 강화학습한 정책망끼리 겨뤘을때, 승리 여부를 확률로 표현한 망이다.

 

체스와 다르게 바둑은 국면을 판단하는게 매우 힘들다고 했는데, 알파고는 강화학습을 활용해 국면을 평가하는 방법을 찾아냈다.

 

알파고는 시뮬레이션 결과와 이 가치망의 결과를 사이좋게 반반씩 섞었다. 이렇게 하면 서로의 장단점을 보완하는 수를 만들 수 있다고 생각했다.

 

알파고는 이 두 방식으로 최종 점수를 계산하여 승리 여부를 판단한다.

 

이제 알파고는 최종 결과를 업데이트 하는 작업을 진행한다. 

 

승리했다면 승리 여부와 게임 진행여부, 패했다면 게임 진행 여부만 업데이트 한다.

 

일종의 점수표를 갱신하는 과정이며 만약 승리했다면 승리한 상태부터 거슬러 올라가 지금까지 둔 모든 수에 승리 점수 1점, 게임 진행 점수 1점을 부여한다.

 

패했다면 게임 진행 점수만 1점을 준다는 것이다. 

 

이처럼 모든 수에 점수를 업데이트 한 다음 마지막으로 가장 많이 진행한 수를 다음 수로 선택하게 된다.

 

가장 높은 점수가 아니라 가장 많이 진행한 수이다. 왜 그럴까?

 

그건 바로 신뢰도 때문이다. 예를 들어 여행을 가서 A,B 음식점 중에 어디로 갈지 결정해야한다고 할 때 A음식점은 평점이 4.2이고 리뷰 개수가 1000개나 된다.

 

B음식점은 평점이 4.8로 더 높지만 리뷰는 5개밖에 안된다. 그렇다면 과연 어느 음식점을 더 신뢰하게 될까?

 

리뷰 개수가 훨씬 많은 A음식점을 선택해야하지 않을까? B음식점은 리뷰가 몇개 없다보니 우연히 높은 점수를 받을 수도 있기 때문이다.

 

따라서 평점이 높은 곳보다는 리뷰가 많은 곳을 좀 더 신뢰하는게 합리적이다. 알파고도 마찬가지이다.

 

최종적으로 시뮬레이션하면서 가장 많이 방문한 수를 더 신뢰하고 이 수를 다음 수로 선택하게 된다.

 

지금까지의 과정을 요약하자면,

 

1) 어떤 수에서 시작할지 승리할 가능성이 높아 보이는 수를 선택한다.

 

2) 기보학습 정책망을 이용해 다음 수를 어디에 둘지 확장한다.

 

3) 롤아웃 정책망을 활용해 해당 수를 게임 끝까지 매우 빠르고 매우 많이 시뮬레이션한다.

 

4) 가치망의 점수를 50%반영하여 승패 여부를 탐색한 모든 수에 업데이트 한다.

 

5) 위 과정을 계속 반복하여 최종적으로 시뮬레이션하면서 루트에서 가장 많이 방문한 수를 다음 수로 결정하고 착수한다

 

( Once the search is complete, the algorithm chooses the most visited move from the root position. )

 

 

2. 알파고는 왜 이세돌의 "신의 한수" 78수를 왜 막아내지 못했는가?

 

이처럼 여러 보완책을 마련하여 꼼꼼하게 탐색한 알파고도 이세돌과의 네 번째 대국에서 이세돌의 신의 한수인 78수를 막아내지 못했다.

 

이 수는 알파고는 물론이고 바둑 전문가들도 전혀 예상하지 못한 절묘한 수로 단번에 판세를 뒤집어 네 번째 대국을 승리로 이끌었다.

 

인류 역사상 마지막이 될지도 모른 귀중한 1승을 얻게 된 것이다.

 

그렇다면 알파고는 왜 신의 한수를 허용하고 말았을까? 알파고의 작동 원리를 다시 한번 되새겨보자.

 

알파고의 몬테카를로 트리 탐색은 유망한 수를 중심으로 꼼꼼하게 탐색해나간다고 했다.

 

그러니까 확률이 높은 쪽을 향해 더 많이, 더 깊게 탐색해나가고 가장 신뢰가 높은 지점에 착수하는 원리이다.

 

하지만 이세돌이 둔 신의 한 수 지점에 착수할 확률을 알파고는 1만분의 1로 매우 낮게 예측했다고 한다.

 

그러니까 알파고는 설마 그 지점에 돌을 둘줄을 몰랐기에 충분히 탐색하지 않았다.

 

예를 들어 제한 시간 내에 1억번 정도 탐색할 수 있다면, 다른 곳은 수백만, 수천만번씩 검토했지만, 그 지점은 수십번도 검토해보지 않았다는 것이다.

 

당연히 그 지점이 묘수인지 아닌지조차도 알아내지 못하는 것이다.

 

애초에 충분히 탐색을 하지 않았기 때문에 시뮬레이션하면서 78수 다음에 대국이 어떻게 흘러갈지 알파고는 전혀 예상하지 못했던 것이다.

 

이세돌이 78수를 착수하는 순간 미처 충분히 탐색하지 않았던 알파고는 그제서야 당황하게 된다.

 

여기서부터는 더 이상 승률이 높은 지점을 찾아내지 못하고 엉뚱한 수를 남발하면서 급격히 무너지게 되었다.

 

인간에게는 엉뚱한 수이지만, 알파고 입장에서는 어디에 두나 승리할 확률이 낮으니 마찬가지이다. 

 

나름대로 최선이라고 판단하지만 더 이상 좋은 착점을 찾을 수 없기 때문에 자꾸만 이상한 곳에 둘 수밖에 없었다.

 

그리고 우리 모두가 잘 아는 것처럼 이세돌은 알파고를 상대로 인류 역사상 마지막이 될지도 모를 귀중한 1승을 얻게 되었다.

 

 

 

TAGS.

Comments