long8v / PTIR

Paper Today I Read
19 stars 0 forks source link

[134] Asynchronous Methods for Deep Reinforcement Learning #146

Open long8v opened 8 months ago

long8v commented 8 months ago
image

paper

TL;DR

Details

introduction

Reinforcement Learning Background

우리가 RL에서 하려는 건 environment $\epsilon$과 상호작용하는 agent가 있을 때, time step t의 $s_t$이 주어졌을 때 action $a_t$를 도출하는 policy $\pi$가 있을 때 discount factor $\gamma$로 할인된 $Rt= \sum {k=0}^{\infty} \gamma^k r_{t+k}$을 최대화하는 것!

이때 action value Q는 아래와 같이 표현되고 $Q^\pi (s) = \mathbb{E}[R_t|s_t =s, a]$ 이는 policy $\pi$를 따랐을 때 state s에서 action a를 취할 때 sum of reward의 기대값이다. value of state s도 유사하게 아래와 같이 표현된다. $V^\pi (s) = \mathbb{E}[R_t|s_t =s ] $이는 policy $\pi$를 따랐을 때 state s의 sum of reward의 기대값이다.

여기까지가 RL의 기본 셋팅! 여기서 value-based model-free method를 쓰면 $Q(s,a;\theta)$를 바로 NN로 근사한다. 이게 Q-learning. 그럼 우리는 optimal $Q^*(s,a)$를 NN의 파라미터 $\theta$로 바로 근사하면 된다. 이때 우리의 loss는

image

~아 좀 헷갈리는뎅.. state s, a에서 전이되는 s'를 maximize하는 a'를 최대화하는 $\theta$를 구하니까 policy도 구할 수 있는건가 Q만 구해서 뭐에 쓰는거지? Q를 구하면 policy도 자동으로 구해지는건강 (Q를 최대화하는 a를 구하면 되니까?)~ RL은 언제나 policy network가 있음! Q는 (t+1) 시점 이후로의 reward를 근사하는 값!

이때 Q-learning의 단점은 reward를 얻는 (s, a) pair만 직접 영향을 받고 다른 (s, a) pair들은 비간접적으로 영향을 받아서 학습이 느리다. 이를 해결하기 위해 나온 것이 n-step Q-learning. 이건 할인 ratio $\gamma$를 적용해서 다른 time step까지 현재 reward에 영향을 주게 하는 것인듯?

image

이렇게 하면 single reward $r$이 이전의 state action pair에도 직접적으로 영향을 줄 수 있게 된다.

반대로 policy-based model들은 policy $\pi(a|s, \theta)$를 바로 parametrize한다. 이때의 loss는 $\mathbb{E}[R_t]}이다(gradient ascent) REINFOCE 류들이 이렇게 하는데 $\theta$를 아래와 같이 구하고

image

이게 variance가 높아서 이를 낮추려고 bias term을 빼게 된다.

image

이때 이 bias term을 V로 근사해서 구하면 더 variance가 낮아지는데 이게 바로 actor-critic architecture다

image

Asynchronous RL Framework

multi-thread를 써서 asynchronous하게 하면 된다.

별거 없고 그냥 thread T개 일 때까지 grad accum 했다가 한번에 업데이트하는거~

image

위의 말 무슨 말인지 모르겠음 원래는 과거로 가야되는데 미래로 간다..? $t_max$일 때 까지 exploration 한 다음에 한번에 업데이트하는 듯 하다.

학습은 RMSProp 사용

Result

image

이론적으로는 같은 sample 개수를 봤을 때 동일성능이 나오면 좋음. 근데 우린 multi-thread 쓰니까 4개 thread쓰면 wall-clock time이 4배 단축되는 효과! 그런데 추가로 놀랍게도 Q-learning과 sarsa 알고리즘의 경우 동일 샘플 개수 대비 성능이 더 좋았다고. one-step method보다 bias를 줄여서?