메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

딥러닝과 바둑

알파고를 능가하는 바둑봇을 만들며 익히는 딥러닝, 강화학습

한빛미디어

번역서

판매중

  • 저자 : 막스 펌펄라 , 케빈 퍼거슨
  • 번역 : 권정민
  • 출간 : 2020-06-01
  • 페이지 : 444 쪽
  • ISBN : 9791162243152
  • eISBN : 9791162247839
  • 물류코드 :10315
  • 초급 초중급 중급 중고급 고급
1 2 3 4 5
4.9점 (20명)
좋아요 : 10

책소개

무늬만 바둑봇을 알파고 제로 성능으로 환골탈태시키자

 

2016년 세상을 공포와 충격에 빠트린 알파고는 알파고 제로에 완패를 당해 쓸슬히 퇴역했다. 이런 알파고의 드라마틱한 역정을 지켜본 개발자라면 한 번쯤 인공지능 바둑봇을 만들고 싶다는 막연한 생각을 해봤을 것이다. 

 

고성능 바둑봇을 만드는 방법은 생각만큼 어렵지 않다. 첫째, 파이썬 딥러닝 라이브러리인 케라스를 사용해 훈련 기법과 전략을 적용한다. 둘째, 바둑봇이 스스로 바둑을 익히는 것을 즐겁게 지켜본다. 자세한 방법은 이 책에 있다. 이 책을 탐독해 바둑봇을 만들며 익힌 딥러닝 기술을 널리 활용하기 바란다.

 

 

10315_details.jpg

 

 

 

저자소개

막스 펌펄라 저자

막스 펌펄라

독일 함부르크에 사는 데이터 과학 교수이자 소프트웨어 엔지니어입니다. 매우 적극적인 오픈소스 기여자이며 여러 파이썬 패키지의 메인테이너로 활동 중입니다. 현재 애니스케일에서 소프트웨어 엔지니어로 일하고 있습니다. 이전에는 패스마인드의 제품 연구 책임자로서 레이 RLlib, 서브, 튠을 활용해 대규모 산업 애플리케이션을 위한 강화학습 설루션을 개발했으며, 스카이마인드에서 DL4J의 개발에 중요한 역할을 맡았습니다. 또한, 케라스 생태계의 성장과 확장을 도왔으며 하이퍼옵트의 메인테이너입니다.

 

케빈 퍼거슨 저자

케빈 퍼거슨

분산 시스템 및 데이터 과학 분야 경력 18년차다. 아너(Honor) 사 데이터 과학자며, 구글 및 미보(Meebo)에서 일했다. 막스와 케빈은 파이썬으로 개발된 몇 안 되는 오픈소스 바둑봇 중 하나인 베타고를 개발했다.

권정민 역자

권정민

세상은 데이터로 이뤄져 있다고 생각하며, 이를 잘 활용하고자 목표를 가지고 다양한 데이터 분석 및 활용 방안을 만들고 연구하고 있다. 카이스트 및 포항공과대학교에서 산업공학과 전산학을 전공했으며, 다양한 산업군에서 데이터 분석을 수행하고 있다. 저서로는 『데이터 분석가의 숫자유감』(골든래빗, 2021)이 있고, 역서로는 『빅데이터 분석 도구 R 프로그래밍』(에이콘 출판사, 2021), 『딥러닝과 바둑』(한빛미디어, 2020) 등이 있으며 『딥러닝 레볼루션』(한국경제신문사, 2019) 등을 감수했다.

 

목차

[Part 1 기초]

 

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

1.1 머신러닝이란 무엇인가

__1.1.1 머신러닝은 AI와 어떤 연관성이 있는가

__1.1.2 머신러닝으로 할 수 있는 것과 할 수 없는 것

1.2 사례로 보는 머신러닝

__1.2.1 애플리케이션에서 머신러닝 사용

__1.2.2 지도학습

__1.2.3 비지도학습

__1.2.4 강화학습

1.3 딥러닝

1.4 이 책에서 학습할 내용

1.5 요약

 

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

2.1 왜 게임인가

2.2 간단한 바둑 소개

__2.2.1 바둑판 이해하기

__2.2.2 돌 놓기와 잡기

__2.2.3 경기 종료 및 점수 계산

__2.2.4 패 이해하기

2.3 접바둑

2.4 추가 학습 자료

2.5 머신에 무엇을 가르칠 수 있을까

__2.5.1 포석 두기

__2.5.2 다음 수 찾기

__2.5.3 고려할 수 줄이기

__2.5.4 게임 현황 평가하기

2.6 바둑 AI가 얼마나 강력한지 측정하는 방법

__2.6.1 일반 바둑 등급

__2.6.2 바둑 AI 벤치마킹

2.7 요약

 

CHAPTER 3 첫 번째 바둑봇 만들기

3.1 파이썬으로 바둑 나타내기

__3.1.1 바둑판 구현하기

__3.1.2 바둑에서 연결 추적하기 : 이음

__3.1.3 바둑판에 돌 놓기와 따내기

3.2 대국 현황 기록과 반칙수 확인

__3.2.1 자충수

__3.2.2 패

3.3 게임 종료

3.4 첫 번째 봇 만들기 : 상상 가능한 최약체 바둑 AI

3.5 조브리스트 해싱을 사용한 대국 속도 향상

3.6 봇과 대국하기

3.7 요약

 

[Part 2 머신러닝과 게임 AI]

 

CHAPTER 4 트리 탐색을 통한 경기

4.1 게임 분류

4.2 미니맥스 탐색을 사용한 상대 수 예측

4.3 틱택토 풀기 : 미니맥스 예제

4.4 가지치기를 통한 탐색 공간 축소

__4.4.1 위치 평가를 통한 탐색 깊이 축소

__4.4.2 알파-베타 가지치기를 사용해서 탐색 폭 줄이기

4.5 몬테카를로 트리 탐색을 이용한 경기 상태 평가

__4.5.1 파이썬으로 몬테카를로 트리 탐색 구현하기

__4.5.2 탐색할 가지 선택법

__4.5.3 바둑에 몬테카를로 트리 탐색 적용하기

4.6 요약

 

CHAPTER 5 신경망 시작하기

5.1 간단한 사례 : 손글씨 숫자 분류

__5.1.1 MNIST 숫자 손글씨 데이터셋

__5.1.2 MNIST 데이터 처리

5.2 신경망 기초

__5.2.1 단순한 인공 신경망으로의 로지스틱 회귀

__5.2.2 1차원 이상의 결과를 갖는 신경망

5.3 순방향 신경망

5.4 우리 예측은 얼마나 훌륭한가 : 손실 함수와 최적화

__5.4.1 손실 함수란 무엇인가

__5.4.2 평균제곱오차

__5.4.3 손실 함수에서의 최솟값 찾기

__5.4.4 최솟값을 찾는 경사하강법

__5.4.5 손실 함수에서의 확률적 경사하강법

__5.4.6 신경망에 기울기를 역으로 전파하기

5.5 파이썬을 활용한 단계별 신경망 훈련

__5.5.1 파이썬에서의 신경망층

__5.5.2 신경망에서의 활성화층

__5.5.3 순방향 신경망의 구성 요소로서의 파이썬에서의 밀집층

__5.5.4 파이썬으로 순차 신경망 만들기

__5.5.5 신경망으로 손글씨 숫자 분류하기

5.6 요약

 

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

6.1 신경망용 바둑경기 변환

6.2 트리 탐색 게임을 신경망 훈련 데이터로 만들기

6.3 케라스 딥러닝 라이브러리 사용하기

__6.3.1 케라스 디자인 원리 이해

__6.3.2 케라스 딥러닝 라이브러리 설치

__6.3.3 케라스로 익숙한 첫 번째 문제 실행해보기

__6.3.4 케라스에서 순방향 신경망을 사용한 바둑 수 예측

6.4 합성곱 신경망으로 공간 분석하기

__6.4.1 합성곱 역할에 대한 직관적 이해

__6.4.2 케라스로 합성곱 신경망 만들기

__6.4.3 풀링층을 사용한 공간 감소

6.5 바둑 수 확률 예측하기

__6.5.1 마지막 층에서 소프트맥스 활성화 함수 사용

__6.5.2 분류 문제에서의 교차 엔트로피 손실

6.6 드롭아웃과 정류 선형 유닛을 사용해 더 깊은 신경망 구성

__6.6.1 표준화를 위해 일부 뉴런 제거하기

__6.6.2 ReLU 활성화 함수

6.7 기능 결합을 통해 더 강력한 바둑 수 예측 신경망 만들기

6.8 요약

 

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

7.1 바둑 대국 기록 가져오기

__7.1.1 SGF 파일 포맷

__7.1.2 KGS에서 바둑 대국 기록을 다운로드해서 재현하기

7.2 딥러닝용 바둑 데이터 준비

__7.2.1 SGF 기록을 사용해서 바둑 대국 재현하기

__7.2.2 바둑 데이터 전처리기 만들기

__7.2.3 데이터를 효율적으로 불러오는 바둑 데이터 생성기 만들기

__7.2.4 바둑 데이터 처리 및 생성기의 병렬 실행

7.3 인간의 대국 기록으로 딥러닝 모델 훈련하기

7.4 더 실질적인 바둑 데이터 변환기 만들기

7.5 적응 경사법을 사용해서 효율적으로 훈련하기

__7.5.1 SGD에서의 붕괴와 모멘텀

__7.5.2 에이다그래드로 신경망 최적화하기

__7.5.3 에이다델타로 적응 경사법 조정하기

7.6 직접 실험하고 성능 평가하기

__7.6.1 모델 구조 및 하이퍼파라미터 검정 지침

__7.6.2 훈련 및 검정 데이터로 성능 지표 평가하기

7.7 요약

 

CHAPTER 8 맨땅에 봇 배포하기

8.1 심층 신경망으로 수 예측 에이전트 만들기

8.2 바둑봇을 웹 프론트엔드로 제공하기

__8.2.1 바둑봇 예제 처음부터 끝까지 다루기

8.3 클라우드에서 바둑봇 훈련 후 배포하기

8.4 다른 봇과의 대화에 사용할 바둑 텍스트 프로토콜

8.5 로컬에서 다른 봇과 대결하기

__8.5.1 봇이 차례를 넘기거나 기권해야 할 때

__8.5.2 봇과 다른 바둑 프로그램 간 대국 두기

8.6 바둑봇을 온라인 바둑 서버에 배포하기

__8.6.1 온라인 바둑 서버에 봇 등록하기

8.7 요약

 

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

9.1 강화학습 주기

9.2 경험을 통해 어떻게 달라질까

9.3 학습 가능한 에이전트 만들기

__9.3.1 확률분포에 따른 샘플링

__9.3.2 확률분포 제한

__9.3.3 에이전트 초기화

__9.3.4 물리 장치로부터 에이전트 불러오고 저장하기

__9.3.5 수 선택 구현

9.4 자체 대국 : 컴퓨터 프로그램이 연습하는 방법

__9.4.1 경험 데이터 나타내기

__9.4.2 대국 시뮬레이션

9.5 요약

 

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

10.1 임의의 경기에서 좋은 결정을 정의하는 방법

10.2 경사하강법을 사용해서 신경망 정책 수정하기

10.3 자체 대국 훈련 팁

__10.3.1 성능 향상 평가하기

__10.3.2 작은 성능 차이 측정하기

__10.3.3 확률적 경사하강(SGD) 최적화기

10.4 요약

 

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

11.1 Q-학습을 사용한 대국

11.2 케라스로 Q-학습 만들기

__11.2.1 케라스로 입력값이 둘인 신경망 만들기

__11.2.2 케라스로 ε-탐욕 정책 구현하기

__11.2.3 행동-가치 함수 훈련

11.3 요약

 

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

12.1 어느 결정이 중요한지는 어드밴티지가 알려준다

__12.1.1 어드밴티지란 무엇인가

__12.1.2 자체 대국 중에 어드밴티지 구하기

12.2 행위자-비평가 학습용 신경망 설계

12.3 행위자-비평가 에이전트를 사용한 대국

12.4 경험 데이터로 행위자-비평가 에이전트 훈련하기

12.5 요약

 

[Part 3 전체는 부분의 합보다 크다]

 

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

13.1 알파고의 신경망 훈련

__13.1.1 알파고의 신경망 구조

__13.1.2 알파고 바둑판 변환기

__13.1.3 알파고 스타일의 정책 신경망 훈련하기

13.2 정책 신경망으로 자체 대국 부트스트래핑

13.3 자체 대국 데이터로 가치 신경망 도출하기

13.4 정책 신경망과 가치 신경망을 사용한 탐색 개선

__13.4.1 신경망으로 몬테카를로 롤아웃 개선하기

__13.4.2 결합 가치 함수를 사용한 트리 탐색

__13.4.3 알파고의 탐색 알고리즘 구현

13.5 각자의 알파고를 훈련할 때 실제로 고민해야 할 부분

13.6 요약

 

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

14.1 트리 탐색용 신경망 만들기

14.2 신경망으로 트리 탐색 안내하기

__14.2.1 트리 따라 내려가기

__14.2.2 트리 확장

__14.2.3 수 선택

14.3 훈련

14.4 디리클레 잡음을 사용한 탐색 향상

14.5 더 깊은 신경망을 만드는 현대적 기법

__14.5.1 배치 정규화

__14.5.2 잔차 신경망

14.6 추가 참고 자료

14.7 정리

14.8 요약

 

부록 A 수학 기초 

부록 B 역전파 알고리즘 

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

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

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

출판사리뷰

★ 딥러닝 바둑봇을 만들며 딮러닝을 깊게 이해하자

이 책을 덮을 때쯤 알파고 형태의 바둑 엔진이 어떻게 구현되었는지 이해하게 될 뿐만 아니라 몬테카를로 트리 탐색, 딥러닝, 강화학습 같은 현대 AI 알고리즘의 주요 구성 요소를 매우 실질적으로 이해할 수 있게 될 것이다. 저자는 실제로 돌려볼 수 있는 흥미로운 바둑 예제를 사용해서 이런 기술 주제를 조심스럽게 연결해두었다. 그외에도 지금까지 발명된 세상 모든 게임 중 가장 아름답고 도전적인 바둑의 기초 지식도 배우게 될 것이다.

 

★ 알파고 동작하는 딥러닝 바둑봇을 만들고 배포하라

실제로 작동하는 파이썬 코드도 제시하고, 개념 설명도 훌륭하다. 책 내용을 익히면 바둑봇 직접 구현할 수 있도록 안내한다. 바둑봇이 작동하는 데 필요한 데이터 포맷, 배포, 클라우드 컴퓨팅 같은 주제도 자세히 다룬다. 온라인 바둑 서버에 봇을 등록하는 방법도 알려준다. 한 마디로 이 책은 현대 인공지능과 머신러닝을 장착한 바둑봇을 만드는 전 과정을 알려준다.

 

★ 다루는 핵심 내용

1. 스스로 학습하는 게임 AI를 만들고 훈련하기

2. 고전 게임 AI를 딥러닝으로 개선하기

3. 딥러닝에 사용하는 신경망을 구현하기

 

★ 장별 요약

[1부 기초]

책의 나머지 부분에서 다루는 주요 개념을 소개한다.

 

_1장 딥러닝을 향해 - 머신러닝 기초, 인공지능, 머신러닝, 딥러닝의 고차원적인 개요를 가볍게 제시한다. 이들이 어떻게 서로 연관되어 있는지, 그리고 이 분야의 기술로 할 수 있는 것과 없는 것을 설명한다.

 

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

바둑의 규칙을 소개하고 컴퓨터에 게임을 가르칠 때 무엇을 해야 하는지 설명한다.

 

_3장 첫 번째 바둑봇 만들기

바둑판을 만들고, 그 위에 바둑돌을 놓고, 풀게임을 하는 부분까지 파이썬으로 구현한다. 이 장을 마치면 가장 단순한 바둑 AI가 실제로 작동하게 만들 수 있다.

 

[2부 머신러닝과 게임 AI]

강력한 바둑 AI를 만들 수 있는 기술적, 이론적 기반을 설명한다. 특히 알파고에서 매우 효과적으로 사용한 트리 탐색, 신경망, 강화학습의 세 가지 기법을 소개한다.

 

_4장 트리 탐색을 통한 경기

경기의 각 차례에서 탐색과 평가를 하는 알고리즘을 전반적으로 설명한다. 단순한 무작위 대입 미니맥스 탐색 방식을 만드는 것부터 시작해서 알파-베타 가지치기, 몬테카를로 탐색 같은 고급 알고리즘까지 만들어본다.

 

_5장 신경망 시작하기

인공 신경망을 실질적으로 소개한다. 손으로 쓴 숫자를 맞추는 신경망을 파이썬으로 처음부터 구현해볼 것이다.

 

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

바둑 데이터가 이미지 데이터와 어떤 유사한 특징을 가지고 있는지 설명하고 수 예측을 위한 합성곱 신경망을 소개한다. 이 장에서는 모델을 만드는 데 유용한 딥러닝 라이브러리인 케라스를 사용한다.

 

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

앞의 두 장에서 얻은 지식을 사용해서 심층 신경망 바둑봇을 만든다. 아마추어 게임에서 가져온 실제 경기 데이터로 봇을 훈련시키고 이 방법의 한계를 지적한다.

 

_8장 맨땅에 봇 배포하기

봇을 외부에 제공해서 사용자 인터페이스를 통해 사람이 봇과 경기를 할 수 있도록 할 것이다. 이때 봇이 로컬과 바둑 서버 두 곳에서 다른 봇과 어떻게 경기를 하게 만드는지도 배울 것이다.

 

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

강화학습 기초와 이를 바둑에서 혼자 경기를 하는 데 어떻게 사용할 수 있는지 알아본다.

 

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

7장의 수 예측을 개선하는 데 필수적인 방법인 정책 경사(policy gradients)를 차근차근 소개한다.

 

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

4장의 트리 탐색과 결합했을 때 매우 강력해지는 수단인 가치 기법(value method)을 사용해서 바둑판에서의 위치에 값을 매기는 방법을 살펴본다.

 

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

바둑판에서의 위치와 다음 수가 주어졌을 때의 장기적인 가치를 예측함으로써 다음 수를 효과적으로 고를 수 있도록 하는 기법을 소개한다.

 

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

앞서 개발한 모든 구성 요소를 알파고처럼 애플리케이션으로 합치면 그 성능이 최고에 달한다. 알파고와 알파고 제로를 설명한다

 

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

기술적 및 수학적으로 이 책의 최고점이라고 할 수 있다. 이 장에서는 처음에는 신경망으로 바둑 데이터를 훈련하고(5~7장) 이를 통해 혼자 경기를 치르게 하고(8~11장) 여기에 똑똑한 트리 탐색 방식(4장)을 결합하여 초인 수준의 바둑봇을 만드는 방법을 논의한다.

 

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

이 책의 마지막 장으로, 보드게임 AI의 현재 최신 동향을 다룬다. 알파고 제로의 동력인 트리 탐색과 강화학습의 혁신적인 조합을 자세히 살펴볼 것이다.

 

[부록 A 수학 기초]

선형대수학과 미적분학의 기초를 되짚어보고, 파이썬 라이브러리인 NumPy로 몇 가지 선형대수를 나타내는 방법을 보여준다.

 

[부록 B 역전파 알고리즘]

5장에서 사용했던 다수의 신경망에서의 학습 과정을 보다 수학적으로 자세히 설명한다.

 

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

바둑을 더 알고자 하는 독자를 위한 추가 자료를 제공한다.

 

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

봇을 아마존 클라우드 서버에서 동작하게 하기 위한 내용을 안내한다.

 

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

우리가 만든 봇을 전 세계의 바둑 선수들이 시험해볼 수 있도록 유명한 바둑 서버에 연결하

는 방법을 설명한다.

 

추천사

“현대 인공지능과 머신러닝을 읽기 쉽고 이해하기 쉽게 소개한다.” _토레 그레펠, 딥마인드 수석 연구원

 

“머신러닝을 가르치는 용도로 바둑을 사용하다니! 감동적이고 고무적이다. 적극 추천한다.” _버크 후프나겔, 도허티 비즈니스 솔루션

 

“현 시대 가장 흥미로운 기술을 근사하게 소개한다.” _헬무트 하우실트, HSEC

독자리뷰

오탈자 보기

부록/예제소스

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원 무료배송
닫기

리뷰쓰기

닫기
* 상품명 :
딥러닝과 바둑
* 제목 :
* 별점평가
1 2 3 4 5
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
딥러닝과 바둑
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
딥러닝과 바둑
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1