먼저 강화학습 첫걸음 책 소개에 앞서, 중요한 머신러닝 개념부터 알아보도록 하자.
1. 머신러닝(Machine Learning)
머신러닝(Machine Learning)은 데이터를 이용하여 컴퓨터를 학습 시키는 방법론이다. 이러한 머신러닝 알고리즘은 크게 세 가지로 분류 할 수 있다.
지도학습 (Supervised Learning)
지도학습은 데이터에 대한 정보 즉, 레이블(Label)이 주어진 상태에서 컴퓨터를 학습시키는 방식이다. 가장 유명한 예제는 MNIST 데이터 셋을 이용한 손글씨 숫자 분류 문제이다. 0부터 9까지 손글씨로 쓰여진 데이터 세트를 학습하여 레이블이 지정되지 않은 어떤 테스트 데이터를 주었을 때 그 숫자가 어떤 것인지 판별하고 예측하는 문제이다.
비지도학습 (Unsupervised Learning)
지도학습과는 달리 비지도학습은 데이터에 대한 레이블이 주어지지 않은 상태에서 컴퓨터를 학습시키는 방법론이다. 데이터가 무작위로 흩뿌려져 분포되어있을 때 이를 각 범주로 분류하는 클러스터링(Clustering) 하여 문제를 해결해야한다. 이는 데이터의 숨겨진 특징이나 구조를 발견하는데 유용하다.
강화학습(Reinforcement Learning)
강화학습은 지도학습, 비지도학습과는 달리 동적인 상태에서 데이터를 수집하는 알고리즘이다. 강화학습은 에이전트가 주어진 환경(State)에 대해 어떤 행동(Action)을 취하고 이로부터 어떤 보상(Reward)을 얻으면서 학습을 진행하게 된다. 이 때, 에이전트는 보상을 최대화 하도록 학습이 진행된다. 대표적인 강화학습 알고리즘은 Q-Learning 과 딥러닝이 결합된 Deep-Q-Network 가 있다.
이러한 머신러닝 알고리즘들은 실제로 우리 환경의 여러 분야에 적용되어 각광을 받고 있으며, 뛰어난 성능을 보여주고 있다. IT 계열의 컴퓨터 비전, 인공지능, 데이터과학 분야의 종사하고 있는 전문가들은 최근 화두로 떠오른 딥러닝을 마주하고, 문제에 적용하기 위해서 머신러닝 알고리즘을 숙지해야한다.
물론 딥러닝이 만병 통치약은 아니지만, 딥러닝을 적용하기에 알맞다고 판단이 된다면 성능적인 측면에서 볼 때 실제 환경에 적용 시키는 노력이 필요하다.
2. 텐서플로우로 배우는 <강화학습 첫걸음>
머신러닝 알고리즘 중 하나인 강화학습은 지도학습과 비지도학습과는 달리 에이전트에게 주어진 환경에 대해 행위를 취하고 보상을 얻으면서 학습을 하기 때문에 조금은 다른 시각으로 바라 볼 필요가 있다. 강화학습의 개념을 명료하게 습득하기 위한 한빛미디어의 <강화학습 첫걸음>을 소개한다.
[그림 1] 강화학습 첫걸음 (한빛미디어)
2.1 <강화학습 첫걸음> 목차
책의 구성은 다음과 같이 되어있다.
1장은 주요 알고리즘 및 구현으로 되어있고, 2장은 심화 주제로 나뉘어져 있다.
[그림 2] 강화학습 첫걸음 목차
강화학습에서 주요 알고리즘은 콘텍스트 밴딧, 마르코프 결정 과정, Q 러닝, 딥 Q 네트워크, 부분 관찰성 및 순환신경망, 비동기적 어드밴티지 액터-크리틱으로 구성되어있다.
강화학습 첫걸음 책에서는 각 주요 알고리즘들의 개념들을 소개하고 이에 따른 알고리즘을 소개하고 있다. 다른 딥러닝 책들은 개념만 소개하거나, 코드의 일부만 주고 소개를 하는 책들이 있는데 이런 책들과는 달리 통으로 된 코드를 주요 개념에 따라서 나누고, 나누어진 코드 마다 세부적인 설명을 하였고, 또한 글로 풀어내기 어려운 개념은 복잡하지 않은 간단 명료한 그림과 함께 설명하고 있어서 강화학습을 처음 적용하는 필자에게 많은 도움이 되었다.
이 뿐만 아니라 2장의 심화 주제에서는 에이전트의 환경 탐험을 위한 액션 선택 전략 파트가 있다. 여기서는 그리디 접근법부터 시작해서 랜덤 접근법, 볼츠만 접근법 등의 여러 알고리즘의 개념과 각 알고리즘들의 단점, 구현 방식들을 명료하게 설명하고 있어서 이해하기 편리했다.
2.2 <강화학습 첫걸음>에서 소개하는 강화학습
이 책에서는 강화학습을 다음과 같이 정의한다.
"에이전트(행위자)의 액션(행위)은 환경에 영향을 줍니다. 트겅 액션은 환경의 상태를 변화시키고 이에 따라 에이전트는 보상을 받게 됩니다. 지구의 모든 생물이 공유하며 모든 지능적인 행동의 기반이 되는 관계가 바로 이러한 상호관계 입니다. 이러한 상호 관계를 포착하여 공식적인 모델로 만든 것이 바로 강화학습(RL, Reinforcement Learning) 입니다. "
사실 강화학습 개념은 예전부터 자리잡고 있었다. 필자도 학부 시절 인공지능 과목 강의를 들을 때 지도학습, 비지도 학습, 강화학습의 개념을 배웠다. 그런데 갑자기 이렇게 떠오른 이유가 무엇일까? 그 이유는 그래픽카드의 진화와 빅데이터의 조합으로 인해 방대한 양의 데이터를 딥러닝을 통해 학습하여 원하는 결과를 예측하는 것이 가능해졌기 때문이다.
특히나 컴퓨터 비전 학자들은 이미지 처리를 하는데 있어서 픽셀 기반 으로 이미지를 처리하였으나, 이제는 딥러닝 구조 중 하나인 CNN (Convolutional Neural Network) 구조를 이용하여 컨볼루션 단위로 이미지의 특징을 추출하여 처리를 할 수 있게 되었다. 방대한 양의 학습 데이터와 적절한 네트워크 구조의 조합은 우리가 원하는 결과를 뛰어난 성능으로 예측하고, 분류하고, 판별해 낼 수 있게 되었다.
더 나아가 강화학습은 에이전트 스스로가 관찰을 통해 환경으로 부터 얻는 보상과 취할 수 있는 액션을 학습함으로써 원하는 결과를 산출 해 낼 수 있다.
2.3 <강화학습 첫걸음> 을 읽고 나서
강화학습의 개념과 주요 알고리즘을 수록한 이 책의 구현은 주피터 노트북 환경의 파이썬 코드로 구성 되어있고, 텐서플로 기반으로 예제가 수록되어 있다. 주피터 노트북은 코드 하나하나를 실행 할 때 마다 바로 결과를 볼 수 있어서 딥러닝을 처음 접하는 사람들에게 세세히 공부할 수 있는 환경을 제공해주며, 이 책에서는 개념이 약간 어려울 수 있는 강화학습을 차근차근 이해하기 좋게끔 코드 정리가 깔끔하게 잘 되어있다.
강화학습 첫걸음 책은 핸드북으로 들고다니기에 좋은 사이즈여서 강화학습 개념을 간단하게 잡고 싶을 때 훑어보기에 좋은 책이다. 코드를 실제 문제에 적용하는 것이 아니라 학문적으로 먼저 접근하고 싶은 사람들이 더 깊은 내용을 공부하고자 한다면 각 페이지 하단에 참고문헌들이 잘 정리되어있기 때문에 이를 참고하여 더 깊은 내용을 학습 할 수 있다.
또한, 강화학습을 공부하고 실제 풀고자 하는 문제에 적용하기 위해서는 밴딧 문제부터 시작해서 코드를 직접 써보고 실행 해봐야 한다. 코드는 깃 허브(https://github.com/awjuliani/DeepRL-Agents)에 공개되어있어서 예제 코드를 공부할 때 참고하면 좋다.
이 책에서는 텐서플로우 기반의 파이썬 코드로 수록이 되어 있으나 텐서플로우 기본 함수에 대한 자세한 설명은 수록되어있지 않다. 그렇기 때문에 이 책에서는 대상 독자를 신경망과 경사하강법 등 머신러닝 기술에 어느 정도 익숙한 독자를 대상으로 한정하였다.
그렇기 때문에 머신러닝을 처음 접하는 사람들에겐 <밑바닥부터 시작하는 딥러닝> 책을 입문용으로 추천한다. 지도학습과 비지도학습을 충분히 이해하고 접했다면, 그 다음 단계로 딥러닝에 어느정도 익숙한 사람들에게 한빛미디어의 <강화학습 첫걸음> 책을 추천한다.
[그림 3] <강화학습 첫걸음> 참고링크
마지막으로 이 책을 읽으면서 제일 좋았던 점은 각 내용에 대한 참고할 만한 좋은 사이트 및 최근 발표된 주요 논문들의 링크를 포함하고 있다는 것이다. 이는 간단하게 살펴보고자 하는 독자들도 고려하고, 세세하고 깊은 내용이 필요한 독자들까지 고려하였다.
IT 내용을 공부할 때 출판사 한빛미디어의 책을 주로 보는 편인데 OpenCV 책부터 시작해서 딥러닝 관련 서적까지 꾸준히 보고있다. 앞으로도 새로운 학문 분야가 나올 때마다 좋은 내용을 잘 담은 책들이 끊임없이 나왔으면 좋겠다.
도서에 관한 상세 내용은 아래 링크에서 확인 할 수 있다.
http://www.hanbit.co.kr/store/books/look.php?p_code=B9929859785
'Book Review' 카테고리의 다른 글
[책] 파이썬 자료구조와 알고리즘 (0) | 2019.09.15 |
---|---|
[책] 최고 성능을 구현하는 10가지 검증된 기법, Optimized C++ (2) | 2019.08.09 |
[책] 파이토치 첫걸음 (2) | 2019.07.07 |
[책] 밑바닥부터 시작하는 딥러닝 2 (0) | 2019.06.08 |
[책] 텐서플로를 활용한 머신러닝 (0) | 2019.04.14 |