"알파고"제로가 한국의 대표 바둑기사 "이세돌"과의 바둑 대결에서 승리한지 어느덧 4년이 지났습니다.

알파고는 구글의 '딥마인드' 회사에서 개발한 인공지능 로봇입니다. 그리고 이세돌은 인간이죠.

인간과 인공지능 로봇의 최초의 바둑 대결을 실시간 TV 중계를 보면서 저를 포함한 세계의 대다수의 사람들이

큰 충격을 느꼈습니다. 아마, 1990년 인간과 컴퓨터와의 체스대결을 봤던 사람들도 이런 충격이었을까요.

그리고 이때부터 본격적으로 인공지능이 많은 사람들에게 인지도가 높아지고, 국가에서는 4차산업의 핵심 기술로 더욱 부각되어 여기저기 인공지능을 접목한 사업들과 교육들, 인공지능 대학원들이 우후죽순 생기고 있습니다. 

하지만, 인공지능을 공부하더라도 강화학습은 막연히 어려울 것이다, 라는 선입견이 강해서 공부를 시작할 엄두도 안 났던 것이 사실입니다. 그러던 차에 강화학습을 책을 통해서 직접 구현해볼 수 있다는 "딥러닝과 바둑" 책을 접했습니다. 다루는 내용의 방대함에 비해 책 사이즈는 작고 귀여웠습니다 :-)

 

바둑이 소재라 그런지 중국(동양)풍의 책표지 ...귀엽다 >_<

 

책의 순서는 다음과 같습니다.

 

1부 기초

  1장 딥러닝을 향해-머신러닝 기초

  2장 머신러닝 문제로서의 바둑

  3장 첫 번째 바둑봇 만들기

 

2부 머신러닝과 게임 AI

  4장 트리 탐색을 통한 경기

  5장 신경망 시작하기

  6장 바둑 데이터용 신경망 설계

  7장 데이터로부터 학습하기 : 딥러닝 봇

  8장 맨땅에 봇 배포하기

  9장 체험을 통한 학습 : 강화학습

 10장 정책 경사를 사용하는 강화학습

 11장 가치 기법을 사용하는 강화학습

 12장 행위자-비평가 방식 강화학습

 

3부 전체는 부분의 합보다 크다

 13장 알파고 : 모든 AI 기법의 합작품

 14장 알파고 제로 : 강화학습과 트리 탐색의 결합

 

부록 A 수학기초

부록 B 역전파 알고리즘

부록 C 바둑 프로그램 및 서버

부록 D 아마존 웹서비스를 사용한 봇 훈련 및 배포

부록 E 온라인 바둑 서버에 봇 등록하기

 

이 책의 장점은 강화학습을 '수학'에 대한 깊은 이해나 공식이 없이도 바로 구현 실습이 가능하도록 강화학습에 대한 막연한 두려움, 어려움에 대한 생각, 진입장벽을 낮췄다는 데 있습니다.

 

또한 '바둑'이라는 특정 게임을 강화학습을 이용하여 끝까지 강화학습을 구현할 수 있도록 하여 학습자의 성취감과 이해를 높였다는 것도 장점입니다.

 

책에서는 처음부터 바둑과 강화학습을 바로 다루는 것이 아니라, '1부' 기초 파트를 통하여 머신러닝의 개념을 쉽고 간략하게 설명합니다. 그리고, 왜 게임이 인공지능에서 많이 다뤄지는 분야인지, 왜 바둑이 딥러닝으로 해결하기 좋은 문제인지를 설명하고 바둑의 규칙도 쉽게 설명해줍니다. 

 

"게임은 알려진 규칙으로 통제된 환경을 만들기 때문에" 인공지능에서 많이 다뤄집니다.

 

바둑에서의 핵심은 1) 고려할 수를 줄여야 하는 것 2) 어느 기사가, 어느 정도 앞서있는지에 대한 위치 평가

라고 책에서는 소개합니다.

각각의 경우마다 고려할 수를 규칙 기반으로 정하는 것은 너무 많기 때문에 어렵습니다. 대신, 딥러닝을 통해 기보를 학습한다면 특정 정확도로 예측이 가능해지기 때문에 문제가 보다 쉬워집니다. 나아가 예측한 수에서 탐색이 필요한 가지의 우선순위까지 구할 수 있다면 수를 효율적으로 계산할 수있게 됩니다.

 

또, 가장 점수가 높은 위치에 돌을 놓아야 할텐데, 돌을 어디에 놓는 게 좋은 수인지를 평가하는 것도 중요합니다. 이것은 다음 수가 어딘지를 예측하는 신경망을 훈련시키는 것 대신에 누가 이길지를 예측하도록 훈련을 시킨다면 각 위치의 점수를 숫자로 나타내어 고득점을 할 수 있도록 (이길 수 있도록) 게임 현황을 평가할 수 있습니다.

따라서, 바둑은 이전의 규칙 기반보다는, 딥러닝, 강화학습 기법을 적용하여 훈련을 시키는 것이 훨씬 성능을 좋게 만들 수 있는 분야라고 할 수 있습니다. 

 

책은 전반적으로 어려운 내용도 '쉽게 설명'하고 있습니다. '바둑알못인데 책을 보기 전에 바둑 규칙을 미리 공부해야 하나?' 라는 걱정을 단박에 날릴 수 있도록 이 책은 순서대로 읽으면 자연스럽게 바둑을 이해하고 구현할 수 있도록 설명합니다. 또, '딥러닝도 잘 모르는데, 강화학습 책을 봐도 될까?' 라고 걱정하지 않아도 될만큼, 2부의 5장에서 '신경망 시작하기'라는 단원을 통하여 딥러닝을 기초부터 쉽고, 간략하고, 차근차근 설명하고 있습니다. 딥러닝을 약간 아는 상태로 책을 봤는데, 참 친절한 책이구나 하는 생각이 들었습니다. 딥러닝 소스코드를 이해하려면 필수적으로 선형대수에서 행렬, 벡터, 미적분 개념을 알고 있어야 하는데 책의 부록A에서 수학기초를 쉽게 풀어서 다루는 것을 보고 '개념 있는 책이다'라는 생각이 들었습니다. 따로 수학책을 찾아볼 필요가 없이 하나의 책에서 다 해결이 가능한 책이라니!

 

그래서 오히려 책을 읽기 전에 바둑, 딥러닝보다는 '파이썬' 코드 함수, 문법을 미리 접하고 책을 읽는 것이 도움이 될 것 같습니다.

 

 

이 책이 좋은 점은 매 단원마다 앞부분은 '이 장에서 다루는 내용'이 무엇인지 간략하게 목차화하고, '요약' 파트를 통해 해당 단원에서 어떤 부분이 핵심이었는지를 요약해주니까 한 번 더 내용을 이해하는 데 도움이 되는 구성이었습니다.

 

아직 이 책을 보면서 하나하나 실습해보지는 않았지만, 딥러닝을 이제 막 공부하고 있는 '딥린이'로서, 멀게만 느껴졌던 '강화학습'을 도전해보는 건 이 책이 제일 좋을 것 같다는 생각이 듭니다. 이제부터 실습을 하나하나 해보면서 강화학습을 몸으로 체득해보고자 합니다. 딥러닝도 잘 모르는데, 강화학습 공부를 해도 될까 하는 불안감이 있으신 분들에게는 이 책을 꼭 추천해드리고 싶습니다. 딥러닝도 공부하고, 강화학습도 공부하고, 알파고도 만들어보고. 하나의 책으로 다 할 수 있으니까요!