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

 

 

 


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

 

 

 

OpenAI 공식 사이트는 다음과 같습니다. 

https://gym.openai.com/envs/CartPole-v0
여러가지 예제들 중에서 사이트에서도 OpenAI를 소개하는 예제로서 Cartpole예제를 사용하였습니다.

가장 간단한 예제인 것 같아서 Cartpole로 강화 학습 문제에 대해서 이해해보려고 합니다.

 

 

1. CartPole예제에서의 MDP

 

 

cartpole예제의 목표는 최대한 오랫동안 막대기를 세우고 있는 것입니다. 이 문제에 대한 정의는

OpenAI사이트에서 소개되고 있습니다.

https://gym.openai.com/envs/CartPole-v0

3.png

 

이 시스템은 track과 cart와 joint, pole로 이루어져 있습니다. cart는 track위에서 마찰없이 움직이며 cart와 pole은 자유로운 joint로 연결되어있어서 pole이 joint를 중심으로 자유롭게 회전할 수 있습니다. 이 시스템에는 중력이 작용하고 있어서 가만히 놔두면 pole은 밑으로 떨어지게 됩니다. 따라서 agent는 cart는 왼쪽 아니면 오른쪽으로 움직여서 pole을 세워놓아야합니다. reward는 pole이 세워져있는 시간인데 애초에 이 episode는 pole이 수직에서 15도 떨어지거나 가운데로부터 2.4units 만큼 떨어진다면 끝나게 되어있습니다. 따라서 episode가 유지되는 시간자체가 reward가 됩니다. 여기서는 discount factor가 없습니다. 

 

이 문제는 1983년도의 "Neuronlike Adaptive Elements That Can Solve Difficult Learning Problems-Andrew G. Barto, Richard S. Sutton , Charles W. Anderson" 에 정의되어 있습니다. 이 문제에서 말하는 state는 다음과 같습니다.

  • x : position of cart on the track
  • θ : angle of the pole with the vertical
  • dx/dt : cart velocity
  • dθ/dt : rate of change of the angle

즉, agent는 state로서 이 네가지를 observation하게 됩니다. 이 것을 실재로 코드를 실행시켜서 확인해보면 다음과 같습니다. 

https://gym.openai.com/docs

7.png

 

 

이 코드에서 보면 밑의 프린트되는 행렬은 observation으로서 각 time-step마다의 state를 보여줍니다. 첫번째 줄 [-0.061586 -0.75893141 0.05793238 1.15547541]에서 각각

 

x : -0.061586

θ : -0.75893141

dx/dt : 0.05793238

dθ/dt : 1.15547541

 

와 같이 됩니다.

 

 agent는 이러한 특정한 state에서 action을 결정하게 되는데 action은 cart에 impulse force를 왼쪽 아니면 오른쪽으로 가하는 것으로 0과 1로서 각각 정의됩니다. 하지만 결국에 action을 계속 취하려면 모든 state에 대한 q-value값들을 알고 있어야 하는데 그러면 사실 말도 안되는 숫자의 state에 대한 정보를 기억하고 있어야하고 학습이 상당히 느려지게 됩니다. x값에서 0.000001만 달라져도 agent는 "뭐야 무슨 상황이지? 어떻게 해야하는 거지?"라고 판단할 수 있습니다. 따라서 여기에 approximation이 들어가게 됩니다.

 

 


2. Deep Reinforcement Learning

 

Approximation이라는 단어를 처음 접하면 "추정? 뭘 추정한다는 거지"라고 생각이 들면서 어떤 개념인지 잘 와닿지 않습니다. 예를 들어보겠습니다.

 

 x,y의 2차 평면을 생각해봅시다. 그 위에 세 개의 점 (-1,0) (1,4) (0,1)이 놓여있습니다. 당장은 세 가지 x의 값에 대해서만 y의 값을 알고있습니다. 따라서 x = 2,3,4 등등의 점들에 대한 y의 정보는 알 수 없습니다. 하지만 이 세 개의 점을 2차함수로 fitting하게 되면 y = x2+ 2x + 1라는 식이 나오게 됩니다. 이렇게 되면 이차방정식의 3개의 계수(1,2,1)만 알면 모든 x에 대한 y의 값을 알 수 있게 됩니다. 모든 x,y조합을 모으는 것이 아니고 현재의 point들의 data를 조합해서 2차 함수로 만들어서 모든 x에 대한 y값을 알게됩니다. 

 

대신 (-1,0) (1,4) (0,1)을 제외하고 다른 점들은 사실 실재의 point가 아닌 추정되어진 x와 y의 조합이므로 실재의 값과의 error가 있을 겁니다. 그렇다하더라도 모든 state의 q-value를 기억하고 update하는 것 보다는 훨씬 효율적이고(point들의 data를 함수처럼 만들어서 한 state에서의 q-value를 안다면 주변 state의 q-value값들도 추정이 가능하게 하는 겁니다) 참 값은 아니겠지만 이 함수를 학습시켜나감에 따라 참 값에 도달하게 되기 때문에 결국은 최적의 policy를 찾아낼 수 있습니다.

 

 밑의 그림은 그러한 함수를 그림으로 표현한 것이고 그 함수는 state를 x로서 집어넣으면 q function의 값이 y값으로 튀어나오는 함수입니다. 여기서 w는 weight vector로서 2차방정식의 계수들같은 개념입니다. 바로 이 계수들이 학습의 대상이 됩니다. 

6.png

 

 

 이렇게 value function을 approximate하는 방법에는 여러가지가 있는데 가장 많이 사용되는 것은 neural network입니다. 즉 딥러닝을 통해서 approximate해서 강화학습을 하는 것이 바로 Deep learning + Reinforcement Learning = Deep Reinforcement Learning입니다. 이 cartpole예제에서도 deep neural network를 사용하게 됩니다. Deepmind에서 Deep Reinforcement Learning를 통해서 atari game에서 학습한 동영상이 다음과 같습니다.

https://youtu.be/V1eYniJ0Rnk

 

 

 

Q-value를 approximate하도록 학습된 deep neural networks를 DQN(Deep Q-Networks)라고 하는데 다음 포스팅에서는 DQN에 대해서 다루겠습니다.

번호 제목 글쓴이 날짜 조회 수
공지 강화학습 (Reinforcement Learning) 연구실 OpenRL 모임 안내 모두의연구소 2016.06.12 1204
22 softmax action result에 대한 reward 김상범 2017.10.31 238
21 강화학습 논문 웹사이트 모음 xelgana 2016.10.28 1395
20 Monte-Carlo Tree Search 코드 [3] file 이영무 2016.10.06 1754
19 2016. 9. 1. Asynchronous 발표 자료 [1] file 최한철 2016.09.10 401
18 2016. 9. 1. 발표자료 [3] 최한철 2016.08.29 465
17 Fundamental of Reinforcement Learning 링크 이웅원 2016.08.24 1046
16 2016.08.18 OpenRL 발표자료 file 이웅원 2016.08.17 732
15 강화학습 그리고 OpenAI - 4: CartPole with Policy Gradient (2) Code Review [5] file 이웅원 2016.07.20 4964
14 강화학습 그리고 OpenAI - 4: CartPole with Policy Gradient (1) Policy Gradient [9] file 이웅원 2016.07.15 9765
13 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (4) Code Review file 이웅원 2016.07.14 7901
12 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (3) TensorFlow 이웅원 2016.07.13 3725
11 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (2) DQN file 이웅원 2016.07.13 5569
» 강화학습 그리고 OpenAI - 3: CartPole with Deep Q Learning (1) CartPole example file 이웅원 2016.07.12 6134
9 DQN 발표자료 file 플룻 2016.07.11 916
8 강화학습 그리고 OpenAI - 2: Intro to Reinforcement Learning (2) Q Learning [4] file 이웅원 2016.07.08 14835
7 강화학습 그리고 OpenAI - 2: Intro to Reinforcement Learning (1) MDP &Value Function [2] file 이웅원 2016.07.04 16408
6 강화학습 그리고 OpenAI - 1: Introduction to OpenAI [3] file 이웅원 2016.07.01 19172
5 Reinforcement Learning by Sutton Chapter 5~16 file 마르코프김 2016.07.01 550
4 Reinforcement Learning by Sutton Chapter 1~4 [1] file 마르코프김 2016.06.30 2107