Deep Deterministic Policy Gradient

Policy Gradient에 대한 간단한 소개에 이어, Actor-Critic을 소개하면서 policy gradient에 관한 RL의 기본적인 내용은 기술하였다고 생각한다. 이 방법은 RL분야에서 가장 중요한 방법중의 하나로 널리 사용되고 있으므로 발표된지 오래되었지만 중요한 논문은 정리를 해야할 필요가 있다고 생각한다. 이번에 소개할 논문은 policy gradient theorem에서 파생된 이론으로 RL분야에서는 활용성이 높은 기술이다.

Continuous control with deep reinforcement learning

논문 제목이 암시하듯이 이 방법은 action space가 discrete space가 아닌 continuous space에 적용할 수 있다. 우리가 뭔가를 제어해야 할때 가장 기본적 action space는 one dimension에 +/0/- 와 같이 3가지 경우를 가지는 action space를 생각해 볼 수 있다. 그런데, one dimension이더라도 실수값의 제어변수를 가지는 정밀 제어를 해야 하는 경우는 continuous action space를 고려해야 하고 dimension이 많아지면 문제는 더욱 더 복잡해 질 것이므로 보다 일반적 RL 알고리즘이 필요함을 알 수 있다.

이 논문은 continuous action domain을 가지 시스템에서 원하는 목적을 달성하도록 제어를 하는 알고리즘으로 actor-critic model-free policy gradient 방법을 적용하는 기술에 대한 소개이다. 논문에서는 이 기술을 Deep Deterministic Policy Gradient(DDPG)라고 지칭하였는데, deep이라는 단어를 사용한 이유는, DQN과 같이 Actor와 Critic approximation function에 neural network를 사용하였기 때문이다. 이 논문이 나온 배경에는 Silver의 논문 Deterministic Policy Gradient method과  DQN이 있다.

DDPG의 의미

DQN이 가지는 큰 의미는 State/Observation space dimension이 매우 크더라도 신경망이 이를 처리하여 의미 있는 결과를 얻을 수 있음을 보여준 것이다. 물론 알고리즘의 안정적 수렴을 위해 스마트한 기술을 도입하긴 했지만 DQN은 action space는 크지 않는 경우를 대상으로 하였다.  그러나 실제적 일에는 action space가 연속적이거나 dimension이 매우 큰 경우가 많으므로, DQN과 같이 action-value function이 최대가 되는 action을 선택하도록 하는 Q-learning 알고리즘을 그대로 사용하려면 먼저 생각할 수 있는 방법이 action space의 discretization과 같은 편법을 사용할 필요가 있다. 이 논문에서는 이러한 문제를 해결하기 위해 neural network actor 및 critic을 채용하여 state space와 action space가 모두 큰 dimension 또는 continuous space일 때 사용 가능하도록 한 것이다.

DDPG Algorithm의 특징

이 알고리즘의 특징이 DQN Algorithm의 특징과 유사할수 밖에 없는 이유는 결국 neural network function approximator를 사용하게 되면 생길 수 있는 문제를 태생적으로 가질 수 밖에 없기 때문이다(너무 많은 패러미터들 가진 함수는 학습시키기 어렵다). 그러므로, 학습에 사용되는 sample은 iid(independently and identically distributed) 특징을 가져야 한다. 이를 위해 사용한 방법이 DQN의 replay buffer이다.

같은 맥락에서 action value network 학습을 위해 target network를 별도로 두는 방법도 역시 이용되었다. 그러나 이 논문에서는 약간의 변형을 시도하였다. 일명 ‘soft’ target update방법으로 아래와 같이 target network의 parameter들이 보다 ‘soft’하게 변화하도록 했다.

\theta' \leftarrow \tau\theta + (1-\tau)\theta'

신경망 학습에서 state/observation에 포함되는 여러 값들의 절대값의 order of magnitude문제에 의한 학습 성능 저하를 막기위해 사용하는 batch normalization도 적용하였다.

마지막으로, continuous action space에서 exploration이 지속적으로 이루어지는 방법에 관한 것이다. DDPG에서는 off-policy 학습방법을 사용하기 때문에 기술적으로 구현이 매우 쉬운 장점이 있으며, 이 논문에서는 behavior policy에 noise process N을 도입하고, noise process로 Ornstein-Uhlenbeck process를 사용하였다고 밝혔다.

\mu'(s_t) = \mu(s_t |\theta_t^\mu) + N

DDPG Pseudo Code

아래에 논문에 있는 DDPG 알고리즘의 pseudo code를 그대로 붙여 넣었다. 아래 코드를 보면 DQN알고리즘과 actor-critic 알고리즘을 혼합한 형태라는 것을 알 수 있다. 실제 코딩을 하려면 가장 중요한 점이 actor network를 학습시킬때 action-value approximator Q의 action space에 대한 gradient값을 포함시켜야 한다는 점이다.

DDPG Algorithm

Toy Experiment

DDPG 논문에서는 다양한 환경에서 이 기술을 적용한 결과를 보여주고 있다. 논문에서 테스트한 환경은 논문의 취지에 맞게 OpenAI Gym에서 제공하는 action space가 continuous인 environment들이다. 그러나 DDPG는 state/observation space의 dimension이 DQN과 같이 매우 큰 경우에도 적용되어야 하므로 두가지 특징을 모두 갖고 있는 테스트 환경으로 racing simulator인 TORC를 대상으로 적용한 결과도 소개하였다. Youtube에 DDPG를 TORC에 적용한 사례를 찾아 볼 수 있다.

내가 테스트해본 환경은 OpenAI Gym의 “MountainCarContinuous-v0” environment이다. 이 environment의 action space(throttle)는 A \in [-1, 1]로 범위내 실수값을 가지는 continuous space이다. OpenAI Gym은 알고리즘을 간단히 테스트하기에는 가장 좋은 환경을 제공한다. 아래 결과를 보면, 많은 학습을 통해 약 500번의 episode후에는 목적지가 있는 언덕을 오른다는 것을 알수 있다. Action인 추진력(throttle)값의 범위가 크지 않기 때문에 목적지 반대방향에서 중력에 의한 가속력과 자동차 자체 추력을 모두 합쳐야만 목적지에 도달할 수 있는 상황이며, 학습을 통해 이러한 과정을 모두 학습한다. 실험적으로 action space bound를 2배로 하면 100번의 episode전에 성공하였으며, 예상한대로 훨씬 적은수의 episode만으로도 학습에 성공하였다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중