기초부터 시작하는 강화학습/신경망 알고리즘

AI는 어떻게 게임을 할까

강화학습을 어떻게 시작해야 할지 모르는 분들을 위해서 준비했습니다!

강화학습은 인간이 학습하는 과정과 비슷한 인공지능 분야 중 하나입니다. 로봇의 행동학습, 자율주행 자동차의 행동학습에 대표적으로 사용되며, 알파고의 핵심 알고리즘으로 유명해졌습니다.

이 책은 강화학습에 관심이 있지만 어디서 어떻게 시작해야 할지 모르는 분들을 위해 가장 기초적인 상태가치함수/행동가치함수의 정의부터 시작해서 신경망을 이용한 DQN까지 강화학습의 기본 알고리즘을 충분히 이해할 수 있게 구성했습니다.

실습 예제로 고전게임 틱택토(Tic Tac Toe)를 플레이하는 알파고 제로(AlphaGo Zero)와 같은 인공지능 플레이어를 만들어 봄으로써 인공지능이 어떻게 게임을 플레이하는가를 알아봅니다.

이 책으로 차근차근 실습을 진행한다면 강화학습의 기본 알고리즘을 충분히 이해할 수 있을 것이며, 이를 바탕으로 여러 가지 인공지능 시스템을 만들 수 있으리라 생각합니다.

 

도서 상세 이미지

손민규

소니 반도체에서 데이터 분석 업무를 통해 알고리즘 및 시스템 개발 업무와 사원 대상 통계 알고리즘 강의를 진행했으며, 현재 삼성전자에서 데이터 분석 업무를 하고 있다. 일본 큐슈대학교에서 인공지능의 한 분야인 Reinforcement Learning 알고리즘 개발로 박사학위를 받았으며, 관심 분야는 Reinforcement Learning, Neural Network, Genetic Algorithm 등 Machine Learning Algorithm을 활용한 시스템 개발이다.

  • 저서: 데이터 분석을 떠받치는 수학(2018)
  • 감수: 정석으로 배우는 딥러닝(2017)
  • 번역: 가장 쉬운 딥러닝 입문 교실(2018), 실전! 딥러닝(2019)
  • ▣ 01장: 인공지능이란?
    • 머신러닝의 종류
      • 지도학습
      • 비지도학습
      • 강화학습
    • 강화학습과 신경망
    • 이 책의 구성
    •  
  • ▣ 02장: 강화학습
    • 강화학습의 기본 요소
      • 환경
      • 상태 (S)
      • 에이전트
      • 행동 (A)
      • 상태전이확률 (P)
      • 보상 (R)
      • 수익 (G)
      • 정책 (r)
      • 에피소드
      • 마르코프 의사결정과정 (MDP)
    • 환경과 에이전트 준비
    • 가치함수 : 상태/행동의 가치 계산
      • 상태가치함수 : Vr
      • 행동가치함수 : Qr
    • 동적계획법 : 최적 정책 선택
      • 정책 평가
      • 반복 정책 평가
      • 정책 개선
      • 정책 반복
      • 가치 반복
    • 몬테카를로 방법
      • 몬테카를로 방법의 Prediction
      • 몬테카를로 방법의 Control
    • 시간차 학습
      • 시간차 학습의 Prediction
      • 시간차 학습의 Control : SARSA(On-policy)
      • 시간차 학습의 Control : Q-learning(Off-policy)
      • Double Q-learning
      • 정책 그레이디언트 : 액터-크리틱
    • 함수 근사
    • 함수 근사 : TD(0) Prediction
    • 함수 근사 : Q-learning
    •  
  • ▣ 03장: 인공신경망
    • 퍼셉트론
    • 손실함수
      • 평균제곱오차
      • 교차엔트로피오차
    • 경사하강법
    • 퍼셉트론의 학습
      • 숫자 외우기
      • 선형 함수 근사
      • 비선형 함수 근사
    • 다층 퍼셉트론
    • 활성화 함수
      • 시그모이드 함수
      • 하이퍼볼릭탄젠트 함수
      • ReLU 함수
      • 소프트맥스 함수
    • 오차역전파법
      • 오차역전파법이란?
      • 중간층과 출력층 사이의 가중치와 편향 학습
      • 입력층과 중간층 사이의 가중치와 편향 학습
      • 비선형 함수 근사
    • 학습 최적화
      • 일정 비율 감소
      • 모멘텀
      • AdaGrad
      • RMSProp
      • Adam
      • 드롭아웃
      • 배치 정규화
      • 그 밖의 방법
    • 배치 경사하강법, 확률적 경사하강법, 미니배치 경사하강법
      • 배치 경사하강법
      • 확률적 경사하강법
      • 미니 배치 경사하강법
      • 에폭
    • 케라스를 이용한 신경망 구현
    • 합성곱신경망
      • 합성곱신경망이란?
      • 합성곱층
      • 채널
      • 스트라이드
      • 패딩
      • 풀링층
      • 플래튼층
    • 케라스를 이용한 합성곱신경망 구현
      • 손글씨 데이터
      • 손글씨 데이터 전처리
      • 합성곱신경망 구축
      • 학습과 결과 확인
    •  
  • ▣ 04장: 인공지능 만들기: 틱택토 게임
    • 틱택토 준비
    • 인간 플레이어
    • 랜덤 플레이어
    • 게임 진행 함수
    • 몬테카를로 플레이어
    • Q-learning 플레이어
    • DQN 플레이어
    •  
  • ▣ 부록A: 참고 자료
    • A.1 미분
    • A.2 편미분
    • A.3 연쇄법칙
  • 23쪽, 밑에서 2번째 줄

    오른쪽이나 왼쪽으로 가는 것이

    ==>

    오른쪽이나 아래쪽으로 가는 것이

  • 59쪽, 첫 번째 줄

    $ k = 1 $일 때 $ V_1(s0) $는 $ V_0(s1) $, $ V_0(s4) $를 이용해

    ==>

    $ k = 1 $일 때 $ V_1(s0) $는 $ V_0(s1) $, $ V_0(s3) $를 이용해

  • 67쪽, policy_improvement 함수

    # 정책개선함수
    def policy_improvement(env, agent, v_table, policy):
        # policyStable ← true
        policyStable = True
    

    ==>

    # 정책개선함수
    def policy_improvement(env, agent, v_table, policy):
        gamma = 0.9
    
        # policyStable ← true
        policyStable = True
    
  • 68쪽, 예제 코드의 17번째 줄

    max_iter_number = 20000
    

    ==>

    # 시작 시간을 변수에 저장
    start_time = time.time()
    
    max_iter_number = 20000
    
  • 68쪽, 예제 코드의 밑에서 6번째 줄

    # 하나라도 old-action과 새로운 action이 다르다면 '2. 정책 평가'를 반복
    if(policyStable == True):
        break
    k += 1
    

    ==>

    # 하나라도 old-action과 새로운 action이 다르다면 '2. 정책 평가'를 반복
    if(policyStable == True):
        break
    
  • 72쪽, 예제 코드의 1번째 줄

    # 최적 상태가치를 찾는 함수
    def finding_optimal_value(env, agent, v_table):
        k = 0
        gamma = 0.9
    

    ==>

    # 최적 상태가치를 찾는 함수
    def finding_optimal_value_function(env, agent, v_table):
        gamma = 0.9
    
  • 72쪽, 예제 코드의 밑에서 1번째 줄의 아래 코드 삭제

    k += 1
    
  • 73쪽, 예제 코드의 policy_extraction 함수에서 다음 부분을 수정(gamma 변수 추가)

    # 정책을 추출하는 함수
    def policy_extraction(env, agent, v_table, optimal_policy):
        # 정책 r를 다음과 같이 추출
    

    ==>

    # 정책을 추출하는 함수
    def policy_extraction(env, agent, v_table, optimal_policy):
    
        gamma = 0.9
    
        # 정책 r를 다음과 같이 추출
    
  • 73쪽, 예제 코드의 밑에서 1번째 줄

    show_policy(policy,env)
    

    ==>

    show_policy(optimal_policy,env)
    
  • 74쪽, 본문 첫 번째 줄

    최적 상태가치를 찾는 함수 finding_optimal_value는

    ==>

    최적 상태가치를 찾는 함수 finding_optimal_value_function은

  • 74쪽, 본문 밑에서 2번째 줄

    finding_optimal_value 함수에서

    ==>

    finding_optimal_value_function 함수에서

  • 78쪽, 그림 2.47을 다음 그림으로 교체

    그림 2.47

  • 79쪽, 그림 2.48을 다음 그림으로 교체

    그림 2.48