본문 바로가기

RL/Contents

[Ch.1] Introduction

우리가 공부하고자 하는 강화학습(Reinforcement Learning)에 대해 알아보는 것으로 시작하겠습니다.

과연 강화학습은 무엇이고, 어떤 것을 강화학습이라고 부르며, 이것이 적용된 예는 어떤 것이 있는지 살펴보는 Chapter입니다.

 


Reinforcement Learning in ML

 강화학습의 정의에 대해 살펴보기 전에, 강화학습이 속해있는 Machine learning에 대해 간단히 살펴보겠습니다.

 

< Fig1. Machine learning의 분류 >

 

ㆍ Supervised Learning : 지도학습은 Label이라는 정답 data를 알고 있어서 이로부터 즉각적인 feedback을 받으며 학습하는 것을 말합니다. 현재의 data들을 바탕으로 미래를 예측하거나, 정답이 있는 결과를 맞추는데에 목적이 있습니다. 대표적으로 분류(Classification)를 예로 들 수 있겠네요. K-NN, SVM, Decision Tree 등이 있습니다. 

 

ㆍ Unsupervised Learning : 비지도학습은 정답에 해당되는 Label이 없습니다. 따라서 즉각적인 feedback을 받을 수 없습니다. 대표적으로는 Clustering과 같은 방법론들이 비지도학습에 해당합니다.

 

ㆍ Reinforcement Learning : 강화학습은 Label은 없지만 환경으로부터 주어진 reward를 통해 action을 학습합니다. 이와 같은 면에서 reward도 label로 보는 견해가 있으나, 환경과 상호작용을 한다는 측면에서 다릅니다.

 

그럼 강화학습에 대해서 더 자세히 알아보겠습니다.

 

Definition

 강화학습이라는 말 그대로 무엇을 강화하며 학습하는 인공지능입니다. 과연 무엇을 강화하고 무엇을 학습하는 걸까요? 이 말의 의미를 조금 생각해보자 여러 정의들을 가져왔습니다.
 
 
<Wikipedia>

강화 학습(Reinforcement learning)은 기계 학습의 한 영역이다. 행동심리학에서 영감을 받았으며, 어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법이다. 

 

<KAIST 김종환 교수>

강화학습이란 잘한 행동에 대해 칭찬 받고 잘못한 행동에 대해 벌을 받은 경험을 통해 자신의 지식을 키워나가는 학습법이다. 로봇 (Robot) 이 여러 번의 실패와 성공경험을 쌓으며 주어진 작업을 잘 수행할 수 있도록 하는 것이다. 로봇은 어떤 상태에서 가능한 행동들 중의 하나를 선택, 이 행동 결과에 따른 포상 (reward) 을 받고 나서 다음 상태를 알게 된다.

 

<AI Topics : Reinforcement Learning>

강화학습수치로 표현되는 보상 (reward) 신호를 최대로 하기위해서 무엇을 해야할지 (어떻게 상황과 행동을 매핑 해야할지) 를 학습하는 것이다. 학습자는 대부분의 기계학습 (Machine Learning) 에서 처럼 어떤 행동을 취해야 할지를 직접 배우는 것이 아니라 어떤 행동을 해야 가장 좋은 보상이 주어지는 지를 발견해야 하는 것이다.

 

일관되게 출현하는 단어를 보자면 환경(상황 혹은 상태), 행동, 보상이 자주 등장합니다. 

이 단어들과 위 정의를 함께 생각해보면 강화학습은 환경(environment)와 Agent 사이에서 상태, 행동, 보상을 interaction하며 학습하는 것이라고 개괄적으로 이해를 할 수 있겠습니다. 아래는 강화학습에 대해 나름대로 정리해본 그림입니다.

 

< Fig2. 강화학습의 Interaction >

 

즉, Environment(환경, 이하 Env.)이 Agent에게 특정 상황(state)을 주면(Agent가 관찰에 의해 이를 얻게 된다고 볼 수도 있습니다) 

Agent는 그에 대해 반응(action)을 하고 Env.은 Agent에게 보상(reward)를 주게 됩니다. 이러한 과정으로 Agent는 Env.와 상호작용을 하며 reward를 많이 취할 수 있는 action들을 학습을 하는 것이고, 이를 강화학습이라고 부릅니다.

 

엄밀히 말씀드리자면, 강화학습의 목적은 reward를 최대화 하는 policy를 찾는 것인데, 이는 차차 다루도록 하겠습니다 :)

 

Wikipedia의 정의와 마찬가지로 강화학습은 행동심리학에 영향을 받았습니다. 그래서 사람이 무엇을 배우는 방식과 매우 유사하게 학습을 합니다. 우리는 어릴 때부터 자전거를 타고 운전을 하며 컴퓨터를 사용할 수 없었습니다. 우리가 할 줄 아는 모든 것은 방법을 알고 이것이 익숙해지는 학습의 과정들이 있었습니다. 강화학습도 마찬가지로 1) Trial and Error, 2) Delayed Rewoard라는 두 가지 특성을 갖습니다.

 

 


Properties of RL

 1. Trial and Error

 의미 그대로 시행착오입니다. 저는 보드 타는 것을 좋아해서 매 겨울마다 스키장을 가는데요, 저는 원래 보더가 아닌 스키어였습니다. 하지만, 보드에 대한 맹목적인 동경으로 처음으로 보드를 탔는데 두 발이 자유로운 스키만 타다가 모두 고정이 된 보드를 타니 균형잡는게 매우 어려웠습니다. 저는 넘어질 때마다 갖은 부끄러움과 아픔을 보상으로 받으며 생각했습니다. '아 몸을 정확히 지탱해야 덜 기우는 구나.' '몸에 힘을 빼고 미끄러져야 넘어질 때 안 아프구나.' '다음에는 넘어지지 말아야지' 이와 같이 많이 넘어지고 넘어지는 것을 무서워하지 않으며 보드를 배웠고, 지금은 즐길 수 있을만큼 타게 되었죠. 다시 강화학습에서 말씀드리자면, 핵심은 예측된 행동이 아니라, 행동으로 얻은 보상으로 행동의 가치를 판단하고 더 많은 보상을 얻기 위해 배워간다는 것입니다.
 

  2. Delayed Reward

 이 두 번째 특징은 '보상을 받는 시간'과 관련 있습니다. 강화학습이 적용되는 문제들은 시계열이기때문에 Agent가 한 행동에 대한 보상이 늦어질 가능성이 있습니다. 또한, 단일 행동에 대한 것이 아닌 여러 행동의 조합으로 보상이 이루어지는 경우도 있기 때문에 보상에 시간의 개념이 적용됩니다. 
 

Example

 다음은 강화학습이 적용된 여러 사례들입니다. 이제까지 살펴본 강화학습의 개괄적인 내용을 염두해보며 어떻게 학습을 하며 어떤 결과를 이루어내는지 생각해보면 좋을 듯합니다.
 

  1. Atari 'Breakout'

<Video 1. Atari 'Breakout' Agent with DRL>

 

 Playing atari with deep reinforcement learning 이란 논문에서 발표된 것입니다. Atari 'Breakout'(일명 벽돌깨기)라는 고전게임을 Reinfocrement Learning + Deep Learning으로 학습시켜 이를 수행하는 동영상입니다. 1:13부터 보시면 이 game agent는 단순히 벽돌을 깨는 것이 아니라 뒷 편으로 보낼 수 있는 터널을 뚫어 고득점을 취하는 전략을 구사합니다. 이 전략을 구사하는 process를 생각해보자면, 
 
 1) Env.로부터 state를 받아
 2) 주어진 state에서 어떤 action을 취하면서
 3) score를 maximize하는 어떤 action을 Trial and Error를 반복하며 학습합니다. 
 4) 터널을 뚫고 그 곳으로 공을 보내는 action이 단일 행동에 대해 reward를 가장 많이 얻으므로
 5) 이 action을 계속해서 채택하게 됩니다.
 
이와 같이 일련의 action들을 연속적으로 채택하게되는 것을 policy라고 합니다.
이 행동의 조합은 agent가 이미 알고 있던 것이 아닙니다. 여러 Trial and Error를 반복하며 학습하게된 결과물입니다.
 
이 논문에서 주목할 점은 RL + DL의 결합뿐만이 아니라 Deep neural network를 function approximator로 사용했다는 점입니다. Machine Learning에서 Algorithm과 마찬가지로(어쩌면 더) 중요한 issue는 어떤 data를 어떻게 얻느냐 일 것입니다. 위와 같은 game에서는 굉장히 많은 data들이 쏟아져 나오는데 이를 일일이 저장해서 학습하기는 어려울뿐더러 효과도 좋지 않을 것입니다. 그래서 이 데이터를 함수의 형태로 만들어 정확하지 않지만 근사적으로 추정을 하도록하여 효율적으로 학습을 하는 Algorithm을 채택했다고 할 수 있습니다.
 

  2. Super Mario

<Video 2. SuperMario Agent with DRL>

 

다음은 모두가 잘 아시는 슈퍼마리오입니다. 어릴 적 많이 했었는데 이 게임에서도 강화학습을 통해 agent가 게임을 수행합니다. 

(주)카카오의 송호연님께서 이를 구현하실 수 있게 도움을 주셨습니다. 시간내서 한번 구현해보고 싶네요.

 

 

마치며

 Sutton 교수님 책에서 아래와 같은 문장이 있습니다.

Reinforcement learning is defined not by characterizing learning methods, but by characterizing a learning problem.

강화학습은 학습을 하는 '방식'이 아닌, 어떻게 강화학습 '문제'인가로 정의됩니다. 

미리 말씀드리자면, 강화학습은 MDP(Markov Decision Process)로 표현되는 문제를 푸는 것이라고 할 수 있습니다.

 

다음 포스팅은 강화학습을 다루며 나온 용어들(State, Action, Policy ...)의 개념과 강화학습이 정의되는 MDP에 대해 살펴보겠습니다.

 

오탈자나 잘못 언급된 부분이 있으면 댓글로 지적해 주세요 :)

 

 

 

Reference

[1] https://dnddnjs.gitbooks.io/rl/content/reinforcement_learning.html 

[2] https://ko.wikipedia.org/wiki/%EA%B0%95%ED%99%94_%ED%95%99%EC%8A%B5

[3] http://www.aistudy.com/learning/reinforcement_learning.htm 

[4] https://aitopics.org/search

[5] https://brunch.co.kr/@kakao-it/144

'RL > Contents' 카테고리의 다른 글

[Ch.6] Temporal Difference Methods  (9) 2018.01.18
[Ch.5] Monte-Calro Methods  (23) 2018.01.01
[Ch.4] Dynamic Programming  (16) 2017.12.28
[Ch.3] Bellman Equation  (11) 2017.12.24
[Ch.2] Markov Decision Process  (11) 2017.12.16