이전

리뷰 (10)

한줄평
평점 분포
  • 리뷰 총점10 80%
  • 리뷰 총점8 20%
  • 리뷰 총점6 0%
  • 리뷰 총점4 0%
  • 리뷰 총점2 0%
연령대별 평균 점수
  • 10대 0.0
  • 20대 10.0
  • 30대 10.0
  • 40대 9.0
  • 50대 9.0

포토/동영상 (5)

리뷰 총점 종이책
나는 바둑 기사를 꿈꾸던 개발자다. 'ㅅ')
"나는 바둑 기사를 꿈꾸던 개발자다. 'ㅅ')" 내용보기
이 책은 내게 다른 도서들과는 좀 의미가 다르다. 'ㅅ')지금 나는 개발자의 삶을 살고 있지만, '이세돌' 기사가 바둑을 수련했던 '권갑용 바둑 학원' 에서 중학교 시절 바둑을 수련하며 바둑 기사의 꿈을 키우던 사람이기 때문이다. 반포동의 대표 중국집 중 하나인 '다빈' 근처에 자리한 그 바둑 도장에서 나는 수많은 바둑 괴물 꼬꼬맹이들과 매일같이 커다란 바둑판 앞에 앉아서 요구
"나는 바둑 기사를 꿈꾸던 개발자다. 'ㅅ')" 내용보기

이 책은 내게 다른 도서들과는 좀 의미가 다르다. 'ㅅ')


지금 나는 개발자의 삶을 살고 있지만, '이세돌' 기사가 바둑을 수련했던 '권갑용 바둑 학원' 에서 중학교 시절 바둑을 수련하며 바둑 기사의 꿈을 키우던 사람이기 때문이다. 반포동의 대표 중국집 중 하나인 '다빈' 근처에 자리한 그 바둑 도장에서 나는 수많은 바둑 괴물 꼬꼬맹이들과 매일같이 커다란 바둑판 앞에 앉아서 요구르트, 아이스크림, 때로는 핫도그를 씹으면서 머리를 쥐어짜며 바둑을 두었다.


내가 고등학교에 진학할 때 즈음, 어머니는 내게 '너 고등학교 가서도 계속 바둑 둘거니?' 질문을 던지셨고, 외벌이 가정에서 네임드 바둑 학원에 바치는 비용이 적지 않아 가계에 부담이 되는 것이 싫었던 나는 '바둑은 나이 들어서 둬도 될 것 같아요. 이제 그만 둘게요.' 라고 말했다.


그리고, 바야흐로 2020년 나이 40살이 된 내 앞에 이런 책이 놓여 있군요. 'ㅅ') 헙스.

감회가 새롭스.


딥러닝 책들은 어렵다. 케라스나 텐서플로나 익히기 쉽지 않고, 공부하다 보면 수많은 종류의 좌절 펀치를 맞게 된다. 사용자 인터페이스를 주구장창 개발하면서 살아온 내게는 다른 영역으로 느껴지는 용어, 공식, 수학의 무서운 쓰나미. 봐라. 심지어 이 책에도 이렇게 쓰여 있다. '이 책은 딥러닝과 강화학습을 실질적으로 소개한다. 이 책을 최대한 활용하려면 파이썬 코드를 읽고 쓸 줄 알아야 하며, 선형대수학과 미적분학에 익숙해야 한다.' 이 전제가 이미 어렵다는겁니다. 안 그렇소. 'ㅅ') 흠흠.


사실 본인의 경우는 딥러닝 관련 책들을 보다가 현재는 공부를 접어둔 상태인데, 이 책의 'part 1. 첫번째 바둑 봇 만들기' 단계를 훑어보면서 다시금 딥러닝을 공부해보고 싶은 마음이 불 같이 타올랐다. 이 책은 하나의 거대한 튜토리얼과 같이 구성되어 있어 딥러닝 잘 몰라도 시간이 걸려도, 와이프 몰래 새벽에 공부해도 괜찮을 것 같아서 좀 더 살펴보려고 한다.


책을 전체적으로 훑어본 결과, 예제를 진행하는데 필요한 관련 기반 지식들에 대한 설명은 매우 친절하다. 실제로 이 책의 지식을 익히고 이해하고 구현 예제를 완주하려면 몇 달이고 걸리겠지만, 개발자에게 이미 흥미로운 주제가 아니겠는가. 당신이 바둑에 관심이 있거나 나처럼 바둑을 사랑하는 사람이라면 더 없이 즐겁게 읽을 수 있을 것이다. 'ㅅ')a 긁적. // 물론 책임은 안 짐. ㅋ


.

s********f 2020.07.01. 신고 공감 5 댓글 1
리뷰 총점 종이책
딥러닝과 바둑
"딥러닝과 바둑" 내용보기
이 책이 다루는 내용은 한 마디의 질문으로 요약할 수 있다.“알파고는 어떻게 만드는 걸까?”알파고 덕분에 AI를 심도있게 연구하고 학습하는 이들이 많아졌지만, 정작 알파고와 유사한 봇을 개발한 사람은 극소수가 아닐까 싶다. 당장 업무와 산업 분야에 관련되거나 취업과 관련된 지식이 아닐뿐더러 게임 분야에 관심이 없거나 특히 바둑에 대한 지식이 전무한 사람은 넘어야 할 장벽
"딥러닝과 바둑" 내용보기


표지


이 책이 다루는 내용은 한 마디의 질문으로 요약할 수 있다.

“알파고는 어떻게 만드는 걸까?”

알파고 덕분에 AI를 심도있게 연구하고 학습하는 이들이 많아졌지만, 정작 알파고와 유사한 봇을 개발한 사람은 극소수가 아닐까 싶다. 당장 업무와 산업 분야에 관련되거나 취업과 관련된 지식이 아닐뿐더러 게임 분야에 관심이 없거나 특히 바둑에 대한 지식이 전무한 사람은 넘어야 할 장벽이 많기 때문일 것이다.

그럼에도 알파고를 구현하는 것은 큰 의미가 있다. AI 열풍을 견인한 기술의 실체를 최대한 밑바닥까지 들여다 볼 수 있는 지적 호기심을 채울 수 있을 뿐더러, 다소 부풀려진 AI에 대한 환상을 제대로 측정할 수 있는 기술적 안목을 얻을 수 있고, 우주의 나이보다도 훨씬 많은 경우의 수와 불가능에 가까운 연산에 도전해 볼 수 있다는 것은 분명 흥미로운 일이다.

복기(復碁)

바둑에는 복기라는 용어가 있다. 게임에서 패배한 경우 결정적인 패착수를 둔 상황으로 돌아가 A, B 중 어떤 수를 선택해야 했는지 곱씹어 보는 과정이다.

재미있는 것은 인생에도 비슷한 느낌의 선택을 필요로 하는 순간이 온다는 점이다. 사람마다 다르겠지만 개인적으로 선택의 순간에서 판단이 어려울 때 바둑을 두곤 했다. 착수 A, B 선택의 순간에서 드는 느낌이 묘하게 인생에서의 선택지와 비슷한 색상, 감, 냄새 같은 것이 느껴질 때가 있는데 승패 결과에 따라 인생에서도 비슷한 느낌의 선택지를 고른다.

정작 알파고가 놀라웠던 것은 이세돌 9단에게 승리한 것이 아니라 이 표현 못할 감의 영역을 어떤 방법으로 수치화했는지 궁금해서였다. 그 방법을 알면 인생의 답을 얻는데 큰 도움이 되지 않을까라는 호기심이 계기가 되어 AI와 관련된 서적이나 논문을 읽는 것이 일상의 취미가 되어버렸다.

잠시 바둑의 이야기를 구구절절 늘어놓은 것은 두가지 목적에서다. 하나는 바둑을 잘 모르는 분들께 알파고를 구현해보는 것이 얼마나 의미가 될 수 있는지 강조하고 싶었고, 다른 하나는 독자분들이 본 도서의 진가를 몰라보고 일본식 전통 의상을 입고있는 표지에 비호감 혹은 고리타분함이라는 선입견이 생겼을까 우려되었기 때문이다.

베타고(BetaGo)

본 도서의 두 저자 막스와 케빈은 알파고의 동작 원리에 대한 궁금증을 파헤치고자 알파고와 유사한 오픈소스 바둑봇인 베타고를 만든 장본인들이다. 베타고의 성능이 궁금하여 직접 겨뤄봤는데 나는 고작 타이젬 바둑 2단의 실력이기에 베타고의 실력을 가늠할 수는 없었지만 초고수의 느낌은 지울 수 없었다.

더불어 딥마인드 알파고팀의 대표인 소레이 그리펠이 알파고부터 이후의 확장에 대한 여정과 더불어 현대 AI를 구성하는 주요 알고리즘을 익힐 수 있다고 추천사를 남겼기에 더욱 책의 내용에 신뢰가 갔다. 책을 다 읽고난 지금 시점에서는 신뢰의 수준을 넘어서 이 책이 없었다면 개인적으로 알파고를 만드는 길이 얼마나 요원했을지 아찔한 생각이 들어 감사의 마음이 절로 들었다. 이전에도 이미 알파고를 만들고 말겠다는 덕질의 일환으로 여러 책과 논문, 레퍼런스 및 오픈소스를 읽어왔으나 생각보다 다양한 기술들이 필요하고 고민거리가 많아 진척이 쉽지 않았기 때문이다.

책의 난이도와 선수지식

제목에서 알 수 있듯 본 도서의 내용은 조금 어렵다. 먼저 기본적인 파이썬 및 프로그래밍 관련 지식이 필요하다. 파이썬의 문법은 물론 배포, Flask, AWS 배포와 연동, 프로토콜 지식 등이 등장한다.

또한 일정 수준 이상의 딥러닝 지식이 필요한데 CNN 모델과 SGD 보다 성능이 좋은 에이다그래드, 에이다델타와 같은 경사법을 이해할 수 있는 수준이면 좋다. 마지막으로 행위자-비평가 학습(Actor-Critic Learning) 및 DQN 등의 강화학습에 대한 선수 지식이 있다면 책을 이해하는데 순조로울 것으로 예상한다. 더불어 바둑에 대한 도메인 지식(?)이 은근히 중요하다.

대신 바둑을 좋아하는 사람이라면 본 도서에 충분히 도전할만하다. 즐기는 자는 천재도 노력하는 사람도 이길 수 없다고 논어(論語) 옹야편(雍也篇)에 언급되어 있으니 말이다. 마찬가지로 강화학습이나 딥러닝의 입문을 뗀 분들도 도전해볼만 하다. Python과 알고리즘에 자신있는 분들도 마찬가지이다.

세가지 경우에 모두 해당되지 않는 분일지라도 반드시 알파고를 만들겠다는 의지가 강력한 분이라면 도전을 권유드린다. 1장에는 딥러닝에 대한 기초 설명이, 2장에는 바둑의 룰에 관한 설명이, 부록에는 선형대수와 미적분 등에 대한 설명이 언급되어있어 도전해볼 만하다. 부족한 부분은 검색이나 유튜브 등을 통해 보완하며 책을 읽어나간다면 최단 시간 내 가장 큰 효과를 얻을 수 있을 것이다.


본 도서가 가지는 장점을 요약하면 다음과 같다.

  • 알파고를 실제로 구현할 수 있다.
    저자들이 실제 베타고를 구현해 본 경험이 있기 때문에 연구 및 구현 능력에 의구심을 품지 않아도 된다.

  • 베타고의 성능을 높이기 까지의 시행착오와 일련의 과정들이 잘 녹아있다.
    처음부터 알파고제로 수준의 동작방식이나 원리를 설명하고 구현체의 소스를 설명하는 방식으로 구성되었다고 한들 충분히 가치있는 책이 되었을것이다.

    하지만 본 도서는 한 단계 더 나아가 저자들이 겪었던 시행 착오들을 언급하고 있다. 그 과정에서 왜 딥러닝 모델을 CNN으로 바꾸었는지, Input 데이터의 평탄화 작업(Flatten)을 왜 회피하였는지, 몬테카를로 트리 탐색 기법을 강화학습과 결합하여 사용하였는지 등의 그동안 궁금했던 지식들을 함께 익힐 수 있었다.

    점 A 하나만으로는 벡터 혹은 함수를 만들 수 없고, 미래의 점 C는 예측이 어려워진다. 본 도서의 구성은 점 A는 물론 A에 대한 개선안인 점 B를 설명하기에 C를 유추해볼수도 있고 나중에 우리가 성능을 보완할 여지인 점 D도 어렵지 않게 추정해볼 수 있다. 더불어 개선 과정에서 딥러닝, 탐색 알고리즘, 강화학습 등 각각의 활용 방법이나 필요성의 진정한 의미에 정통할 수 있다.

  • 실 서비스를 위한 고민의 흔적들
    • 실제 봇과의 대국을 위한 원시 CLI(명령 커맨드 라인 방식) 부터 WEB Front-End UI 방식까지 인터페이스 또한 상세히 다룸으로써 아는데 그치는 수준이 아닌 서비스가 가능한 BOT을 구현할 수 있다.
    • GPU 자원이 부족한 독자를 위해 모델 다운로드 등의 대안이 제시될 뿐만 아니라 최소 과금체계로 AWS 클라우드를 활용할 수 있도록 가이드한다.
    • 사람과의 대국 수준을 뛰어넘어 다른이가 만든 BOT과의 대국 및 성능평가 방법도 기술한다.
    • 프로기사 수준의 기보를 학습하는 방법이 자세히 설명되어있다. SGF 대국 데이터를 다운받아 전처리 후 활용하는 방법을 통해 실무에 적용할 수 있는 전처리 기법도 배울 수 있다.
    • 바둑 전용 프로토콜 GTP 및 Front-End 기술도 활용한다.
  • 번역 수준이 뛰어나다.

마지막으로 본 도서의 주요 내용을 요약하며 리뷰를 마친다.

  • 딥러닝과 바둑의 기초 (1장 ~ 2장)

  • 원시 바둑봇 만들기 (3장)
    • 바둑의 게임 수행에 필요한 전반적인 기능을 모두 구현한다.
      • Enum(흑,백), 보드, 게임 국면상태(GameState) 등 필수 기능 구현
      • 동형반복 규칙을 활용한 패, 돌의 이음 파악 방법, 착수/한수쉼/던지기 등 규칙 구현
      • 조브리스트 해싱 알고리즘을 이용한 속도 개선
    • 사람 및 다른 BOT과의 대국 가능첫번째
  • 트리 탐색 (4장)
    • 결정론적 완전 정보 게임에 대한 이해
    • 미니맥스
      • 모든 경로를 탐색하기에 정확도는 높지만 연산속도에 치명적. 틱택도같은 매우 간단한 게임에만 적용가능하다.
      • 위치 평가 함수를 활용한 깊이 가지치기
    • 알파-베타 가지치기
      • 충분히 최악인 수가 파악되었으면 상대의 수는 더이상 고려할 필요가 없으므로 가지치기를 통해 연산량을 줄일 수 있다.
    • 몬테카를로 트리 탐색(MCTS)
      • 사전 도메인 지식 없이도 임의의 롤아웃을 통해 상태 평가가 가능
      • 탐색할 가지를 선택하기 위해 트리 신뢰도 상한선(UCT) 방식을 활용
  • 딥러닝 (5장 ~ 8장)
    • 신경망의 기본 : MNIST 구현, 역전파, 손실함수, 경사하강법, 활성화함수 등
    • 바둑용 신경망 설계 : Encoder 구현, MCTS를 활용한 기보 생성, Keras 학습, CNN 모델 구현, 손실함수 및 활성화함수 개선 등
    • 학습 : SGF 전처리 및 훈련, 에이다그래드를 활용한 신경망 최적화
    • 두번째 바둑봇 만들기
      • HDF5 포맷을 이용한 예측 에이전트 생성
      • FLASK를 활용한 HTTP 프런트엔드 앱 개발
      • GTP 바둑 프로토콜 사용, AWS 배포, OGS 온라인 바둑서버 연동 등두번째
  • 강화학습 적용 (9장 ~ 12장)
    • 상태, 행동, 보상 등 강화학습의 기본 정리
    • 출력 결과에 대한 확률 분포로부터 표본을 추출하여 정책 신경망 구현
    • 자체 대국을 통한 실험 데이터 수집
    • 정책 경사 학습 : 승리를 이끈 모든 수의 확률을 높이고, 패배에 일조한 수의 확률을 낮춤
    • 교차 엔트로피 손실함수 적용
    • 행동-가치 함수, Q-학습, 행위자-비평가 학습을 통한 정책 함수 및 가치 함수 활용 등
  • 알파고와 알파제로 (13장 ~ 14장)
    • 정책 신경망 2개와 가치 신경망 1개 구현
    • 빠른 정책 신경망과 강한 정책 신경망
    • 시뮬레이션 방식, Q값, 유틸리티 값 등 동작방식 구현
    • 강화학습과 트리 탐색의 결합
    • 디리클레 잡음, 배치정규화, 잔차 신경망 구현

구성도



n********g 2020.07.05. 신고 공감 1 댓글 0
리뷰 총점 종이책
[도서 리뷰] 딥러닝과 바둑
"[도서 리뷰] 딥러닝과 바둑" 내용보기
이 책 표지를 보고 누구나 같은 생각을 하고 계실꺼에요. 앗! 이세돌과 알파고, AI... 혹시 이 책을 읽으면 나도 알파고 같은 바둑 봇을 만들 수 있지 않을까? 다운 받은 소스 코드를 그대로 실행시키면 바둑 봇이 잘 돌아갑니다. 우리가 그럴려고 이 책을 선택하려고 하는 것은 아니잖아요. 제가 생각할 때는 파이썬 중급, 강화 학습 중급자가 아니면, 다소 어려울 수 있습니다. 이 책
"[도서 리뷰] 딥러닝과 바둑" 내용보기

 

이 책 표지를 보고 누구나 같은 생각을 하고 계실꺼에요. 앗! 이세돌과 알파고, AI... 혹시 이 책을 읽으면 나도 알파고 같은 바둑 봇을 만들 수 있지 않을까? 다운 받은 소스 코드를 그대로 실행시키면 바둑 봇이 잘 돌아갑니다. 우리가 그럴려고 이 책을 선택하려고 하는 것은 아니잖아요. 제가 생각할 때는 파이썬 중급, 강화 학습 중급자가 아니면, 다소 어려울 수 있습니다. 이 책에서 이제 처음 딥러닝을 하시는 분들을 위해 하나하나 설명하지 않습니다.

 

적절한 이미지와 설명이 들어간 것을 볼 수 있습니다.

 

이 책이 처음부터 바둑과 강화학습이라는 주제에 대해서 차근차근 설명하는 것은 맞습니다. 그런데, 그 구현체인 파이썬에 대한 설명이 대략적으로 나와 있습니다. 그래서, 파이썬의 초급 이상은 되어야 소스 코드 하나하나 뜯어서 이해할 수 있습니다. 케라스도 텐서플로 공식문서를 따라, 하나 하나 따라하고 익히셔야, 각 함수의 인수를 이해하실 수 있습니다. 간략하게 설명해주셨지만, 선수학습으로 케라스 책도 먼저 공부하시는 것을 추천드립니다. 문제는 강화학습인데, 바둑에 맞추어서 처음부터 잘 설명해주십니다. 강화학습의 여러 핵심 주제들이 바둑이라는 예제에 맞추어서 적절한 타이밍에 잘 들어가 있습니다. 그런데, 강화학습에 대한 일반 기초 이론적인 것들이 군데 군데 실습 때 등장하므로, 이론적으로 명확하게 공부해도 이해하기 어려운 기초 개념들이 사례에 그냥 녹아 있어 어~ 어~ 하면서 읽다가 보면, 왜 그 개념이 필요한지 놓칠 수 있습니다. 그래서, 강화학습 이론 책을 여러번 정독하신 후에, 이 책을 읽으면 아 내가 이해하기 어려웠던 이론적인 것들이 실제 이렇게 적용할 수 있구나 하는 해소감을 느낄수 있을 것 같습니다. 이런 기초적인 학습이 다 끝난 후에 딥러닝과 바둑을 보시면, 케라스 딥러닝 프레임워크로 바둑이란 것을 어떻게 컴퓨터에게 학습 시킬 수 있는 제대로 된 공부를 시작할 수 있을 것 같습니다. 저도 파이썬 공부가 약함을 느끼고, 다시 처음부터 소스 코드 하나하나 주석 달면서 코딩으로 강화학습을 배워보려고 합니다. 그러면 이 책이 주는 효용성이 매우 클 것 같습니다. 그리고 강화학습을 눈으로만 배우는 것이 아니라, 이 책의 실습 부록을 통해 클라우드를 통해 배포하면서, 실제 돌아가는 바둑 프로그램을 통해 배울 수 있습니다. 누군가에는 다소 어려운 책이 될 수도 있지만, 누군가에는 재미있는 도전이 될 수 있는 책 일 것 같습니다. 딥러닝, 강화학습을 배우시고, 어디에 어떻게 사용할지 고민하신다면, 이 책이 많은 도움이 될 것 같습니다. 바둑이지만, 하나부터 열까지 모두 들어 있는 느낌입니다.

 

k********1 2020.07.05. 신고 공감 1 댓글 0
리뷰 총점 종이책
딥러닝과 바둑
"딥러닝과 바둑" 내용보기
이책은 CNN, 강화학습, 몬테카를로 탐색 기술을 활용하여 인공지능 기반의 바둑봇인  알파고를 만들수 있도록 도와준다. Random 봇이라는 저급의 바둑 봇에서 시작하여 다양한 탐색기술을 적용, 바둑 기보에서의 신경망 학습을 통한 기력 향상, 강화학습을 통해 수를 읽고 바둑 형세를 읽는 법을 학습하여 , 마침내는 인간 바둑 고수의  고난이도 바둑 기술을 학습하여, 최고수의 경지에
"딥러닝과 바둑" 내용보기

이책은 CNN, 강화학습, 몬테카를로 탐색 기술을 활용하여 인공지능 기반의 바둑봇인  알파고를 만들수 있도록 도와준다. 

Random 봇이라는 저급의 바둑 봇에서 시작하여 다양한 탐색기술을 적용, 바둑 기보에서의 신경망 학습을 통한 기력 향상, 강화학습을 통해 수를 읽고 바둑 형세를 읽는 법을 학습하여 , 마침내는 인간 바둑 고수의  고난이도 바둑 기술을 학습하여, 최고수의 경지에 이르는 인공지능 바둑봇을 개발하기 위한 전반적인 인공지능 기법을 소개하고 있다. 


강화학습과 관련하여 DQN 과 Actor-Critic 기술을 활용하고 있으며, 실제 구현 예제를 살펴보는 일은 흥미진진하다. 


최신 CNN망과 강화학습을 응용한다면, 알파고보다 뛰어난 바둑봇을 구현할수 있으리라 기대한다.




다음은 이책의 목차이다.


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 온라인 바둑 서버에 봇 등록하기

    

p****l 2020.07.05. 신고 공감 0 댓글 0
리뷰 총점 종이책
딥러닝과 바둑
"딥러닝과 바둑" 내용보기
바둑계에 가장 큰 일은 '알파고와 이세돌'의 대국일 것입니다.많은 사람은 이세돌이 인공지능을 쉽게 이길 거로 생각했는데요.예상은 크게 다르게 알파고가 압도적으로 이겨버렸습니다.그 후 이세돌은 라디오스타에서 알파고와의 대국이 섬뜩했다며 프로기사 중 본인만 지는 것 아니냐는 생각에 당시 대국을 임했다고 했습니다.하지만 이후 많은 바둑 프로기사들이 처참히 알파고에 졌고
"딥러닝과 바둑" 내용보기

바둑계에 가장 큰 일은 '알파고와 이세돌'의 대국일 것입니다.

많은 사람은 이세돌이 인공지능을 쉽게 이길 거로 생각했는데요.

예상은 크게 다르게 알파고가 압도적으로 이겨버렸습니다.


그 후 이세돌은 라디오스타에서 알파고와의 대국이 섬뜩했다며 프로기사 중 본인만 지는 것 아니냐는 생각에 당시 대국을 임했다고 했습니다.


하지만 이후 많은 바둑 프로기사들이 처참히 알파고에 졌고 이세돌은 알파고를 이긴 사람이 됐습니다.


이 이야기는 불과 4년 전의 일입니다.

그럼 그전에는 인공지능인 존재하지 않았을까요?


아닙니다. 1950년부터 관련된 학문의 연구는 지속해서 되어 왔지만 쉽게 풀리지 않는 문제가 있었습니다.


바로 컴퓨팅 파워 문제였는데요. 실제 알파고가 얼마나 많은 컴퓨터를 이용했는지는 아직도 공개되지 않은 것으로 압니다.


다양한 기보를 학습하고 자신과 자신과 싸움을 하면서 지금은 더욱 파워풀한 AI가 된 것이죠.


이 딥러닝 바둑 세계를 안내해줄 책이 나와서 소개 해 드리려고 합니다.



1) 바둑 팬이 쓴 책

저자가 엄청남 바둑 덕후 입니다. 바둑을 사랑한 나머지 바둑의 내용을 딥러닝과 연결해서 쓴 책인데요.


이 책을 통해서 알파고에 들어간 기술을 다루면서 딥러닝을 쉽게 설명합니다.


바둑의 내용이 즐비한 것은 아니며, 기술에 대해 초점이 맞춰진 책입니다.



2) 수학 기초부터 강화학습에 대한 이론 한 권에

책의 내용의 절반은 강화학습에 대한 설명이 나옵니다.


강화학습에 대해서 자세히 이해하기 위해선 수학에 대한 기초 지식이 필요합니다.


부록에 따로 저자가 정리해서 쓴 내용이 있어서 먼저 읽어보고 책을 읽으시면 책을 읽는 데 도움이 될 것으로 보입니다.


또한 실제 아마존 클라우드에 올려서 훈련 및 배포까지 할 수 있어서 전반적으로 AI 개발을 맛을 볼 수 있습니다.



PS

딥러닝 기술이 점차 발전하고 있는데요.

앞으로 어떤 기술들이 더 나올지 기대됩니다.

간절히 바라는 것은 코로나 19 바이러스에 대한 백신이 나오길 바랍니다. ㅠㅠ


이 책은 강화학습을 하는 분 중 바둑에 관심 있는 분들에게 추천해드립니다.

w******m 2020.07.05. 신고 공감 0 댓글 0
리뷰 총점 종이책
딥러닝과 바둑 리뷰
"딥러닝과 바둑 리뷰" 내용보기
[Part 1 기초]CHAPTER 1 딥러닝을 향해 - 머신러닝 기초1.1 머신러닝이란 무엇인가1.2 사례로 보는 머신러닝1.3 딥러닝1.4 이 책에서 학습할 내용1.5 요약CHAPTER 2 머신러닝 문제로서의 바둑2.1 왜 게임인가2.2 간단한 바둑 소개2.3 접바둑2.4 추가 학습 자료2.5 머신에 무엇을 가르칠 수 있을까2.6 바둑 AI가 얼마나 강력한지 측정하는 방법2.7 요약CHAPTER 3 첫 번째 바둑봇 만들기3.1
"딥러닝과 바둑 리뷰" 내용보기

[Part 1 기초]

CHAPTER 1 딥러닝을 향해 - 머신러닝 기초
1.1 머신러닝이란 무엇인가
1.2 사례로 보는 머신러닝
1.3 딥러닝
1.4 이 책에서 학습할 내용
1.5 요약

CHAPTER 2 머신러닝 문제로서의 바둑
2.1 왜 게임인가
2.2 간단한 바둑 소개
2.3 접바둑
2.4 추가 학습 자료
2.5 머신에 무엇을 가르칠 수 있을까
2.6 바둑 AI가 얼마나 강력한지 측정하는 방법
2.7 요약

CHAPTER 3 첫 번째 바둑봇 만들기
3.1 파이썬으로 바둑 나타내기
3.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.5 몬테카를로 트리 탐색을 이용한 경기 상태 평가
4.6 요약

CHAPTER 5 신경망 시작하기
5.1 간단한 사례 : 손글씨 숫자 분류
5.2 신경망 기초
5.3 순방향 신경망
5.4 우리 예측은 얼마나 훌륭한가 : 손실 함수와 최적화
5.5 파이썬을 활용한 단계별 신경망 훈련
5.6 요약

CHAPTER 6 바둑 데이터용 신경망 설계
6.1 신경망용 바둑경기 변환
6.2 트리 탐색 게임을 신경망 훈련 데이터로 만들기
6.3 케라스 딥러닝 라이브러리 사용하기
6.4 합성곱 신경망으로 공간 분석하기
6.5 바둑 수 확률 예측하기
6.6 드롭아웃과 정류 선형 유닛을 사용해 더 깊은 신경망 구성
6.7 기능 결합을 통해 더 강력한 바둑 수 예측 신경망 만들기
6.8 요약

CHAPTER 7 데이터로부터 학습하기 : 딥러닝 봇
7.1 바둑 대국 기록 가져오기
7.2 딥러닝용 바둑 데이터 준비
7.3 인간의 대국 기록으로 딥러닝 모델 훈련하기
7.4 더 실질적인 바둑 데이터 변환기 만들기
7.5 적응 경사법을 사용해서 효율적으로 훈련하기
7.6 직접 실험하고 성능 평가하기
7.7 요약

CHAPTER 8 맨땅에 봇 배포하기
8.1 심층 신경망으로 수 예측 에이전트 만들기
8.2 바둑봇을 웹 프론트엔드로 제공하기
8.3 클라우드에서 바둑봇 훈련 후 배포하기
8.4 다른 봇과의 대화에 사용할 바둑 텍스트 프로토콜
8.5 로컬에서 다른 봇과 대결하기
8.6 바둑봇을 온라인 바둑 서버에 배포하기
8.7 요약

CHAPTER 9 체험을 통한 학습 : 강화학습
9.1 강화학습 주기
9.2 경험을 통해 어떻게 달라질까
9.3 학습 가능한 에이전트 만들기
9.4 자체 대국 : 컴퓨터 프로그램이 연습하는 방법
9.5 요약

CHAPTER 10 정책 경사를 사용하는 강화학습
10.1 임의의 경기에서 좋은 결정을 정의하는 방법
10.2 경사하강법을 사용해서 신경망 정책 수정하기
10.3 자체 대국 훈련 팁
10.4 요약

CHAPTER 11 가치 기법을 사용하는 강화학습
11.1 Q-학습을 사용한 대국
11.2 케라스로 Q-학습 만들기
11.3 요약

CHAPTER 12 행위자-비평가 방식 강화학습
12.1 어느 결정이 중요한지는 어드밴티지가 알려준다
12.2 행위자-비평가 학습용 신경망 설계
12.3 행위자-비평가 에이전트를 사용한 대국
12.4 경험 데이터로 행위자-비평가 에이전트 훈련하기
12.5 요약

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

CHAPTER 13 알파고 : 모든 AI 기법의 합작품
13.1 알파고의 신경망 훈련
13.2 정책 신경망으로 자체 대국 부트스트래핑
13.3 자체 대국 데이터로 가치 신경망 도출하기
13.4 정책 신경망과 가치 신경망을 사용한 탐색 개선
13.5 각자의 알파고를 훈련할 때 실제로 고민해야 할 부분
13.6 요약

CHAPTER 14 알파고 제로 : 강화학습과 트리 탐색의 결합
14.1 트리 탐색용 신경망 만들기
14.2 신경망으로 트리 탐색 안내하기
14.3 훈련
14.4 디리클레 잡음을 사용한 탐색 향상
14.5 더 깊은 신경망을 만드는 현대적 기법
14.6 추가 참고 자료
14.7 정리
14.8 요약

부록 A 수학 기초
부록 B 역전파 알고리즘
부록 C 바둑 프로그램 및 서버
부록 D 아마존 웹서비스를 사용한 봇 훈련 및 배포
부록 E 온라인 바둑 서버에 봇 등록하기


★ 다루는 핵심 내용

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

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

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

알파고에 대해 관심이 있거나, 알파고의 성능을 높이기 까지의 시행착오와 일련의 과정들이 궁금하신 분들께

이 책을 추천하고 싶다.



w*****l 2020.07.05. 신고 공감 0 댓글 0
리뷰 총점 종이책
딥러닝과 바둑
"딥러닝과 바둑" 내용보기
한빛미디어에서 나는 리뷰어다 활동을 통해 제공받은 책으로 작성되었습니다. 드디어 딥러닝과 바둑에 관한 책 몇 년 전에 뉴스에서 알파고 알파고 딥러닝 딥러닝 하길래 딥러닝에 관심을 갖게 되었다. 컴퓨터가 생각을 해서 바둑을 두고, 자신이 둔 경험을 바탕으로 스스로 학습한다는 점만 해도 충분히 매력적이고 흥미로운 분야였다. 중학교 때 부터 딥러닝과 머신러
"딥러닝과 바둑" 내용보기

한빛미디어에서 나는 리뷰어다 활동을 통해 제공받은 책으로 작성되었습니다.




드디어 딥러닝과 바둑에 관한 책




몇 년 전에 뉴스에서 알파고 알파고 딥러닝 딥러닝 하길래 딥러닝에 관심을 갖게 되었다.

컴퓨터가 생각을 해서 바둑을 두고, 자신이 둔 경험을 바탕으로 스스로 학습한다는 점만 해도 충분히 매력적이고 흥미로운 분야였다.

중학교 때 부터 딥러닝과 머신러닝에 관련된 책들을 찾아보며 언젠가 생각하는 컴퓨터와 바둑을 둘 날을 꿈꾸고 있었는데 그때부터 출간되는 책들은 텐서플로로 머신러닝 하기 이런 책들이 대부분이었고, 대다수가 중학생 머리로는 이해하기가 어려웠다.

그 후 신경망 첫걸음 책이 나오고 나서 나는 인공신경망을 조금씩 이해하기 시작했고, 혼자서 벡터, 미분에 관련된 책들을 찾아보며 공부하고 있었다.

이때쯤 인공지능 관련 수학책들이 나오기 등장했고, 그후 영어 그대로 쓰는 자연어 처리 책이 나오더니 한국어 자연어 처리 책이 등장하고, GAN관련 책들이 나오기 시작했다.

그렇게 요즘 딥러닝의 다양한 분야에 관한 책들이 나오기 시작하더니 드디어 바둑에 관한 책이 나왔다!

초등학교 저학년 때 바둑을 잠시 배우긴 했지만, 바둑이 쉽진 않은 게임인 건 알고 있었다.

하지만 원래 어려운거 시키라고 컴퓨터 같은걸 만든거니까..




저자:

막스 펌팔라

인공지능 관련 회사 skymind.ai의 데이터 과학자 겸 딥러닝 전문 엔지이너라고 한다.

동시에 딥러닝 플랫폼 aetros.com 공동 창업자.

케빈 퍼거슨

분산시스템, 데이터 과학 분야 18년 경력자..

현재는 아너의 데이터 과학자고, 구글, 미보등에서 일하셨다고 한다.

두분다 오픈소스 바둑봇 베타고 개발자라고 나와있다.

나중에 베타고에 대해 더 찾아봐야할 듯




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

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

CHAPTER 3 첫 번째 바둑봇 만들기

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

CHAPTER 4 트리 탐색을 통한 경기

CHAPTER 5 신경망 시작하기

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

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

CHAPTER 8 맨땅에 봇 배포하기

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

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

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

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

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

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

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

부록 A 수학 기초

부록 B 역전파 알고리즘

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

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

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




딥러닝 관련 도서인 만큼 책 초반에선 딥러닝과 머신러닝에 관한 내용도 설명한다.

예전 책들은 "딥러닝이 뭔진 알고 딥러닝에 관한 책을 읽겠지?" 형식이라 딥러닝과 머신러닝의 정의에 대해 생략하거나 딥러닝의 쓰임새, 혹은 머신러닝의 기법들만 설명하는 책들이 많았는데 요즘들어 딥러닝은 머신러닝의 한 종류이고, 머신러닝의 종류에는 무엇무엇이 있다.. 이렇게 자세하게 설명하는 책들이 많아지는 것 같아 좋은 것 같다.

자소서 같은거에 '딥러닝과 머신러닝에 흥미를 갖고' 라고 적으면 항상 "딥러닝이 뭔가요?" 라는 질문이 자주 나오는데 이럴 때 정확한 답을 하지 못할 뻔 한적이 있었다.

예전엔 관련 분야 종사자 대상인 경우가 많아서 자세한 정의나 설명이 생략된 경우가 많았는데 요즘엔 일반인들도 많이 관심을 갖는 분야라 그런지 정의나 자세한 설명이 많아지는 게 느껴진다.




그리고 부록에선 수학과 역전파 알고리즘에 관한 설명이 포함되어 있.

이미 공부했다고 해도 수학이란게 언제든지 햇갈릴 수 있는거다.

이책의 수학 관련 부록에선 수학만 설명하는 게 아니라 수학을 바로 파이썬으로 나타내서 설명한다. 복잡한 수식으로 나타낸 것 보다 보기 좋고, 바로 응용하기도 좋을 것 같다는 생각이 들었다.

딥러닝에만 관한 책이 아니다보니 기본적인 역전파 알고리즘에 책의 초반에 많은 페이지를 할애하기엔 어려운 점이 있다.

이미 딥러닝 관련 도서를 많이 읽어봤다면 자주 접했을 알고리즘이기도 하니까..




대신 바둑의 기본적인 룰과 바둑의 규칙을 파이썬으로 어떻게 나타낼지에 관해 설명한다.

대국 과정에서 일어나는 다양한 상황을 파이썬으로 나타내는거를 막상 해보려니까 너무 복잡해지는 것 같은 기분이 들었다.

책에서 모든 기법을 나타낸 건 아닌 것 같은데 꽤 흥미로운 파트였다.

바둑돌의 위치나 현재 상황을 기록하고, 판단하는 프로그램만 만들어도 다양한 분야의 게임 제작에 도움이 될 것 같다.

바둑의 경우엔 여기서 더 복잡한 이론이 추가되야 하지만, 이미 격자 무늬 판에 돌을 두는 프로그램을 만들면 이거를 응용해 오목 같은 건 조금만 머리를 굴리면 가능할 것 같기도 하다.




그리고 결론적으로 이책은 딥러닝과 바둑에 관한 책이다.

나머지 중간 부분은 흔하게 볼 수 있는 mnist를 통한 학습에 대해 공부하는데 이 책만의 독특한 점이라고 하면, 딥러닝에 관한 내용이 하나 나오고 나면 바로 바둑에 연관지어 조금씩 프로그램을 완성해 나간다.

그렇게 어떻게 알파고 같은 바둑 프로그램을 만드는지에 대해 배우고 나서 부록의 마지막 부분을 통해 아마존 AWS로 바둑봇을 호스팅 하고 온라인 바둑 서버에 직접 만든 바둑봇을 배포하는 과정도 나와있다.




시험기간과 겹치는 바람에 이책에 나온 모든 예제를 따라해 볼 수는 없었지만, 알파고 비슷한 무언가를 만들어 보는 것을 배우는건 상당히 재미있는 일 같다.

나중에 시간내서 끝까지 따라해 봐야겠다.


++표지가 왕년에 바둑 좀 둔 중국인인 줄 알았는데 그냥 화려한 옷 입은 일본인이라고 한다.

별로 마음에 안든다.


원서 표지부터 이랬는지도 모르겠는데 한국에서 출판할 때는 개로왕과 도림스님을 표지모델로 쓰는것도 괜찮을 것 같은데..




a*******9 2020.07.05. 신고 공감 0 댓글 0
리뷰 총점 종이책
[Book] 딥러닝과 바둑
"[Book] 딥러닝과 바둑" 내용보기
인공지능이 바둑 영역에서 본격적으로 활용되기 시작한 것은 4년전 알파고와 실제 인간과의 대결 이후였을 것이다. 그 이전에는 인공지능이 체스에 활용된 케이스가 있었지만, 제한된 영역에서 움직이는 체스와는 다르게 바둑에서는 활동 영역도 넓고, 무엇보다도 형세를 이해하고 몇수 뒤의 미래를 예측해야했기 때문에, 인공지능을 해결하기 어려운 분야라고 여겨졌었다. 그런 영역을
"[Book] 딥러닝과 바둑" 내용보기

 인공지능이 바둑 영역에서 본격적으로 활용되기 시작한 것은 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


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


k********y 2020.07.05. 신고 공감 0 댓글 0
리뷰 총점 종이책
알파고의 원리를 파악하자
"알파고의 원리를 파악하자" 내용보기
이번에 읽어 본 책은 한빛미디어의 딥러닝과 바둑 입니다.2016년 알파고가 이세돌 9단과의 경기에서 4승 1패로 승리를 하게 되면서 인공지능의 무서움을 알게 되었는데요.경우의 수가 19 * 19 = 361 에서 각각의 경우를 계산 해야 되기 때문에 361! 의 수가 나오고 이 수는 우주의 모래알 갯수 만큼이나 많은 경우의 수라는 것을 깨닫고 현존하는 기보를 암기해서 거기에 맞춰 게임을 할
"알파고의 원리를 파악하자" 내용보기

이번에 읽어 본 책은 한빛미디어의 딥러닝과 바둑 입니다.

2016년 알파고가 이세돌 9단과의 경기에서 4승 1패로 승리를 하게 되면서 인공지능의 무서움을 알게 되었는데요.

경우의 수가 19 * 19 = 361 에서 각각의 경우를 계산 해야 되기 때문에 361! 의 수가 나오고 이 수는 우주의 모래알 갯수 만큼이나 많은 경우의 수라는 것을 깨닫고 현존하는 기보를 암기해서 거기에 맞춰 게임을 할 수는 없다는 것을 알고 정말 스스로 생각했다는 것이 정말 놀라웠거든요.

책의 구성을 보면 위와 같이 1부 기초에서는 머신러닝의 기초를 배우고 첫번째 바둑봇을 만들어 보게 됩니다.

사람과 게임하는 바둑봇(black 사람, white 봇)

사람이 black(X) 와 봇이 white(0) 게임을 하는 모습입니다.

아직은 미완성된 작품이지만 기본적으로 바둑의 규칙이 적용되어 사람과 봇의 대결하는 모습을 볼 수가 있습니다.

이러한 봇이 머신러닝과 결합하면서 점점 더 강해지는 것을 본다면 너무 멋질 것 같다는 생각을 해 보게 되네요.

2부에서는 신경망을 공부하고 신경망과 바둑을 접목하는 과정을 하나 하나 따라 해 볼수가 있습니다.

먼저 오늘날 딥러닝의 중심에 있는 알고리즘인 인공신경망(ANN)의 핵심을 알아보고 이러한 신경망을 바둑 데이터용에 어떤 식으로 적용할지 신경망을 설계해 보게 됩니다. 딥러닝 라이브러리 중 케라스를 이용해서 바둑의 수를 예측하고 어떤 수에 놓는 것이 가장 좋을지를 예측하고 분석하게 됩니다.

위의 그림예제를 보면 신경망을 이용하여 바둑돌의 다음 수를 예측하는데 필요한 정보를 뽑아 낼 수 있다는 것은 상당히 흥미로운 일이네요.

이러한 모델을 응용하여 KGS의 바둑대국 기록을 다운로드 해서 훈련을 시켜 보고 이러한 바둑봇을 인간의 대국기록을 통해 딥러닝 모델을 훈련시키는 부분은 인공지능이 어떻게 동작을 하는지 궁금해 하시는 분들에게 무척이나 도움이 될것 같네요.

또한 강화학습은 누가 이것이 올바른 길이라는 것을 알려 주는 것이 아니고 체험을 해 보고 이 길이 아닌가 보네 그러면 다른 길을 가보면 어떨까 하면서 모든 길을 다 가 보면서 점점 더 좋은 것을 경험을 통해 알아 가는 것처럼 이러한 봇을 지속적으로 훈련을 통해 약한 바둑봇이 강한 바둑봇을 만들어 가는 과정을 볼 수가 있는데요.

이러한 원리가 알파고의 원리라는 것이 참으로 신기 할 수 밖에 없었습니다.

이 책을 읽으면서 이 책에서 제공해 주는 모든 것을 다 깨닫지는 못했지만 정말 바둑이라는 무한한 경우의 수를 사람이 생각하는 것과 비슷한 방법으로 알고리즘을 추출해 나가는 것들을 바라보며 앞으로 배우고 나아가야 할 일이 정말 너무 많은 것을 느끼게 되었네요.

이 책은 500페이지 분량이지만 내용은 정말 무량대수 만큼이나 많은 내용을 담고 있는 느낌을 받았네요.

하지만 기회가 될때 한땀 한땀 코딩을 하면서 그 원리를 익히고 이 책에서 주고자 하는 원리를 깨닫는다면 바둑봇이 아닌 또 다른 인공지능 봇도 만들어 내지 않을까 하는 생각이 들었네요.

이 책은알파고의 탄생이 궁금하신 분들에게 정말 많은 도움이 될것같아요.


e****2 2020.06.29. 신고 공감 0 댓글 0
리뷰 총점 종이책
나만의 알파고를 만들어보자.
"나만의 알파고를 만들어보자." 내용보기
현재 인공지능 분야에서 가장 인기있는 주제 중 하나인 딥러닝 + 강화학습을 바둑을 통해 배울 수 있는 책이다. 알파고를 만든 딥마인드가 꾸준히 시도하고 있듯이, 딥러닝과 강화학습을 게임이라는 수단에 엮는다. 내용은 인공지능 입문자에게는 어렵다. 최소한 파이썬 중급 이상으로 코드와 파일을 다루는데 익숙해야 하며, 강화학습 입문서 정도는 미리 떼고 읽어야 읽힌다. 매닝 출판
"나만의 알파고를 만들어보자." 내용보기


현재 인공지능 분야에서 가장 인기있는 주제 중 하나인 딥러닝 + 강화학습을 바둑을 통해 배울 수 있는 책이다. 알파고를 만든 딥마인드가 꾸준히 시도하고 있듯이, 딥러닝과 강화학습을 게임이라는 수단에 엮는다. 


내용은 인공지능 입문자에게는 어렵다. 최소한 파이썬 중급 이상으로 코드와 파일을 다루는데 익숙해야 하며, 강화학습 입문서 정도는 미리 떼고 읽어야 읽힌다. 매닝 출판사의 책들이 대부분 그렇듯이 승부욕을 자극하는 느낌이다. 난이도는 중급 정도이다. 고수에게는 쉽고 초보자에게는 어렵다. 


설명 방식은 깔끔하다. 바둑을 두는 가장 간단한 봇을 만들고, 이를 점진적으로 개선한다. 바둑에 대해 전혀 문외한인 사람도 이 책을 통해 입문할 수 있을 정도로 다양한 측면에서 바둑 규칙을 잘 설명했다. 뿐만 아니라 몬테 카를로 트리 검색, 딥러닝, 강화학습 등을 실제로 어떻게 구현하고 게임에 적용하는 지에 대한 훌륭한 예제를 다수 보여준다. 특히 강화학습의 핵심 주제들이 바둑이라는 수단에 맞추어서 적절하게 잘 들어가 있다.


다만 원저의 구성 상 파이썬을 잘 알아야 한다. 코딩 문법에 대한 코드 설명은 거의 없다. 읽다보면 산만하게 등장하는 코드 조각이 어느 파일의 어디로 들어가야 하는지 따라가기도 꽤 까다롭다. 그래서 독자는 소프트웨어 개발자로 볼 수 있을 것 같다. 바둑을 좋아하고 수학적 기본기가 있으면서도 머신러닝을 할 줄 아는 프로그래머가 그렇게 많지 않은 것이 문제지만 말이다.


<The R Book>을 번역했던 베테랑 번역가답게 한글 번역도 훌륭하다. 게임에 인공지능을 접목하는 일을 꿈꾼다거나, 알파고-이세돌 대전의 충격을 기억하는 이라면 도전의식을 갖고 도전해볼만한 책이다. 

t****e 2020.07.07. 신고 공감 0 댓글 0