Posts (Lillicrap 2015 ICLR) Continuous Control With Deep Reinforcement Learning
Post
Cancel

(Lillicrap 2015 ICLR) Continuous Control With Deep Reinforcement Learning

목차

  1. Introduction
  2. Contribution
  3. Stochastic vs Deterministic policy
  4. Deterministic policy
  5. Additional
  6. Algorithm
  7. Reference

Introduction

이 논문은 DQN을 응용한 논문이다. DQN은 low-dimensional action space에 관한 문제들만 해결이 가능하다. 즉 사람의 팔과 같은 7 degree of freedom을 가지는 문제의 경우 높은 차원을 가지고 있기 때문에 해결하기가 어렵다. 그리고 Continuous space에서 사용하기 위해 넓은 범위를 discretization을 하여 사용하였다. 하지만 discretization을 한다면 정보 손실이 생길 것이다. 이전의 actor-critic algorithm과 다르게 stochastic이 아닌 determinstic을 이용하여 DQN의 actor critic version이라고 생각할 수 있을 것같다.

Contribution

이 논문의 contribution은 아래와 같다.

  1. Off-policy: 이전 논문들은 importance sampling을 통하여 off-policy로 만들었지만 이 논문은 그렇지 않다. stochastic이 아닌 deterministic policy를 사용함으로써 큰 replay buffer를 사용할 수 있고 reset을 할 필요가 없다.
  2. target q network: target network를 따로 두어 update하는 동안 안정적으로 만든다.
  3. Soft update: target network를 완전히 update하는 것이 아닌 \(\tau\)만큼만 업데이트를 한다. soft update는 target network가 천천히 안정적으로 update되게 만든다.

Stochastic vs Deterministic policy

이전 stochastic policy는 \(\mu\), \(\sigma\)를 가진 distribution에서 sample을 뽑는다. 하지만 deterministic policy는 어떤 distribution에서 sample을 뽑는 것이 아닌 한 가지 값을 선택하는 것이다.

stochastic policy의 경우 mean, variance를 학습하고 이 mean, variance의 distribution에서 sampling을 통하여 action을 선택한다면 deterministic policy는 output이 바로 action이 된다. 즉 deterministic policy는 \(\delta\)-function이다.

Deterministic policy

Deep Deterministic Policy Gradient(DDPG) 또한 Policy gradient 방식이므로 목적함수가 동일하다.

\[J_\theta = E[G_0] = \int_{s_0:a_\infty} G_0 P(s_0:a_\infty) \, d{s_0:a_\infty}\] \[= \int_{s_0:a_\infty} G_0 P(a_0:a_\infty \vert s_0) \, da_0:a_\infty P(s_0) ds_0 = \int_{s_0} V(s_0) P(s_0) ds_0\]

목적 함수는 Value function으로 표현이 가능하다.

\[V(s_0) = \int_{a_0:a_\infty} G_0 P(a_0:a_\infty \vert s_0) da_0:a_\infty\] \[= \int_{s_1:a_\infty} G_0 P(s_1: a_\infty \vert s_0, a_0) P(a_0 \vert s_0) d a_0 ds_1:a_\infty\] \[= \int_{a_0} Q(s_0, a_0) P(a_0 \vert s_0) da_0 = Q(s_0, a_{\theta,0})\]

V는 Q fuction으로 표현이 가능하다. 그리고 Action이 deterministic하기 때문에 \(\delta\) function이므로 적분이 사라지게 된다.

\[\int^\infty_\infty f(x) \delta(x-x_0) \,dx = f(x_0)\]

Q는 next Q로 표현이 가능하다.

\[Q(s_0, a_0) = \int_{s_1:a_\infty} (R_0 + \gamma G_1) P(s_1:a_\infty \vert s_0, a_0) \, ds_1:a_\infty\] \[= \int_{s_1:a_1} \int_{s_2:a_\infty} (R+\gamma G_1) P(s_1:a_\infty \vert s_0, a_0, s_1, a_1) P(s_1,a_1 \vert s_0, a_0) \, ds_1,a_1 \, ds_2:a_\infty\] \[=\int_{s_1,a_1} (R_0 + \gamma Q(s_1, a_1)) P(a_1 \vert s_1) P(s_1 \vert s_0, a_1) ds_1, a_1\] \[=R(s_0, a_{\theta,0}) + \int_{s_1} \gamma Q(s_1, a_{\theta,1}) P(s_1 \vert s_0, a_1) \, ds_1\]

우리는 목적함수를 최대화하기 위하며 미분을 한다.

\[\nabla_\theta J = \int_{s_0} \nabla_\theta V(s_0) P(s_0) \,ds_0 = \int_{s_0} \nabla_\theta Q(s_0, a_{\theta, 0} P(s_0) \,d s_0\]

\(\theta\)에 대해서 미분하기 위해 chain rule을 적용한다.

\(\nabla_\theta Q(s_0, a_{\theta,0}) = \nabla_{a_{\theta,0}} R(s_0, a_{\theta,0}) a_{\theta,0}' + \int \gamma Q(s_1, a_{\theta,1}) \nabla_{a_{\theta,0}} P(s_1 \vert s_0, a_{\theta,0}) a_{\theta,0}' \, ds_1\) \(+\int_{s_1} \gamma \nabla_\theta Q(s_1, a_{\theta,1}) P(s_1 \vert s_0, a_{\theta,0}) \, ds_1\)

\(= a_{\theta,0}' \nabla_{a_{\theta,0}} ( R_0 + \int_{s_1} \gamma Q(s_1, a_{\theta,1}) P(s_1 \vert s_0, a_{\theta,0}) \,ds_1)\) \(+ \int_{s_1} \gamma \nabla_\theta Q(s_1, a_{\theta,1}) P(s_1 \vert s_0, a_{\theta,0}) \, ds_1\) \(=a_{\theta,0}' \nabla_{a_{\theta,0}} Q(s_0, a_{\theta,0}) + \int_{s_1} \gamma \nabla_\theta Q(s_1, a_{\theta,1}) P(s_1 \vert s_0, a_{\theta,0}) \, ds_1\)

목적 함수를 미분하면 아래와 같다.

\(\nabla_\theta J = \int_{s_0} \nabla_\theta V(s_0) P(s_0) \,ds_0 = \int_{s_0} \nabla_\theta Q(s_0, a_{\theta, 0}) P(s_0) \,d s_0\) \(= \int_{s_0} a_{\theta,0}' \nabla_{a_{\theta,0}} Q(s_0,a_{\theta,0}) P(s_0) \, ds_0\) \(+ \int_{s_0} \int_{s_1} \gamma a_{\theta,0}' \nabla_{a_{\theta,1}}Q(s_1, a_{\theta,1})P(s_1 \vert s_0, a_{\theta,0})\,ds_1 P(s_0) \, ds_0\) \(+\int_{s_0} \int_{s_1} \int_{s_2} \gamma^2 a_{\theta,2} \nabla_{a_{\theta,2}}P(s_2 \vert s_1, a_{\theta,1}) \,ds_2 P(s_1) P(s_1 \vert s_0, a_{\theta,0}) \, ds_1 P(s_0) \, ds_0 + \cdots\)

\(=\underset{t=0}{\overset{\infty}{\sum}} \int_{s_0,s_1, \cdots s_t} \gamma^t a_{\theta,t}' \nabla_{a_{\theta,t}} Q(s_t, a_{\theta,t}) P(s_0) P(s_1 \vert s_0, a_{\theta,0}) P(s_2 \vert s_1, a_{\theta,1}) \cdots P(s_t \vert s_t, a_{\theta,t}) \, ds_0,s_1, \cdots s_t\) \(\approx \underset{t=0}{\overset{\infty}{\sum}} \int_{s_0,s_1, \cdots s_t} a_{\theta,t}' \nabla_{a_{\theta,t}} Q(s_t, a_{\theta,t}) P(s_0) P(s_1 \vert s_0, a_{\theta,0}) P(s_2 \vert s_1, a_{\theta,1}) \cdots P(s_t \vert s_t, a_{\theta,t}) \, ds_0,s_1, \cdots s_t\)

위 식이 update 식이다. DDPG는 sample을 구하기 위해 Q를 parameterize해서 사용한다. 위 식을 보면 policy가 존재하지 않고 transition만 존재하는 것을 확인할 수 있다. 그러므로 DDPG는 off-poliocy이다.

Actor를 update하기 위해서 Q를 사용하고 critic을 업데이트하기 위해서 TD error를 사용한다. 그리고 update 방식은 15 DQN과 같은 target network를 따로 두어 사용한다.

Additional

이 논문에서는 서로 다른 scale의 feature를 위해서 batch normalization을 사용한다고 한다. 또한 network를 처음 initialize를 할 때 범위를 지정한 후 그 사이에서 normal distribution에서 sampling하여 사용한다고 한다.

Algorithm

algorithm Algorithm

DDPG는 exploration을 위해서 action에 Ornstein-Uhlenbeck process(OU)로 생성한 noise를 추가한다. OU noise는 평균으로 회귀하는 random process이라고 한다. 간단하게 normal distribution에 low variance로 설정한 noise를 사용해도 작은 task에 대해서는 괜찮은 것을 확인했다.

Reference

  1. Lillicrap, Timothy P., et al. “Continuous control with deep reinforcement learning.” arXiv preprint arXiv:1509.02971 (2015).
  2. 혁펜하임 youtube
This post is licensed under CC BY 4.0 by the author.