AIGo 개발중간보고 AIGolab(https://aigolab.tistory.com) AIGo 프로젝트는지난 2016년 03 월, 한국의이세돌九단과 5번기를벌인 Google DeepMind의인공 지능 AlphaGo 에영감을받아시작됐습니다. AIGo 프로젝트는약 1년 4개월의연구및개발을거쳐 정책망(Policy Network) 를이용해오픈소스바둑인공지능 GNUGo를 3 점접바둑으로이기고, 타이젬 4 급정도의기력을갖출정도로성장했습니다. 정책망의지도학습이끝난지금, 지금까지 AIGo 프로 젝트를진행함에있어 AIGo 의작동원리, 개발당시에생겼던문제점들을담았습니다. 개발환경 AIGo의개발환경은 Intel Xeon E3-1260v6, NVIDIA GTX1080, 16GB RAM, Ubuntu Server 16.04 이며, 개발언어는 Julia를사용하고 Julia의 MXNet, HDF5 패키지를사용하였습니다. Julia 는데이터연산에특화된언어입니다. 그렇기 에행렬연산과대용양데이터처리에특화된언 어이며, MXNet은가볍고빠른딥러닝프레임워크 입니다. HDF5는대용양의데이터를저장하기위한 파일형식입니다. AIGo 구성요소 AIGo는 AIGo가작동하는 Server와 Server에접속 하여대국하는 Client 로구성됩니다. 바둑판은가로세로 19칸씩총 361개의칸으로 구성되어있습니다. 따라서돌의상태를저장할크 기의배열이필요합니다. AIGo는각칸의상태를 표현하기위해 BLACK_STONE, WHITE_STONE, EMPTY 를정의하였습니다. 개수를담은 를 크기의 또한각돌의활로의 liberty_count와활로를담은 liberties 2 차원배열로써정의했습니다. liberty_count는해당위치에돌이있지않으면 -1 을갖게됩니다. 또한돌을드러내는것을구현하 기위해같은색의연결된돌을묶은 groups 역시 크기의 2 차원배열로써정의했습니다. 또 한현재순서를알리는 current_player 와, 게임이 진행중인지혹은종료되었는지를나타내는 is_ended 도정의했습니다. 바둑판에돌을착수하면위의변수들을모두변 경하게됩니다. 그림1. AIGo Server와 Client의통신 AIGo Client는 GTP(Go Text Protocol) 을사용하여 Server 와통신합니다. Client는서버에서받은정보 를 GoGUI 를사용하여화면에출력하게됩니다. 바둑판구현 바둑판구현은바둑인공지능개발에있어필수 적인요소입니다. 바둑은 19줄로구성된판에흑 백양대국자가순서대로한번씩착수하는게임 입니다. 또한돌의활로가 0이되면돌을드러내 게되는데, 이러한바둑의규칙을구현하는것은 바둑인공지능개발의첫번째관문입니다. 정책망설계 바둑판상황 ( ) 에대한착수가능한위치( ) 에둬 야할확률 를만드는것은바둑의무한대 에가까운경우의수 ( ) 와바둑패턴의복잡 성때문에어렵습니다. 그렇기에 Deep Convolutional Neural Network 로정책망을설계하 여 를추정하였습니다. AIGo의정책망은총 8층의 Convolutional Layer 로구성되어있습니다. 정책망의자세한구조는 요. AIGo Data Table 1을참고하세 정책망은단순바둑판상황뿐만아니라여 러가지바둑판의특성들이결합된총 크기의정보가입력됩니다. 자세한내 용은 Data Table 2 에있습니다.
정책망지도학습학습되지않은 AIGo 정책망을학습하기위해 AIgo 정책망을 KGS(KGS Go Server) 의 6단이상의기보를바탕으로학습하여정책망가중치 를구했습니다. 정책망학습은 SGD(Stochastic Gradient Descent) 를이용하여진행됐고, 아래함수의함숫값을줄이는방향으로진행됩니다. log 위상황은돌의활로의개수가 흑이따낸상황입니다. 아래표와같습니다. 0이되어백돌을 정상적인활로데이터는 AIGo 정책망지도학습에선 learning rate는 을, momentum은 를, mini-batch 크기는 를사용하였습니다. 정책망학습시도 1 첫번째정책망지도학습시도는 보, 8,697,068 50,196장의기 개의착점데이터를가지고총 50epoch 까지진행됐습니다. 50epoch AIGo의정책망은 51.3% 를기록했습니다. 학습이후 training-set에대하여정확도 A B C D E 19-1 5-1 -1-1 18-1 5-1 -1-1 17 3-1 -1-1 -1 16-1 -1-1 -1-1 15-1 -1-1 -1-1 14-1 -1-1 -1-1 하지만, 같았습니다. 오류가존재하는학습데이터는아래와 50epoch 학습을마친후, AIGo 정책망의출력값 중가장큰값에착수하도록하여타이젬 정선대국을진행했습니다. 5단과 A B C D E 19 1 4-1 -1-1 18-1 5-1 -1-1 17 3-1 -1-1 -1 16-1 -1-1 -1-1 15-1 -1-1 -1-1 14-1 -1-1 -1-1 결과적으로, 먹여치기등의행위는바둑의규칙에어긋나는것처럼학습되었습니다. 위타이젬 5단과의기보처럼 AIGo의정책망은 학습데이터에없는상황에서도유기적으로문제 를해결하는모습을보였습니다. 하지만, 첫번째 시도에쓰인학습데이터엔활로개수를잘못세 는문제점이존재했습니다.
해당문제는타이젬 8급과의정선대국에서발견 됐는데, 위타이젬 8급과의실전대국기보에서 흑의 175수로먹여치는수를 AIGo가바둑의규칙 에어긋나는자충수로판단하여오류를내보냈습 니다. 하지만이는전혀문제가없는수이며결국 우상귀의백대마는죽었습니다. 또한위문제는대마의사활처리까지영향을미 쳤습니다. [GNUGo( 흑) 3 점접바둑, 백 1 집승] 위기보는정책망으로타이젬 5단과 9점접바둑 을둔기보입니다. 우변에서의전투에서흑의대 마가몰살되었으며, 좌변에서도전투의실패로흑 진이상당히깨져결국 AIGo 가패배했습니다. [ 타이젬 4 급( 흑), 백 12.5 집승] 결국위의심각한문제때문에지금까지학습된 를초기화했습니다. 정책망학습시도 2 첫시도가실패로돌아가고 AIGo 정책망은활로 계산을다시정확하게하여다시학습한결과, 학 습데이터에문제가생기지않아학습성능은더 욱향상되었습니다. 새로운정책망학습에서총 30epoch의학습이후 training-set에대해 52% 의 정확도를기록했습니다. 그결과, AIGo 정책망으로만타이젬 4급을호선 으로이기며, 타이젬 5단과 9점접바둑에서는무 리없이이기며, GNUGo와 3점접바둑도이기는 성과를이륙했습니다. [ 타이젬 5 단( 백), 9 점접바둑흑불계승]
하지만, 여전히문제가존재합니다. 위기보는타이젬 8단과 5 점접바둑기보입니다. AIGo는흑34로제압된돌한점을움직이는선택 을했습니다. 하지만이는무리수입니다. AIGo 정 책망이제시한위바둑판에서사람이둘확률이 두번째로높은수로 A로표시된곳을제시했습니 다. 실전에서의수와 A 두착점을 MCTS 알고리즘 을통해해당수의가치를판단하도록하여개선 할수있을것으로예상됩니다. 결론 AIGo 의정책망은지도학습만거치고서타이젬 3~4 급수준에도달했습니다. 중간활로계산의문 제로인해학습결과가좋지않았으며, 학습데이 터의문제가있을때수렴속도보다문제가없을 의수렴속도가더빠른것으로보아, 학습데이 터의오류가학습효율에영향을미친다는사실 또한알수있었습니다. AIGo 향후현바둑판상황( ) 에서의승률 를 구하는가치망을구현하고, fast rollout policy를 구현할예정입니다.
Data Table 1 정책망구조 층이름 패치 필터 활성함수 conv1 ReLU bn1 conv2 ReLU bn2 conv3 ReLU bn3 conv4 ReLU bn4 conv5 ReLU bn5 conv6 ReLU bn6 conv7 ReLU bn7 conv8 Softmax (conv는 convolutional layer 이고, bn은 batch normalization 입니다.)
Data Table 2 정책망입력데이터 특성이름 크기 설명 Stone Color 바둑판위각칸의정보. ( 빈칸/ 내돌/ 상대돌) Ones 1로채워진상수층 Turns Since 이돌이몇수전에놓였는가? Liberties 돌의활로 1 개수 Capture Size 해당위치에착수시따내게되는돌의수 Self Atari Size 상대가돌을놓았을때잃게되는돌의수 Liberties After Move 해당위치에착수시돌의활로의개수 Sensibleness 바둑의규칙에맞는수인가? Zeros 0으로채워진상수층 1 돌이뻗어갈수있는주위의빈칸, 활로의개수가 0 이되면돌을따내게됨.