sta***
2020-07-01

2016년 세상을 공포와 충격에 빠트린 알파고는 알파고 제로에 완패를 당해 쓸슬히 퇴역했다. 이런 알파고의 드라마틱한 역정을 지켜본 개발자라면 한 번쯤 인공지능 바둑봇을 만들고 싶다는 막연한 생각을 해봤을 것이다.
[Part 1 기초]
-책의 나머지 부분에서 다루는 주요 개념을 소개한다.
CHAPTER 1 딥러닝을 향해 - 머신러닝 기초 -머신러닝 기초, 인공지능, 머신러닝, 딥러닝의 고차원적인 개요를 가볍게 제시한다. 이들이 어떻게 서로 연관되어 있는지, 그리고 이 분야의 기술로 할 수 있는 것과 없는 것을 설명한다.
CHAPTER 2 머신러닝 문제로서의 바둑 - 바둑의 규칙을 소개하고 컴퓨터에 게임을 가르칠 때 무엇을 해야 하는지 설명한다.
CHAPTER 3 첫 번째 바둑봇 만들기 -바둑판을 만들고, 그 위에 바둑돌을 놓고, 풀게임을 하는 부분까지 파이썬으로 구현한다. 이 장을 마치면 가장 단순한 바둑 AI가 실제로 작동하게 만들 수 있다.
[Part 2 머신러닝과 게임 AI]
-강력한 바둑 AI를 만들 수 있는 기술적, 이론적 기반을 설명한다. 특히 알파고에서 매우 효과적으로 사용한 트리 탐색, 신경망, 강화학습의 세 가지 기법을 소개한다.
CHAPTER 4 트리 탐색을 통한 경기-경기의 각 차례에서 탐색과 평가를 하는 알고리즘을 전반적으로 설명한다. 단순한 무작위 대입 미니맥스 탐색 방식을 만드는 것부터 시작해서 알파-베타 가지치기, 몬테카를로 탐색 같은 고급 알고리즘까지 만들어본다.
CHAPTER 5 신경망 시작하기-인공 신경망을 실질적으로 소개한다. 손으로 쓴 숫자를 맞추는 신경망을 파이썬으로 처음부터 구현해볼 것이다.
CHAPTER 6 바둑 데이터용 신경망 설계-바둑 데이터가 이미지 데이터와 어떤 유사한 특징을 가지고 있는지 설명하고 수 예측을 위한 합성곱 신경망을 소개한다. 이 장에서는 모델을 만드는 데 유용한 딥러닝 라이브러리인 케라스를 사용한다.
CHAPTER 7 데이터로부터 학습하기 : 딥러닝 봇-앞의 두 장에서 얻은 지식을 사용해서 심층 신경망 바둑봇을 만든다. 아마추어 게임에서 가져온 실제 경기 데이터로 봇을 훈련시키고 이 방법의 한계를 지적한다.-봇을 외부에 제공해서 사용자 인터페이스를 통해 사람이 봇과 경기를 할 수 있도록 할 것이다. 이때 봇이 로컬과 바둑 서버 두 곳에서 다른 봇과 어떻게 경기를 하게 만드는지도 배울 것이다.
CHAPTER 8 맨땅에 봇 배포하기-봇을 외부에 제공해서 사용자 인터페이스를 통해 사람이 봇과 경기를 할 수 있도록 할 것이다. 이때 봇이 로컬과 바둑 서버 두 곳에서 다른 봇과 어떻게 경기를 하게 만드는지도 배울 것이다.
CHAPTER 9 체험을 통한 학습 : 강화학습-강화학습 기초와 이를 바둑에서 혼자 경기를 하는 데 어떻게 사용할 수 있는지 알아본다.
CHAPTER 10 정책 경사를 사용하는 강화학습-7장의 수 예측을 개선하는 데 필수적인 방법인 정책 경사(policy gradients)를 차근차근 소개한다.
CHAPTER 11 가치 기법을 사용하는 강화학습-4장의 트리 탐색과 결합했을 때 매우 강력해지는 수단인 가치 기법(value method)을 사용해서 바둑판에서의 위치에 값을 매기는 방법을 살펴본다.
CHAPTER 12 행위자-비평가 방식 강화학습-바둑판에서의 위치와 다음 수가 주어졌을 때의 장기적인 가치를 예측함으로써 다음 수를 효과적으로 고를 수 있도록 하는 기법을 소개한다.
[Part 3 전체는 부분의 합보다 크다]
-앞서 개발한 모든 구성 요소를 알파고처럼 애플리케이션으로 합치면 그 성능이 최고에 달한다. 알파고와 알파고 제로를 설명한다
CHAPTER 13 알파고 : 모든 AI 기법의 합작품-기술적 및 수학적으로 이 책의 최고점이라고 할 수 있다. 이 장에서는 처음에는 신경망으로 바둑 데이터를 훈련하고(5~7장) 이를 통해 혼자 경기를 치르게 하고(8~11장) 여기에 똑똑한 트리 탐색 방식(4장)을 결합하여 초인 수준의 바둑봇을 만드는 방법을 논의한다.
CHAPTER 14 알파고 제로 : 강화학습과 트리 탐색의 결합-이 책의 마지막 장으로, 보드게임 AI의 현재 최신 동향을 다룬다. 알파고 제로의 동력인 트리 탐색과 강화학습의 혁신적인 조합을 자세히 살펴볼 것이다.
[리뷰]
2016년 3월 알파고와 이세돌 9단과 5번의 대국으로 알파고가 4번을 이겨서 인공지능 산업에 큰 파장을 불러 왔다고 생각합니다. 아마 그떄 부터 딥러닝, 머신러닝등 엄청난 발전이 되었습니다.
이책에서는 딥러닝 기반의 알파고를 파헤치고 알파고를 능가하는 바둑봇을 만드는 과정을 배울수 있습니다. 알파고의 바둑 엔진이 어떻게 구현 되어 있는지 하나하나 배울수 있고 몬테카를로 트리 탐색, 딥러닝, 강화학습 같은 알고리즘을 이해할수 있습니다. 파트 1에서는 머신러닝, 딥러닝에 대한 전반적인 이론과 개념 등 기초적인 내용을 학습할 수 있습니다. 파트2에서는 바둑봇의 인공두뇌를 만드는 학습을 합니다. 즉 트리 탐색, 신경망, 강화학습의 세가지 기법에 대해서 배우게 됩니다. 파트 3에서는 앞에서 개발한 것을 가지고 강화학습을 진행 합니다. 파트 3이 이책의 하이라이트라고 볼수 있습니다. 앞장에서 신경망으로 바둑 데이터를 훈련하고 이모델로 혼자서 바둑 대국를 치르게 해서 더 똑똑한 트리 탐색 방식을 결합하여 알파고 수준의 바둑봇을 만드는 방법을 배웁니다. 그리고 마지막 장에서는 알파고 제로에 대해서 최신 AI 동향을 다룹니다. 우리가 만든 바둑봇과 알파고 제로와 대결 해서 더욱 강력한 바둑봇을 만들어 보시기 바랍니다.
그리고 부록으로 인공지능에 필요한 기초 수학인 선형대수와 미적분학을 간략하게 소개 하고 넘파이로 선형대수를 사용하는 방법을 알려줍니다. 그리고 역전파 알고리즘, AWS를 사용한 봇훈련 및 배포 방법, 온라인 바둑 서버에 바둑봇 등록 하는 방법 등이 부록으로 제공 하고 있습니다.
머신러닝, 딥러닝에 대해서 이론과 실제 앱을 만들어 보면서 좀더 깊게 딥러닝에 대해서 배울수 있을 겁니다. 바둑봇을 만들어 보면서 다른 인공지능 앱을 만들때 응용할수 있는 능력이 키워 질것이라 생각됩니다.