강화학습을 어떻게 시작해야 할지 모르는 분들을 위해서 준비했습니다!
강화학습은 인간이 학습하는 과정과 비슷한 인공지능 분야 중 하나입니다. 로봇의 행동학습, 자율주행 자동차의 행동학습에 대표적으로 사용되며, 알파고의 핵심 알고리즘으로 유명해졌습니다.
이 책은 강화학습에 관심이 있지만 어디서 어떻게 시작해야 할지 모르는 분들을 위해 가장 기초적인 상태가치함수/행동가치함수의 정의부터 시작해서 신경망을 이용한 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 연쇄법칙
- GitHub 저장소: https://github.com/wikibook/rlnn
- ZIP 형식으로 다운로드: https://github.com/wikibook/rlnn/archive/master.zip
23쪽, 밑에서 2번째 줄
오른쪽이나
왼쪽으로
가는 것이==>
오른쪽이나
아래쪽으로
가는 것이49쪽, 그림 2.30의 표에서 2열 2행의 수식
$ \pi(a|s)Q_\pi(s,a) $
==>
$ \displaystyle \sum_{a}\pi(a|s)Q_\pi(s,a) $
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을 다음 그림으로 교체
79쪽, 그림 2.48을 다음 그림으로 교체