파이썬과 케라스로 배우는 강화학습

내 손으로 직접 구현하는 게임 인공지능

“강화학습을 쉽게 이해하고 코드로 구현하기”

강화학습의 기초부터 최근 알고리즘까지 친절하게 설명한다!

‘알파고’로부터 받은 신선한 충격으로 많은 사람들이 강화학습에 관심을 가지기 시작했다. 하지만 처음 강화학습을 공부하는 분들을 위한 쉬운 자료나 강의를 찾아보기 어려웠다. 외국 강의를 통해 어렵게 이론을 공부하더라도 강화학습을 구현하는 데는 또 다른 장벽이 있었다. 이 책은 강화학습을 처음 공부하는 데 어려움을 겪는 독자를 위해 이론부터 코드 구현까지의 가이드를 제시한다.

이 책에서 다루는 내용

  • 강화학습의 배경과 개념
  • 강화학습의 기초 이론: MDP, 벨만 방정식, 다이내믹 프로그래밍
  • 고전 강화학습 알고리즘: 몬테카를로, 살사, 큐러닝
  • 인공신경망을 이용한 강화학습 알고리즘: 딥살사, REINFORCE, DQN, 액터-크리틱, A3C
  • 강화학습 알고리즘 구현: 그리드월드, 카트폴, 아타리게임

 

추천사

간략한 이론 설명과 함께 실제로 돌아가는 풍부한 파이썬 예제를 통해 새로운 개념과 주제들을 쉽고 재미있게 소개해 나갑니다. 또한, 책 후반부에는 A3C와 같이 실제 연구에 사용되는 최신 강화학습기법도 다룹니다. <파이썬과 케라스로 배우는 강화학습> 덕분에 국내에서도 강화학습을 쉽게 다루는 학생과 엔지니어들이 많이 늘어나기를 희망하며, 이런 기회를 만들어 준 저자 분들에게 다시 한번 감사의 말씀을 드립니다.

-- 카카오브레인 AI 연구 총괄 김남주

강화학습의 고전적인 이론뿐 아니라 최근의 연구 결과까지 이 한 권의 책으로 엮어 내고 있습니다. 또한 초보자도 쉽게 접할 수 있는 파이썬과 케라스를 통해 각 알고리즘을 구현하고, 아타리 게임이나 OpenAI Gym 시뮬레이션 환경에서 알고리즘의 성능을 테스트해볼 수 있어서 지루하지 않게 강화학습을 배울 수 있을 것입니다.

-- 모두의연구소 연구소장 김승일

또 한 가지 이 책의 장점은 책에서 소개하는 다양한 예제들을 직접 github를 통해 접하고, 사용할 수 있다는 점이다. 향후 기술 발전으로 달라지는 내용이 생기더라도 그에 맞추어 예제들이 업데이트된다는 측면에서도 현재의 빠르게 발전하는 강화학습을 공부하는 데 많은 도움이 될 것이다.

-- 빅뱅엔젤스 매니징파트너 / 루닛 Advisor 정지훈

 

도서 상세 이미지

상세 이미지

이웅원

연세대학교 기계공학과를 졸업했다. 모두의 연구소에서 개최한 강화학습 스터디에 참여해 공부하면서 강화학습 관련 깃북(https://www.gitbook.com/book/dnddnjs/rl)을 작성했다. 현재는 제이마플에서 딥러닝을 사용해 소리를 인식하는 작업을 하고 있다.

양혁렬

한양대학교에서 경영학과 컴퓨터 공학을 다중전공하고 있다. 현재는 음악/오디오 신호처리와 기계학습을 결합한 분야에 관심을 가지고 서울대학교 융합과학기술대학원의 음악 오디오 연구실에서 연구원으로 참여하고 있다.

김건우

뉴욕대학교 컴퓨터 과학과에 재학 중이며 DeepCoding 그룹에서 딥러닝을 코딩에 적용하는 연구를 진행 중이다. 현재는 우버 샌프란시스코에서 소프트웨어 엔지니어 인턴으로 일하고 있다.

이영무

중앙대학교 컴퓨터 공학과에 재학 중이며 모두의 연구소에서 개최한 강화학습 스터디에서 공부했다. 현재 머신러닝, 딥러닝에 관련된 공부를 지속하고 있다.

이의령

세종대학교에서 응용통계학과 경영학을 전공하고 졸업 후 스타트업에서 서버 개발 인턴으로 근무했다. 현재 모두의 연구소에서 신호처리 관련 프로젝트를 진행하면서 머신러닝과 관련된 다양한 경험을 쌓고 있다.

  • 1부 강화학습 소개
    • 1장 강화학습 개요
      • 강화학습의 개념
        • 스키너의 강화 연구
        • 우리 주변에서의 강화
        • 머신러닝과 강화학습
        • 스스로 학습하는 컴퓨터, 에이전트
      • 강화학습 문제
        • 순차적 행동 결정 문제
        • 순차적 행동 결정 문제의 구성 요소
        • 방대한 상태를 가진 문제에서의 강화학습
      • 강화학습의 예시: 브레이크아웃
        • 딥마인드에 의해 다시 빛을 본 아타리 게임
        • 브레이크아웃의 MDP와 학습 방법
      • 정리
        • 강화학습의 개념
        • 강화학습 문제
        • 강화학습의 예시: 브레이크아웃
      •  
  • 2부 강화학습 기초
    • 2장 강화학습 기초 1: MDP와 벨만 방정식
      • MDP
        • 상태
        • 행동
        • 보상함수
        • 상태 변환 확률
        • 감가율
        • 정책
      • 가치함수
        • 가치함수
        • 큐함수
      • 벨만 방정식
        • 벨만 기대 방정식
        • 벨만 최적 방정식
      • 정리
        • MDP
        • 가치함수
        • 벨만 방정식
      •  
    • 3장 강화학습 기초 2: 그리드월드와 다이내믹 프로그래밍
      • 다이내믹 프로그래밍과 그리드월드
        • 순차적 행동 결정 문제
        • 다이내믹 프로그래밍
        • 격자로 이뤄진 간단한 예제: 그리드월드
      • 다이내믹 프로그래밍 1: 정책 이터레이션
        • 강화학습 알고리즘의 흐름
        • 정책 이터레이션
        • 정책 평가
        • 정책 발전
        • RLCode 깃허브 저장소
        • 정책 이터레이션 코드 설명
        • 정책 이터레이션 코드 실행
      • 다이내믹 프로그래밍 2: 가치 이터레이션
        • 명시적인 정책과 내재적인 정책
        • 벨만 최적 방정식과 가치 이터레이션
        • 가치 이터레이션 코드 설명
        • 가치 이터레이션 코드 실행
      • 다이내믹 프로그래밍의 한계와 강화학습
        • 다이내믹 프로그래밍의 한계
        • 모델 없이 학습하는 강화학습
      • 정리
        • 다이내믹 프로그래밍과 그리드월드
        • 다이내믹 프로그래밍 1: 정책 이터레이션
        • 다이내믹 프로그래밍 2: 가치 이터레이션
        • 다이내믹 프로그래밍의 한계와 강화학습
      •  
    • 4장 강화학습 기초 3: 그리드월드와 큐러닝
      • 강화학습과 정책 평가 1: 몬테카를로 예측
        • 사람의 학습 방법과 강화학습의 학습 방법
        • 강화학습의 예측과 제어
        • 몬테카를로 근사의 예시
        • 샘플링과 몬테카를로 예측
      • 강화학습과 정책 평가 2: 시간차 예측
        • 시간차 예측
      • 강화학습 알고리즘 1: 살사
        • 살사
        • 살사 코드 설명
        • 살사 코드의 실행 및 결과
      • 강화학습 알고리즘 2: 큐러닝
        • 살사의 한계
        • 큐러닝 이론
        • 큐러닝 코드 설명
        • 큐러닝 코드의 실행 결과
      • 정리
        • 강화학습과 정책 평가 1: 몬테카를로 예측
        • 강화학습과 정책 평가 2: 시간차 예측
        • 강화학습 알고리즘 1: 살사
        • 강화학습 알고리즘 2: 큐러닝
      •  
  • 3부 강화학습 심화
    • 5장 강화학습 심화 1: 그리드월드와 근사함수
      • 근사함수
        • 몬테카를로, 살사, 큐러닝의 한계
        • 근사함수를 통한 가치함수의 매개변수화
      • 인공신경망
        • 인공신경망 1: 인공신경망의 개념
        • 인공신경망 2: 노드와 활성함수
        • 인공신경망 3: 딥러닝
        • 인공신경망 4: 신경망의 학습
      • 인공신경망 라이브러리: 케라스
        • 케라스 소개
        • 간단한 케라스 예제
      • 딥살사
        • 딥살사 이론
        • 딥살사 코드 설명
        • 딥살사의 실행 및 결과
      • 폴리시 그레이디언트
        • 정책 기반 강화학습
        • 폴리시 그레이디언트
        • REINFORCE 코드 설명
        • REINFORCE의 실행 및 결과
      • 정리
        • 근사함수
        • 인공신경망
        • 인공신경망 라이브러리: 케라스
        • 딥살사
        • 폴리시 그레이디언트
      •  
    • 6장 강화학습 심화 2: 카트폴
      • 알고리즘 1: DQN
        • 카트폴 예제의 정의
        • DQN 이론
        • DQN 코드 설명
        • DQN 실행 및 결과
      • 알고리즘 2: 액터-크리틱
        • 액터-크리틱 이론 소개
        • 액터-크리틱 코드 설명
        • 액터-크리틱 실행 및 결과
      • 정리
        • 알고리즘 1: DQN
        • 알고리즘 2: 액터-크리틱
      •  
    • 7장 강화학습 심화 3: 아타리
      • 브레이크아웃 DQN
        • 아타리: 브레이크아웃
        • 컨볼루션 신경망(CNN)이란?
        • 브레이크아웃의 컨볼루션 신경망
        • DQN 학습 전 준비 사항
        • DQN 코드 설명
        • 텐서보드 사용법
        • 브레이크아웃 DQN 실행 및 결과
      • 브레이크아웃 A3C
        • DQN의 한계
        • A3C란?
        • 멀티스레딩 소개
        • 브레이크아웃 A3C 코드 설명
        • 브레이크아웃 A3C 실행 결과
        • 브레이크아웃 DQN, A3C의 저장된 모델 플레이
      • 정리
        • 브레이크아웃 DQN
        • 브레이크아웃 A3C
      •  
  • 부록 A 학습결과 업로드
    • 오픈에이아이 짐의 다양한 예제
    • 오픈에이아이 짐에 학습 결과를 업로드

예제코드 관련 GitHub 페이지

  • 45쪽, 7번째 줄

    간단하게 기댓값

    ==>

    간단하게 가치함수

  • 49쪽, 본문 3번째 줄

    큐함수와 곱한 값을 더하면 ==> 큐함수와 π(a│s)를 곱한 값을 더하면

  • 85쪽, 상단 예제 코드 6번째 줄

    value += self.get_policy(state, action) * (
    

    ==>

    value += self.get_policy(state)[action] * (
    
  • 85쪽, 두 번째 예제 코드 1번째 줄

    value += self.get_policy(state, action) * (
    

    ==>

    value += self.get_policy(state)[action] * (
    
  • 108쪽, 밑에서 6번째 줄

    정책 이터레이션입니다.

    ==>

    가치 이터레이션입니다.

  • 149쪽, 밑에서 1번째 줄

    따라서 에이전트는 왼쪽 위에 히게 됩니다.

    ==>

    따라서 에이전트는 왼쪽 위에 갇히게 됩니다.

  • 266쪽, 밑에서 6번째 줄

    그림 7.5의 박스 필터는 크기를 가지며

    ==>

    그림 7.5의 박스 필터는 3×3의 크기를 가지며