작년 한 해 회사 업무 R&R에 머신러닝이 추가되어 CNN 기반의 많은 네트워크를 학습해 왔다. 그래서 머신러닝 분야에 조금 자신감이 생겨 단단한 심층 강화 학습에 도서를 신청하였다. 처음 1주 차에 책을 읽으면서 생각보다 책이 어렵다는 느낌을 받았다. 그 이유는?
필자가 기존에 학습했던 머신러닝은 비지도 학습과 지도 학습 두 가지만 해온 것이며 강화 학습은 따로 하지 않아 생소하게 느껴지지 않았나 생각이 들었다. 실제로 머신러닝을 크게 본다면 아래와 같이 머신러닝은 지도학습, 비지도 학습, 강화 학습 3가지로 나눌 수 있는데 필자가 강화 학습에 대한 이해력이 부족했다고 생각이 들었다.
그래서 주변 동료에게 책을 읽어 보라고 권하였다. "해당 책은 이론 및 원리를 충실하고 자세히 설명되어 있다. 기존의 책들은 이론에 대해서 짧은 설명으로 대신하지만 해당 책은 다른 검색 도구를 사용하지 않아도 책 내에서 기초원리부터 설명이 자세히 되어 있고 매 단원마다 실습을 할 수 있어서 좋다"라고 하였다.
주변 동료에게 조언을 듣고 일단은 용어에 대한 이해를 다시 하였다. 아래는 강화학습, 심층강화학습에 용어 정리와 차이점을 정리해 보았다
강화학습(reinforcement learning)은 기계 학습의 한 영역이다. 행동심리학에서 영감을 받았으며, 어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법이다.
심층 강화학습(deep reinforcement learning, DRL)은 머신러닝 기법 중 하나로, 지능이 요구되는 문제를 해결할 수 있도록 인공지능(artificial intelligence, AI) 컴퓨터 프로그램을 개발하는 데 사용합니다. 심층 강화학습의 독특한 특징은 시행착오를 통해 얻은 반응을 학습한다는 것인데, 보통 그 반응은 순차적이면서 동시에 평가가 가능합니다.
강화 학습과 심층강화학습의 차이점은 강화 학습은 결과를 극대화하기 위해 시행착오 방법을 사용하여 동적으로 학습하는 반면, 심층 강화 학습은 기존 지식에서 학습하여 새로운 데이터 세트에 적용합니다.
책은 위처럼 알고리즘에 대한 정의와 이론적인 설명을 먼저 알려준다. 이후에 파이선 코드로 해당 알고리즘을 프로그래밍할 수 있는 예제 소스코드가 있는데 이론과 실습을 모두 할 수 있어서 매우 좋았다.
매 단원 마지막에는 요약을 제공해주고 이외에 "더 읽을거리"라는 카테고리로 참고문헌과 해당 알고리즘에 대한 역사를 짧막하게 정리되어 있다.
많은 아이티서적에서 동일하게 생기는 문제는 책에 샘플 코드가 실제로 안 돌아가는 경우가 있다. 이러한 부분이 염려가 되었는데 책 마지막 부분 APPENDIX에서 사용한 샘플 코드에 대한 원천소스 경로와 책을 집필하면서 참고했던 논문들이 나열되어 있어 조금 더 깊게 보고 싶다면 위 레퍼런스를 사용하면 된다.
심층강화학습의 확고한 기반을 다지기 위한 완벽한 방법!
이 책은 이론과 실무적 내용을 독특하게 결합한 심층강화학습 소개서다. 직관적인 설명에서 시작하여 심층강화학습 알고리즘에 대한 자세한 설명과 SLM Lab 라이브러리를 이용한 구현 방법으로 이어지고, 마지막으로는 심층강화학습을 실무에 적용하기 위한 세부 내용을 다룬다.
옮긴이 머리말 xii
베타리더 후기 xiii
추천사 xv
시작하며 xvi
감사의 글 xxi
CHAPTER 01 강화학습 소개 1
1.1 강화학습 1
1.2 MDP로서의 강화학습 7
1.3 강화학습에서 학습하는 함수 11
1.4 심층강화학습 알고리즘 13
1.4.1 정책 기반 알고리즘 14
1.4.2 가치 기반 알고리즘 15
1.4.3 모델 기반 알고리즘 16
1.4.4 결합된 방법 17
1.4.5 이 책에서 다루는 알고리즘 18
1.4.6 활성정책과 비활성정책 알고리즘 19
1.4.7 요약 19
1.5 강화학습을 위한 심층학습 20
1.6 강화학습과 지도학습 22
1.6.1 오라클의 부재 23
1.6.2 피드백의 희소성 24
1.6.3 데이터 생성 24
1.7 요약 25
PART I 정책 기반 알고리즘과 가치 기반 알고리즘
CHAPTER 02 REINFORCE 29
2.1 정책 30
2.2 목적 함수 31
2.3 정책 경사 31
2.3.1 정책 경사 계산 33
2.4 몬테카를로 표본추출 36
2.5 REINFORCE 알고리즘 37
2.5.1 향상된 REINFORCE 38
2.6 REINFORCE 구현 39
2.6.1 최소 형태의 REINFORCE 구현 39
2.6.2 파이토치로 정책 생성하기 42
2.6.3 행동 추출 44
2.6.4 정책 손실 계산 45
2.6.5 REINFORCE 훈련 루프 46
2.6.6 활성정책 재현 메모리 47
2.7 REINFORCE 에이전트의 훈련 50
2.8 실험 결과 53
2.8.1 실험: 할인율 ?? 의 효과 53
2.8.2 실험: 기준값의 효과 55
2.9 요약 57
2.10 더 읽을거리 57
2.11 역사 58
CHAPTER 03 살사(SARSA) 59
3.1 Q 함수와 V 함수 60
3.2 시간차 학습 63
3.2.1 시간차 학습에 대한 직관 66
3.3 살사의 행동 선택 73
3.3.1 탐험과 활용 74
3.4 살사 알고리즘 75
3.4.1 활성정책 알고리즘 76
3.5 살사의 적용 77
3.5.1 행동 함수: 엡실론 탐욕적 77
3.5.2 Q 손실의 계산 78
3.5.3 살사 훈련 루프 80
3.5.4 활성정책 배치 재현 메모리 81
3.6 살사 에이전트의 훈련 83
3.7 실험 결과 86
3.7.1 실험: 학습률의 효과 86
3.8 요약 87
3.9 더 읽을거리 88
3.10 역사 89
CHAPTER 04 심층 Q 네트워크(DQN) 91
4.1 DQN의 Q 함수 학습 92
4.2 DQN의 행동 선택 94
4.2.1 볼츠만 정책 97
4.3 경험 재현 100
4.4 DQN 알고리즘 101
4.5 DQN의 적용 103
4.5.1 Q 손실의 계산 103
4.5.2 DQN 훈련 루프 104
4.5.3 재현 메모리 105
4.6 DQN 에이전트의 훈련 108
4.7 실험 결과 111
4.7.1 실험: 신경망 아키텍처의 효과 111
4.8 요약 113
4.9 더 읽을거리 114
4.10 역사 114
CHAPTER 05 향상된 DQN 115
5.1 목표 네트워크 116
5.2 이중 DQN 119
5.3 우선순위가 있는 경험 재현(PER) 123
5.3.1 중요도 표본추출 125
5.4 수정된 DQN의 구현 126
5.4.1 네트워크 초기화 127
5.4.2 Q 손실의 계산 128
5.4.3 목표 네트워크의 업데이트 129
5.4.4 목표 네트워크를 갖는 DQN 130
5.4.5 이중 DQN 130
5.4.6 우선순위가 있는 경험 재현 131
5.5 아타리 게임을 위한 DQN 에이전트의 훈련 137
5.6 실험 결과 142
5.6.1 실험: 이중 DQN과 PER의 효과 142
5.7 요약 146
5.8 더 읽을거리 146
PART II 결합된 방법
CHAPTER 06 어드밴티지 행동자-비평자(A2C) 149
6.1 행동자 150
6.2 비평자 150
6.2.1 어드밴티지 함수 151
6.2.2 어드밴티지 함수에 대한 학습 155
6.3 A2C 알고리즘 156
6.4 A2C의 구현 159
6.4.1 어드밴티지 추정 160
6.4.2 가치 손실과 정책 손실의 계산 162
6.4.3 행동자-비평자 훈련 루프 163
6.5 네트워크 아키텍처 164
6.6 A2C 에이전트의 훈련 166
6.6.1 n단계 이득을 이용한 A2C를 퐁 게임에 적용 166
6.6.2 GAE를 이용한 A2C를 퐁 게임에 적용 169
6.6.3 두 발 보행자 문제에서 n단계 이득을 이용한 A2C 170
6.7 실험 결과 173
6.7.1 실험: n단계 이득의 효과 173
6.7.2 실험: GAE의 ??가 미치는 효과 175
6.8 요약 176
6.9 더 읽을거리 177
6.10 역사 177
CHAPTER 07 근위 정책 최적화(PPO) 179
7.1 대리목적 180
7.1.1 성능붕괴 180
7.1.2 목적 함수의 수정 182
7.2 근위 정책 최적화(PPO) 189
7.3 PPO 알고리즘 193
7.4 PPO의 구현 195
7.4.1 PPO 정책 손실의 계산 195
7.4.2 PPO 훈련 루프 196
7.5 PPO 에이전트의 훈련 198
7.5.1 퐁 게임을 위한 PPO 198
7.5.2 두 발 보행자를 위한 PPO 201
7.6 실험 결과 203
7.6.1 실험: GAE의 ??가 미치는 효과 204
7.6.2 실험: 클리핑 변수 ??의 효과 205
7.7 요약 207
7.8 더 읽을거리 208
CHAPTER 병렬화 방법 209
8.1 동기 병렬화 210
8.2 비동기 병렬화 212
8.2.1 호그와일드! 213
8.3 A3C 에이전트의 훈련 216
8.4 요약 219
8.5 더 읽을거리 219
CHAPTER 09 알고리즘 요약 221
PART III 실전을 위한 세부사항
CHAPTER 10 심층강화학습으로 작업하기 225
10.1 소프트웨어 공학적 기법 226
10.1.1 단위 테스트 226
10.1.2 코드 품질 232
10.1.3 깃 워크플로 233
10.2 디버깅 팁 236
10.2.1 생존 신호 236
10.2.2 정책 경사에 대한 진단 237
10.2.3 데이터에 대한 진단 238
10.2.4 전처리기 239
10.2.5 메모리 239
10.2.6 알고리즘 함수 240
10.2.7 신경망 240
10.2.8 알고리즘 간소화 243
10.2.9 문제 간소화 243
10.2.10 하이퍼파라미터 244
10.2.11 Lab 워크플로 244
10.3 아타리 트릭 245
10.4 심층강화학습 알마낵 249
10.4.1 하이퍼파라미터 표 249
10.4.2 알고리즘 성능 비교 252
10.5 요약 255
CHAPTER 11 SLM Lab 257
11.1 SLM Lab에 구현된 알고리즘 257
11.2 spec 파일 260
11.2.1 검색 스펙 구문 262
11.3 SLM Lab의 실행 265
11.3.1 SLM Lab의 명령어 265
11.4 실험 결과의 분석 266
11.4.1 실험 데이터의 개요 266
11.5 요약 268
CHAPTER 12 네트워크 아키텍처 269
12.1 신경망의 유형 269
12.1.1 다층 퍼셉트론(MLP) 270
12.1.2 합성곱신경망(CNN) 272
12.1.3 회귀신경망(RNN) 274
12.2 네트워크 그룹 선택을 위한 가이드 275
12.2.1 MDP와 POMDP 275
12.2.2 환경을 위한 네트워크 선정 279
12.3 Net API 282
12.3.1 입력과 출력 층위 모양의 추정 284
12.3.2 네트워크의 자동 생성 286
12.3.3 훈련 단계 289
12.3.4 기반 메소드의 노출 290
12.4 요약 291
12.5 더 읽을거리 292
CHAPTER 13 하드웨어 293
13.1 컴퓨터 294
13.2 데이터 유형 300
13.3 강화학습에서 데이터 유형 최적화 302
13.4 하드웨어의 선택 307
13.5 요약 308
CHAPTER 14 상태 311
14.1 상태의 예제 312
14.2 상태의 완결성 319
14.3 상태의 복잡성 320
14.4 상태 정보 손실 325
14.4.1 이미지 그레이스케일링 325
14.4.2 이산화 326
14.4.3 해시 출동 327
14.4.4 메타정보 손실 327
14.5 전처리 331
14.5.1 표준화 332
14.5.2 이미지 처리 333
14.5.3 시간적 전처리 335
14.6 요약 339
CHAPTER 15 행동 341
15.1 행동의 예제 341
15.2 행동의 완결성 345
15.3 행동의 복잡성 347
15.4 요약 352
15.5 더 읽을거리: 일상에서의 행동 설계 353
CHAPTER 16 보상 357
16.1 보상의 역할 357
16.2 보상 설계의 가이드라인 359
16.3 요약 364
CHAPTER 17 전이 함수 365
17.1 실현 가능성 확인 366
17.2 현실성 확인 368
17.3 요약 371
APPENDIX A 심층강화학습 타임라인 372
APPENDIX B 환경의 예제 374
B.1 이산적 환경 375
B.1.1 CartPole-v0 375
B.1.2 MountainCar-v0 376
B.1.3 LunarLander-v2 377
B.1.4 PongNoFrameskip-v4 378
B.1.5 BreakoutNoFrameskip-v4 378
B.2 연속 환경 379
B.2.1 Pendulum-v0 379
B.2.2 BipedalWalker-v2 380
에필로그 381
믿고 보는 제이펍 IT 전문서 리뷰어 2기로서 출판사로부터 책을 제공받았으나,
본 리뷰는 제 주관적인 판단에 따라 작성하였습니다.
고객을 끌어오는 구글 애널리틱스4 (0) | 2022.03.29 |
---|---|
처음 배우는 딥러닝 챗봇:챗봇 엔진부터 NLP 딥러닝 파이썬 REST API 카카오톡 연동까지 (0) | 2022.03.27 |
비전 시스템을 위한 딥러닝 (0) | 2022.02.23 |
텐서플로 라이트를 활용한 안드로이드 딥러닝 (0) | 2022.01.17 |
머신러닝 엔지니어링 - 제이펍 (0) | 2022.01.07 |
댓글 영역