[리뷰] 단단한 심층강화학습



제이펍 출판사의 "단단한 심층강화학습(로라 그레서, 와 룬 켕 저 / 김성우 역)"를 읽고 작성한 리뷰입니다.

표지


DQN, A2C, PPO 등의 알고리즘을 다루는 심층강화학습 교과서로 입체적인 구성이 특징이며 병렬화, 환경 설계 등 엔지니어링에 필요한 실전 내용을 포함하는 것이 특징이다.

강화학습은 순차적인 의사결정 문제를 해결하는 방법으로 에이전트환경안에서 최적의 행동을 취하는 것을 목표로 삼는다.

즉, 에이전트와 환경이 핵심 요소라고 볼 수 있다. 에이전트가 취한 행동이 환경에 전달되면 그에 따른 보상과 변화된 환경이 에이전트에 전달되는 것이 기본 흐름이다. 제어루프

책에서는 직관적인 예로 카트폴 예제에 비유하고 있는데 여기서 에이전트는 카트를 제어하는 주체이며 그 외의 것들은 환경이라고 보면 된다.

상태는 카트의 위치 및 속도, 폴의 각도, 각속도 등 4개 요소가 해당되며 행동은 왼쪽 혹은 오른쪽으로 움직이는 2가지 요소이다. 보상은 넘어지지 않고 곧게 서 있는 모든 시간에서 +1점을 획득한다.

그 외 목적은 200단계의 시간 단계동안 폴이 곧게 서있도록 유지하는 것이고, 종료 조건으로는 폴이 떨어지거나 카트가 스크린 밖으로 벗어나거나 최종 시간 단계인 200에 도달했을 때 발생하는 예제이다.

사람도 손바닥 위에 깃대를 세워놓고 떨어지지 않기 위한 노력을 기울이다보면 깃대의 무게 중심이 어디인지, 얼마나 빨리 기울어지는지, 손은 얼마나 빨리 움직여야 하는지 판단하게 되며 연습이 진행될수록 보다 오랜시간 깃대를 곧게 세울 수 있음을 알 수 있으니 카트폴은 현실과 강화학습을 연결하여 바라보기에 가장 좋은 예제 중 하나일 것이다.

조금 더 개념을 확장하자면 정책은 행동을 도출하는 함수이며, 목적은 에이전트가 받는 보상의 총합, 특정 시간대에 주고 받는 “상태, 행동, 보상” 한 쌍을 경험, 경험의 연속을 궤적, 시간 t=0에서 종료까지의 구간을 에피소드라 부른다.

이때 환경이 다음 상태로 넘어가는 전이함수를 마르코프 결정 과정(MDP)으로 표현하는 것이 중요하다. 환경과 행동을 시간=0지점부터 직전 시간까지 모두 전달받아 다음 상태를 추측하는 것은 비현실적이기에 현재 상태 t시점에서 t+1시점의 상태를 파악할 수 있도록 MDP로의 표현이 필요하다.

책에서는 이를 피보나치 수열의 점화식 S(t+1) = S(t) + S(t-1)을 예로 들어 직관적으로 설명하고 있다. 저자들이 서문에서 책, 논문, 온라인 강의까지 모두 섭렵 후 본 도서에 등장하는 SLM Lab 라이브러리를 만들었다고 기술했는데 이를 방증하듯 직관적인 설명이 책 곳곳에 등장하고 있어 이해에 큰 도움이 되었다.

이 단계에서부터 슬슬 수식이 등장하기 시작한다. 처음 강화학습을 접할 때만 해도 수식이 너무 많아 지에 겁먹곤 했는데 다른 것은 몰라도 강화학습에는 수식이 필수적이다.

심층 강화학습 알고리즘 중 모델 기반 알고리즘에서 사용하는 몬테카를로 트리 탐색(MCTS)과 같이 모든 경우의 수를 전부 파악하고 있다면 구체적인 예제로 이해가 가능하겠지만 문제는 경우의 수가 무한에 가깝다는 것이다.

알파고조차 모든 경우의 수를 다 알고 바둑을 두지 못했던 것처럼 인간의 기억 용량으로는 어림도 없는 접근이다. 위에서 설명한 전이함수를 MDP로 변환하듯 복잡한 수식을 단순화하는 과정이 필요하며 모든 경우의 수를 t하나로 한정지어 접근하다보면 추후에는 오히려 수식이 있어 정말 다행이라는 생각이 들 것이다.

수식이 있음으로써 무한의 경우의 수 속에서 원하는 시점만을 뽑아 추상적인 개념으로 접근해 볼 수 있게 되는 것이다. 중간 중간 학교에서 배웠던 미지수 x의 정의에서 부터 점화식 같은 것들이 왜 필요했는지, 어디에 쓰이는지 느껴나가는 재미도 있다.

어쨌든 적어도 강화학습 만큼은 수학을 반갑게 맞이했으면 좋겠다. 위에서 이 책이 입체적이라는 설명을 했다. 입체적인 구성 덕분에 수학을 너무 어렵게 생각하지 않아도 될 것 같다. 직관적인 설명과 적시적인 예제가 서술되어 있음은 물론 도식이 자주 등장하여 이해가 쉬웠다. 아울러 장대하게 설명한 부분은 깔끔하게 수도 코드로 정리해준다. 수도코드

이어서 Python코드로 이를 구현한다. 이렇게 다각도로 내용을 접하다보니 왠만한 개념은 대부분 이해할 수 있었다. Python

나아가 저자들이 직접 개발한 SLM 예제로 실험을 진행할 수 있도록 구성되어 있어 눈으로 성능을 확인할 수 있다는 장점도 있다. SLM

설치도 비교적 간단한 편인데 먼저 Anaconda 기반 환경은 구성해둬야 실습을 진행할 수 있다. 이 부분에 대한 상세한 설명이 누락된 것은 조금 아쉬운 부분이지만 이 책의 난이도를 생각할 때 이 부분에서 막힐 독자는 거의 없을거라 생각한다. 환경설정

다시 본론으로 돌아가 에이전트가 무엇을 학습해야 하는지 살펴볼 필요가 있다. 정책, 가치함수, 모델의 확률 분포 등을 학습해야 하는데 우선 정책은 상태가 주어지면 계산이 가능하다.

가치 함수의 경우 행동을 취함으로써 얻게되는 이득의 기대값이 포함된 Q함수와 정책에 따라 결정되는 V함수가 존재한다. 이러한 부분은 뒤에 등장하게 될 다양한 알고리즘의 특성 간 차이가 되기도 한다. 알고리즘

이를 정리하면 아래 그림과 같다. 가치, 정책, 모델 중 어느 것을 기반으로 하고 있는지 또 이들을 어떻게 결합하여 활용할 것인지가 이 책이 말하는 핵심 내용들의 개요가 되겠다. 요약

강화학습의 내용은 방대하기에 리뷰로는 일부도 정리하기 어렵다. 하지만 DQN, A2C, PPO 등 각 장의 알고리즘마다 직관적인 설명과 입체적인 구성이 장점이기에 이해하는데 많은 도움이 된다는 점을 강조하고 싶다.

책의 후반부로 넘어가면 실전에 적용하기 위한 기법들도 풍부하게 등장한다. 확실히 배운 것에 그치지 않고 SLM 라이브러리를 개발한 저자들의 실전 내공이 묻어나는 파트이며 전반부에서 쉽게 배운 것들을 실전에서 구현하는데 어떤 부분이 필요한지 잡아주고 있어 매우 효율적인 구성이라는 생각이 들었다.

동기 및 비동기에 대한 병렬화, 디버깅, 하이퍼파라미터, SLM Lab의 구성, 하드웨어, 환경 설계(상태, 행동, 보상, 전이 함수 등)에 대한 내용을 주로 담고 있다.

말미에는 강화학습의 타임라인을 요약하고 있어 저자들이 집필하는 과정에서 관련 내용들을 집대성하기 위해 얼마나 꼼꼼하게 임했는지 느낄 수 있었다. 예전에 TRPO가 이해되지 않아 끙끙댄 적이 있었는데 그 이후의 세월동안 강화학습이 이렇게나 빠르게 발전했구나라는 생각을 했다.

더불어 참고문헌에는 유명한 주옥같은 논문들이 가득들어 있어 초심자가 학습하기에 좋고 그 외 실전에서 눈으로 보고 이해하는데 도움이 될 예제들도 소개되어 있어 유익했다.

결론을 내리자면 심층강화학습의 깊은 난이도를 놓치지 않으면서도 비교적 적은 지면을 할애하였다는 점이 놀랍다. 이렇게 압축 시키는 능력은 그간 저자들이 학습하고 노력하며 지름길을 찾아 직관을 전달하기 위한 노력이 아니었을까 싶다.

이 책의 시리즈인 단단한 시리즈의 책들이 참 양서라는 생각이 든다. 첫번째 머신러닝의 경우 기저 필요 지식을 깊이있게 학습할 수 있어 극찬할만한 도서였다.

두 번째 도서인 강화학습은 내용은 알찼으나 전달력이 조금 부족하다는 생각이 들었는데 이번 세번째 심층강화학습 편은 전달력 또한 많이 향상되어 더욱 즐겁게 읽을 수 있었다.

이번에는 두번째 편과 달리 심층학습이 결합된 형태로 초점이 맞춰져 있어 딥러닝을 활용한다. 덕분에 함수 근사나 최적화에 있어 보다 좋은 성능의 결과물을 얻을 수 있다.

알파고의 내부 원리가 궁금했거나 강화학습에 관심있는 독자라면 이 책을 제일 먼저 접하는 것도 나쁘지 않을 것 같다. 생각보다 깊이 있는 내용을 입문서 수준의 난이도로 풀어낸 구성이 일품이다.







© 2019.04. by theorydb

Powered by theorydb