close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

 

2016.07.12 Leewoongwon


Reinforcement Learning 그리고 OpenAI

 

<Contents>

 

1. Introduction to OpenAI

 

2-1. Intro to Reinforcement Learning (1) MDP & Value Function

2-2. Intro to Reinforcement Learning (2) Q Learning

 

3-1.  CartPole with Deep Q Learning (1) CartPole example  

3-2. CartPole with Deep Q Learning (2) DQN(Deep Q-Networks)

3-3. CartPole with Deep Q Learning (3) TensorFlow

3-4. CartPole with Deep Q Learning (4) Code review

 

4-1. CartPole with Policy Gadient (1) Policy Gradient

4-2. CartPole with Policy Gadient (2) Code review

 

5-1. about Atari games

5-2. Atari "Pong"

5-3. Atari "Breakout"

 

6. MuJoCo

 

 


2-1. Intro to Reinforcement Learning (1) MDP & Value Function

 


1. What is Reinforcement Learning

 

 

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

위키피디아에서 강화 학습을 다음과 같이 설명하고 있습니다. 

 

강화 학습(Reinforcement learning)은 이 다루는 문제 중에서 다음과 같이 기술

되는 것을 다룬다. 어떤 환경을 탐색하는 에이전트가 현재의 상태를 인식하여

어떤 행동을 취한다. 그러면 그 에이전트는 환경으로부터 포상을 얻게 된다. 포

상은 양수와 음수 둘 다 가능하다. 강화 학습의 알고리즘은 그 에이전트가 앞으

로 누적될 포상을 최대화 하는 일련의 행동으로 정의되는 정책을 찾는 방법이다.

 

학습이라는 것에 대해 생각할 때 우리가 제일 처음 생각해낼 수 있는 것은 환경과의 상호작용을 통한 학습입니다. 그러한 개념은 거의 모든 인공지능의 이론의 기본 바탕이 되어있습니다. 그러한 학습을 computational하게 접근하는 것을 machine learning이라고 합니다. 

 

강화학습은 machine learning의 범주 안에 있는 학습 방법 중의 하나입니다. 그 방법 중에서 아이가 걷는 것을 배우는 것처럼 어떻게 행동할 줄 모르지만 환경과 상호작용하면서 걷는 법을 알아가는 것과 같은 학습 방법을 강화학습이라고 합니다. 다른 머신러닝 기법들보다 더 목표 지향적인 학습 방법입니다. 제가 공부하면서도 느낀 것은 강화학습으로 학습하는 방법은 사람이 평소에 어떤 것을 배워나가고 일상속에서 행동하는 방법과 상당히 유사하다는 것입니다.

 

 사람이 처음 자전거를 배울 때를 생각해봅시다. 어릴 때 부모님이 자전거를 가르쳐주실 때 "이 자전거는 ~~한 시스템이고 ~~한 dynamics를 가지고 있어서 만약 10도 정도 기울었을 때는 핸들을 반대로 ~~한 각속도로 틀어줘야한다. 근데 너의 몸무게가 얼마나 되지?" 이렇게 가르쳐주시지 않았을 겁니다. 아마도 아무것도 모르고 자전거에 올라서 타보면서 어떻게 자전거를 타는 지 배우는데 이렇게 하면 넘어지고 이렇게 하면 똑바로 간다는 것을 학습했을 것 입니다.

 

dynamics를 모르고 학습하는 것이기 때문에 다음 영상과 같이 단순히 핸들 방향만 바꾼 건데 전혀 자전거를 탈 수 없게 됩니다.

https://youtu.be/EqXL7xC-4Y4

Screenshot from 2016-07-12 15:34:22.png

 

 

 강화학습도 이와 마찬가지로 agent가 아무것도 모르고 환경속으로 들어가서 경험을 통해 학습하는 것입니다. 그냥 간단히 생각하기에 "컴퓨터니까 다 계산해서 게임하거나 로봇을 움직이거나 하면 안돼?"라고 생각할 수도 있겠지만 작은 gridworld같은 경우에야 모든 것을 계산 할 수 있겠지만, 바둑 같은 경우나 혹은 실재의 세상에서 모든 것을 계산하는 것은 불가능한 일입니다. 하지만 모든 사람은 프로바둑기사가 될 수는 없어도 하다 보면 바둑을 둘 수 있게 됩니다. 인공지능이 사람의 그러한 학습방법을 모티브 삼아서 학습을 하는 것입니다.

 

다시 위키피디아의 강화학습 정의를 살펴보면, "상태", "환경", "행동", "포상"과 같은 단어들이 등장합니다. 문제를 풀고 싶을 때 가장 먼저 하는 것이 문제의 정의입니다. 실재로 무엇인가를 학습하기 위해서는 그 학습의 바탕이 되는 문제의 정의가 필수적입니다. 강화학습에서는 그 문제는 MDP(Markov Decision Process)로 정의되며 특정 Environment에서 Agent(사람으로 치자면 뇌)가 그 Environment를 MDP로 이해합니다. 이 MDP라는 것에 대해서 살펴보는 것으로 강화학습의 공부가 시작됩니다. 

 

 

 

 


2. What is MDP

 

Silver교수님 강의에서는 MDP를 배우기 전에 Markov하다는 말의 정의와 Markov Chain, Markov Reward Process를 배웁니다. Markov는 1800년대의 러시아 수학자의 이름입니다. 이 분의 이름이 하나의 형용사가 되었는데 그 의미는 다음과 같습니다.

 

1.png

 

뒤에서 state와 value에 대해서 설명하겠습니다. 

 

위의 첫 식처럼 처음 어떠한 상태로부터 시작해서 현재 상태까지 올 확률이 바로 전 상태에서 현재 상태까지 올 확률과 같을 때, 두 번째 식처럼 표현이 될 수 있고 state는 Markov하다고 일컬어질 수 있습니다.

 

스타크래프트같은 게임이라고 생각하면 게임 중간 어떤 상황은 이전의 모든 상황들에 영향을 받아서 지금의 상황이 된 것이기 때문에 사실은 지금 상황에 이전 상황에 대한 정보들이 모두 담겨있는 것입니다.. 우리가 접근하는 모든 문제의 state가 Markov property라고 말할 수는 없지만 그럴 경우에도 state는 Markov라고 가정하고 강화학습으로 접근합니다.

 

강화학습에서는 value라는 어떠한 가치가 현재의 state의 함수로 표현되기 때문에  state가 Markov하다는 것은 상당히 중요합니다. 따라서 강화학습에서는 state가 Markov하다라고 가정하고 실재로도 이렇게 가정했을 경우에 문제가 생기지 않습니다.

 

Markov Chain과 MRP같은 경우에는 MDP로 가는 과정중에 있고 저의 경우에는 오히려 헷갈리는 것 같아서 이 포스팅에서는 두 가지에 대한 내용을 뺐습니다.

 

 

다음은 UC Berkeley의 intro to AI 강의의 slide에서 가져온 그림입니다.

http://ai.berkeley.edu/lecture_slides.html

Screenshot from 2016-07-12 15:12:25.png

 

 

따라서 위 그림에서 로봇이 세상을 바라보고 이해하는 방식이 MDP가 됩니다. MDP란 Markov Decision Process의 약자로서 state, action, station probability matrix, reward, discounted factor로 이루어져있습니다. 로봇이 있는 위치가 state, 앞뒤좌우로 이동하는 것이 action, 저 멀리 보이는 빛나는 보석이 reward입니다.

 

다시 제가 들었던 Silver교수님의 강의에서 말하는 MDP의 정의를 살펴보겠습니다. 밑의 그림은  http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html에 있는 2장 자료에서 가져왔습니다. 

 

1.png

 

  • State

간단히 설명을 하자면 state는 agent가 인식하는 자신의 상태입니다. 사람으로 치자면 눈이라는 관측도구를 통해서 "나는 방에 있어"라고 인식하는 과정에서 "방"이 state가 됩니다.

 

이 이외에도 state는 생각보다 많은 것들이 될 수 있는데 달리는 차 같은 경우에는 "차는 Jeep이고 사람은 4명 탔으며 현재 100km/h로 달리고 있다"라는 것이 state가 될 수 있습니다. OpenAI에도 있는 atari game같은 경우에는 게임화면 자체, 즉 pixel이 agent가 인식하는 state가 됩니다. 즉, 문제는 정의하기 나름입니다.

 

 

  • Action

 Agent의 역할은 무엇일까요? environment에서 특정 state에 갔을 때 action을 지시하는 것입니다. robot이 왼쪽으로 갈지, 오른쪽으로 갈 지를 결정하는 거죠. 그래서 사람의 뇌에 비유하는 것 같습니다. "오른쪽으로 간다", "왼쪽으로 간다"라는 것이 action이 되고 agent가 그 action를 취했을 경우에 실재로 오른쪽이나 왼쪽으로 움직이게 됩니다.

 

 

  • State transition probability matrix

robot이 움직인다고 생각해봅시다. robot이 왼쪽으로 움직이면 위치가 변하듯이, action을 취하면 environment상의 agent의 state가 변하는 데 그것또한 environment가 agent에게 알려줍니다. 정확히 말하면 agent가 observe하는 것 입니다. 대신에 어떠한 외부요인에 의해 (ex 바람이 분다던지) robot이 왼쪽으로 가려했지만 오른쪽으로 가는 경우가 발생할 수 있습니다. 다음 그림을 참고하면 개념이 좀 더 잘 와 닿으실 겁니다. 로봇은 앞으로 간다고 갔지만 왼쪽으로 가서 불에 빠질 수도 있고 오른쪽으로 갈 수도 있다는 것입니다. 그 확률을 표현하는 것이 "state transition probability matrix"입니다.

Screenshot from 2016-07-12 16:06:30.png

 

 

정의는 다음과 같습니다. s라는 state에서 a라는 행동을 취할 때 s'에 도착할 확률을 이야기합니다.

Screenshot from 2016-07-12 16:15:32.png

 

 

 

  • Reward

agent가 action을 취하면 그에 따른 reward를 "environment"가 agent에게 알려줍니다. 그 reward는 atari game에서는 "score", 바둑의 경우에는 승패( 알파고가 학습하는 방법), trajectory control의 경우에는 "의도한 궤도에 얼마나 가깝게 움직였나"이 됩니다. 정의는 다음과 같습니다. s라는 state에 있을 때 a라는 action을 취했을 때 얻을 수 있는 reward입니다.

Screenshot from 2016-07-12 16:16:03.png

 

이 reward를 imediate reward라고 하는데 agent는 단순히 즉각적으로 나오는 reward만 보는 것이 아니라 이후로 얻는 reward들까지 고려합니다.

 

 

 

  •  Discount Factor

reward의 정의에 따라 각 state에서 어떠한 action을 취하면 reward를 받게 되는데 이때 단순히 받았던 reward들을 더하면 다음과 같은 문제가 발생합니다.

 

(1) 어떠한 agent는 각 time-step마다 0.1씩 reward를 받고 다른 agent는 1씩 받았을 경우에 시간이 무한대로 흘러간다면 0.1씩 계속 더해도 무한대이고 1씩 계속 더해도 무한대입니다. 수학에서 무한대는 크기 비교를 할 수 없습니다. 

 

(2) 다음 두 가지 경우를 구분 할 수가 없습니다. agent가 episode를 시작하자마자 1 받았을 경우와 끝날 때 1을 받았을 경우를 둘 다 전체 reward를 1을 받았기 때문에 두 상황중에 어떤 경우가 더 나은 건지를 판단할 수 없습니다.

 

따라서 discount factor라는 개념이 등장하게 됩니다. 사람의 입장에서 생각해보면 당장 지금 배고픈 것을 채우는 것이 내일 배고픈 것을 채우는 것보다 중요하다 생각하고 행동하는 것처럼 discount factor를 통해서 시간에 따라서 reward의 가치가 달라지는 것을 표현하는 것 입니다. discount factor는 0에서 1 사이의 값 입니다. 다음 그림을 보면 이해가 쉽습니다.

 

Screenshot from 2016-07-12 16:27:07.png

제가 이해하기로는 discount factor가 0이면 상당히 근시안적인 것이고 discount factor가 1이면 상당히 미래지향적인 것이라서 사실은 사람이 어떤 행동을 결정할 때 미래를 생각하며 결정하긴 하지만 모든 미래에 일어날 일을 다 고려하지는 않습니다. 따라서 dicount factor는 보통 0에서 1사이의 값을 사용합니다.

 

 

 

 

 

 

이렇듯 agent는 action을 취하고 state를 옮기고 reward를 받고 하면서 environment와 상호작용을 하는데 그 그림은 다음과 같습니다. 

2.png

 

 

agent가 observation을 통해서 자신의 state를 알게되면 그 state에 맞는 action을 취하게 됩니다. 학습을 하지 않은 초기에는 random action을 취합니다. 그러면 environment가 agent에게 reward와 다음 state를 알려주게 됩니다. OpenAI에서는 프로그램 자체가 Environment가 됩니다.

 

 

  • Policy

뜻 그대로 풀이하자면 "정책"입니다. 위에서 말했듯이 agent는 어떤 state에 도착하면 action을 결정하는 데 어떤 state에서 어떤 action을 할 지를 policy라고 합니다. 결국에 강화학습의 목적은 optimal policy ( accumulative reward = return 을 최대화하는 policy)를 찾는 것입니다. policy의 정의는 다음과 같습니다. state s에서 aciton a를 할 확률을 이야기합니다.

Screenshot from 2016-07-12 16:19:31.png

 


3. Value function

 

  • State-value function

agent가 state 1에 있다고 가정해봅시다. 거기서부터 쭉 action을 취해가면서 이동할테고 그에 따라서 reward를 받는 것들을 기억할 것입니다. 끝이 있는 episode라고 가정했을 때 episode가 끝났을 때 state 1에서부터 받았던 reward를 다 더할 수 있을 겁니다. 밑은 Silver교수님 강의 chapter 2에서의 return의 정의입니다.

4.png

Return에 대한 식은 위와 같고 이 return의 expectation이 state-value function입니다. expectation은 기대값으로서 평균은 expectation안에 포함되는 개념입니다. 주사위를 던 질 경우 얼마나 나올지에 대한 기대값으로도 expectation을 사용합니다. 아래와 같이 표현됩니다.

 

Screenshot from 2016-07-08 14:47:02.png

즉, 어떤 상태의 s의 가치입니다. 따라서 agent는 다음으로 갈 수 있는 state들의 가치를 보고서 높은 가치가 있는 state로 가는 것을 선호하게 되는 것입니다. 하지만 단순히 다음 상태의 value function만 가지고 판단하지는 않습니다.

 

 

 

  • Action-value function

하지만 막상 그렇게 하려고 하니 다음 state들에 대한 정보를 다 알아야하고 그 state로 가려면 어떻게 해야하는 지(예를 들면 화살을 쏠 때 바람이 부니까 조금 오른쪽으로 쏜다라던지)도 알아야합니다. 이  environment의 MDP라는 모델을 몰라도 학습한다는 것이 강화학습의 핵심개념입니다. 그것보다는 왼쪽으로 발을 디디는 것이 나은 건지 오른쪽으로 발을 디디는 것이 나은 건지에 대한 정보만 알고 있으면 행동하기에 편할 것입니다. 여기서 Action-value function의 개념이 나오게 됩니다.

  5.png

 

 어떤 state s에서 action a를 취할 경우의 받을 return에 대한 기대값으로서 어떤 행동을 했을 때 얼마나 좋을 것인가에 대한 값입니다. 앞으로 Value function이 아닌  action-value function을 사용할 겁니다. Action-value function은 다른 말로 Q-value로서 q-learning이나 deep q-network같은 곳에 사용되는 q라는 것이 이것을 의미합니다.

 

 

 

 

 

다음 글에서는 MDP에서 Q function을 가지고 어떻게 학습하는 지에 대해서 알아보도록 하겠습니다.

번호 제목 글쓴이 날짜 조회 수
공지 강화학습 (Reinforcement Learning) 연구실 OpenRL 모임 안내 모두의연구소 2016.06.12 1127
22 softmax action result에 대한 reward 김상범 2017.10.31 210
21 강화학습 논문 웹사이트 모음 xelgana 2016.10.28 1290
20 Monte-Carlo Tree Search 코드 [3] file 이영무 2016.10.06 1640
19 2016. 9. 1. Asynchronous 발표 자료 [1] file 최한철 2016.09.10 385
18 2016. 9. 1. 발표자료 [3] 최한철 2016.08.29 376
17 Fundamental of Reinforcement Learning 링크 이웅원 2016.08.24 1001
16 2016.08.18 OpenRL 발표자료 file 이웅원 2016.08.17 713
15 강화학습 그리고 OpenAI - 4: CartPole with Policy Gradient (2) Code Review [5] file 이웅원 2016.07.20 4569
14 강화학습 그리고 OpenAI - 4: CartPole with Policy Gradient (1) Policy Gradient [9] file 이웅원 2016.07.15 8797
13 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (4) Code Review file 이웅원 2016.07.14 7352
12 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (3) TensorFlow 이웅원 2016.07.13 3563
11 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (2) DQN file 이웅원 2016.07.13 5237
10 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (1) CartPole example file 이웅원 2016.07.12 5708
9 DQN 발표자료 file 플룻 2016.07.11 871
8 강화학습 그리고 OpenAI - 2: Intro to Reinforcement Learning (2) Q Learning [4] file 이웅원 2016.07.08 13713
» 강화학습 그리고 OpenAI - 2: Intro to Reinforcement Learning (1) MDP &Value Function [2] file 이웅원 2016.07.04 15354
6 강화학습 그리고 OpenAI - 1: Introduction to OpenAI [3] file 이웅원 2016.07.01 18084
5 Reinforcement Learning by Sutton Chapter 5~16 file 마르코프김 2016.07.01 520
4 Reinforcement Learning by Sutton Chapter 1~4 [1] file 마르코프김 2016.06.30 1988