티스토리 뷰

Hobby/Book

[Book] 딥러닝과 바둑

생각많은 소심남 2020. 7. 5. 11:35

(해당 포스트에서 소개하는 "딥러닝과 바둑" 책은 한빛미디어로부터 제공받았음을 알려드립니다.)

 인공지능이 바둑 영역에서 본격적으로 활용되기 시작한 것은 4년전 알파고와 실제 인간과의 대결 이후였을 것이다. 그 이전에는 인공지능이 체스에 활용된 케이스가 있었지만, 제한된 영역에서 움직이는 체스와는 다르게 바둑에서는 활동 영역도 넓고, 무엇보다도 형세를 이해하고 몇수 뒤의 미래를 예측해야했기 때문에, 인공지능을 해결하기 어려운 분야라고 여겨졌었다. 그런 영역을 알파고는 머신러닝과 딥러닝, 더불어 강화학습까지 적용시켜 바둑 실력을 높이게 된 것이다. 혹시 이 영역에 관심있는 사람이라면 Deepmind에서 만든 알파고 관련 영화도 한번 보면 흥미가 있을것이다.

 아무튼 알파고가 등장하고, 이를 어떻게 구현했는지에 대한 논문이 나오면서, 이를 모방하거나 다른 영역에 적용해보려는 시도를 많이 하고, 알파고의 구조를 설명하는 책들도 출판되었다.

그림 1. 딥러닝과 바둑

 이번에 리뷰할 책도 알파고에 구현된 기술을 간단하게 구현해보면서, 실제 바둑프로그램에 적용해볼 수 있는 책이다. 물론 이 책 이전에 알파고에 적용된 기술에 대해서 설명한 책들이 시중에 나와있긴 하지만, 바둑에 실제로 접목시켜서 코드로 구현해볼 수 있는 책은 이 책이 처음인 것 같다.

 사실 이 책을 읽기에 앞서서 이런 "바둑"이라는 특정 주제에 인공지능을 적용한 주제는 인공지능을 설명하기에 참 좋은 주제라고 생각한다. 비디오 게임처럼 이기고 지는 것에 대한 규칙이 정의되어야 하고, 앞에서도 잠깐 설명했던 것처럼 몇수뒤의 상황을 예측할 수 있어야 하며, 또한 판을 돌려서 봤을 때도 동일한 상황으로 인지할 수 있게 해야 한다. 이를 모두 설명하기 위해서는 머신러닝, 딥러닝, 강화학습 등이 모두 설명되어야 하고, 이런 부분 실제로 어떻게 구현되어야 할지 고민이 되어야 한다. 일반적인 딥러닝 책들의 서두가 지도학습이 어떤 것이고, 비지도학습, 강화학습에 대한 정의만 되거나, 특정 학습에만 치우쳐 있는 것에 비해, 이런 주제에 포커스된 책에서는 모든 주제를 다루게 되는 것이다. 그래서 책을 읽어본 사람이라면, 이런 부분이 조금 느껴지지 않을까 하는 생각을 해본다.

그림 2. 딥러닝이 적용된 바둑의 개요

 일단 이 책은 단순히 알파고의 기술적인 구현 내용만 설명된 이론서가 아닌 실제 구현해보면서 배울 수 있는 책이다. dlgo라는 바둑 라이브러리 상에서 간단한 RandomAgent부터 구현하기 시작해서, 바둑판을 인식시키기 위한 신경망인 Convolutional Neural Network(CNN)도 구현해보고, 또 이런 바둑판을 누적시켜서 학습시킬때 좋은 수를 효율적으로 찾게끔 해주는 Monte Carlo Tree Search(MCTS) 알고리즘을 적용해본다. 마지막으로 이런 바둑 경기를 반복적으로 수행하여 경험을 통해서 학습할 수 있는 Actor-Critic 알고리즘을 적용한 Agent를 구현해볼 수 있도록 구성되어 있다. 더불어 알고리즘뿐만 아니라, 바둑의 규칙이나 신경망에 대한 기본적인 정의들이 곳곳에 설명되어 있어, 인공지능 분야를 기술적으로 살펴보고자 하는 사람에게는 도움이 될 것이다. 

 뭔가 최신의 알고리즘이라던가, 트랜드가 반영된 기술을 소개한 책은 아니다. 다만 모든 기술들이 바둑이라는 분야에 접목되었을 때 보여지는 프로세스 등을 책에서 이해할 수 있다면, 바둑이 아닌 다른 분야로도 동일한 프로세스를 적용하려는 사람한테는 정말 도움이 될 수 있는 책이지 않을까 하는 생각을 해본다.

원서 : Deep Learning and the Game of Go
코드 : github

댓글