300x250

DQN, A3C에 이어 가장 최근 나온 다음 논문을 리뷰하고 얻은 DDPG 알고리즘 관련 내용들을 기록해둔다.

 

https://arxiv.org/abs/1509.02971

 

Continuous control with deep reinforcement learning

We adapt the ideas underlying the success of Deep Q-Learning to the continuous action domain. We present an actor-critic, model-free algorithm based on the deterministic policy gradient that can operate over continuous action spaces. Using the same learnin

arxiv.org

 

 

 

 

 

 

0. Prerequisite

 

DDPG를 이해하기에 앞서 Policy-based (앞서 Ch12. A3C에서 Policy gradient method로 소개했다.) 관련 지식을 좀 더 다듬고, REINFORCE 알고리즘을 짚어보고 넘어가자.

 

두 내용 모두 이전 글 'Ch12.Asynchronous Advantage Actor Critic (A3C) Network'에서 언급했다.

Policy-based는 Policy gradient method와 일맥상통하고, REINFORCE 알고리즘도 간단히 소개했지만, 다시 한 번 지식을 보충하고 넘어가보자.

 

https://jjuke-brain.tistory.com/100

 

Ch12. Asynchronous Advantage Actor Critic (A3C) Network

DQN에 이어 또다른 Deep Reinforcement Learning인 Asynchronous Advantage Actor Critic Network (A3C)에 대해 알아보자. DQN 내용은 이전 포스팅을 참조하자. https://jjuke-brain.tistory.com/99?category=9573..

jjuke-brain.tistory.com

 

 

 

 

1) Policy-based Reinforcement Learning

 

 

 

(1) 개요

 

policy-based 강화 학습이란, 앞서 DQN, Q-Learning 등에서 사용한 value-based 강화 학습과 반대되는 개념이다.

 

value-based 강화 학습에서는 가치 함수를 object function으로 놓고 그것을 최대화하는 action을 선택했다.

대표적인 예시로 아래와 같은 greedy policy가 있다. 이는 Q값을 maximize하는 action을 고르는 policy이다.

 

argmaxatQ(st,at)

 

ϵ이라는 작은 확률로 exploration을, 1ϵ의 확률로 exploitation을 하는 epsilon-greedy policy 또한 value-based RL에 속한다.

 

하지만 이와 반대로, policy-based에서는 확률 변수 P(at|st)에 대해 이루어진다. state s에 대해 어떤 action a가 좋을 지 확률적으로 찾는다.

딥러닝을 포함한 개념을 간단히 표현하자면, policy-based Deep Reinforcement Learning에서는 Neural Network의 입력으로 st를 주면, 출력으로 특정 확률 변수의 평균 μ와 표준편차 σ를 내게 된다.

물론 확률 변수를 θ로 parameterize하여 표현할 필요가 있을 것이다. 이를 아래와 같이 나타낼 수 있다.

 

Pθ(at|st)

 

 

 

(2) Policy-based RL 특징

 

policy based를 사용하는 이유는 다음과 같다.

 

  1. Continuous Action을 다루기 용이하다.
    • value-based는 action에 따른 값이 나오므로, 그 값은 불연속적(discrete)이다. 물론 조건을 매우 까다롭게 하여 많은 값을 출력하여 연속적인 action을 근사할 수는 있지만, computing cost가 매우 높아질 것이며, 매번 최적값을 찾는 일이 번거롭다.
    • 하지만 policy-based는 확률 분포에서 특정 action을 sampling하는 방식을 취하므로 연속적인 aciton 값을 뽑아내기 쉽다.
  2. Stochastic Policy를 찾을 수 있다.
    • 애초에 policy를 확률 분포로 설정하므로, 확률 분포를 따르는 policy를 쉽게 찾을 수 있다.

 

이러한 특징 덕에 특히 partialy observable environment가 주어진 경우 유용하게 사용되고, Robotics분야에서 많이 사용한다.

 

 

 

(3) Policy-based RL의 Objective Function

 

강화 학습의 궁극적인 목표는 'maximize expected return'이다.

따라서 value-based, policy-based 두 방식에서 공통적으로 objective function은 간단히 다음과 같이 나타낼 수 있다.

 

Jθ=E[G0]

 

여기서 G0는 return으로, discount factor를 적용한 누적 reward이다.

 

G0=R0+γR1+γ2R2+

 

agent가 학습을 하는 과정에서 state, action, reward의 순서를 따져보면 's0,a0,R0,s1,a1,R1,'와 같은 순서를 거친다.

이를 말로 표현하자면, 's0에서 a0를 취하여 s1로 가면서 R0를 받는' 과정의 반복이다.

 

확률밀도함수 PDF의 expectation은 E(X)=xxp(x)dx이므로, G0의 expectation을 수식으로 나타내면 다음과 같다.

 

J=E[G0]=s0,a0,s1,a1,G0p(s0,a0,s1,a1,)ds0,a0,s1,a1,=τG0p(τ)dτ

 

이때 τ는 단순히 s0,a0, 등을 치환한 것이고, 학습을 위한 policy는 p(a0|s0),p(a1|s1), 등에 대해 이들을 parameterize하여 pθ(a0|s0),pθ(a1|s1) 등을 학습해야 하므로 θ 첨자로 이를 표현한다.

 

JθτG0pθ(τ)dτ

 

따라서 weight를 update하는 과정은 policy의 gradient로 다음과 같이 표현된다.

 

θθ+αθJθ

(whenθJθ=θτG0pθ(τ)dτ=τG0θpθ(τ)dτ)

 

θpθ(τ) 를 구하는 상세한 과정은 논문 또는 다른 글을 참고하고, 결론적으로 다음과 같은 gradient를 얻는다.

 

θJθ=tt=0(θlnpθ(at|st)(k=tγkRk))pθ(τ)dτ=tt=0(θlnpθ(at|st)×Gt)pθ(τ)dτ

 

첫 번째 식에서 k=tγkRk=γtk=tγktRk=γtGt이고, t의 값이 커질수록 γt의 영향은 무시할 수 있을 정도가 되므로 t=0γt 항의 영향을 무시할 수 있어 γt 항은 사라졌다.

 

따라서 policy-based RL의 policy gradient는 최종적으로 다음과 같이 나타난다.

 

θJθtt=0(θlnpθ(at|st)×Gt)pθ(τ)dτ

 

 

 

 

2) REINFORCE Algorithm

 

REINFORCE Algorithm은 Reinforcement Learning Algorithm과는 다른 개념임에 유의하자.

 

바로 위의 식에서 큰수의 법칙을 사용하여 식을 간단하게 만들며, sample 개수 N = 1로 취하여 parameter update를 진행하는 방법이 바로 REINFORCE 알고리즘이다.

 

즉,다음 과정을 반복하여 parameter(weight)를 갱신한다.

  1. μ, σ로부터 정해진 policy pθ(at|st)에서 sampling하여 τ를 얻는다.
  2. θθ+α[t=0(θlnpθ(at|st)×Gt)]

 

이때, Gt는 에피소드 전체가 끝나야 얻을 수 있으므로, 이 경우 에피소드가 끝날 때 한 번 weight update를 진행한다.

이를 통해 sample된 값이 unbiased(믿을만 함)이지만, variance가 커서 수렴하기까지 update 과정이 너무 오래 걸린다.

 

이를 A2C 등에서 해결한 내용을 이전 포스팅(Ch12. A3C Network)에서 확인해볼 수 있다.

 

 

 

 

 

 

1. Deep Deterministic Policy Gradient (DDPG) Algorithm

 

이제 본격적으로 DDPG 알고리즘을 알아보자.

 

police-based에서는 이전까지 action에 대한 분포를 policy로 사용하였다.

하지만 DDPG에서는 이름에서 알 수 있듯, 연속적인 값 중에서 'Deterministic한 값'을 뽑는다.

 

즉, policy-based에서는 neural network를 통해 평균 (μ), 표준편차 (σ)를 얻어 parameter를 학습시켰지만

DDPG는 neural network에서 aθ,t, 즉 parameter θ를 통해 나온 at 값 하나인 parameterized action을 얻는다.

 

이는 delta function으로 표현할 수 있다. delta function f(x)=δ(xa)는 적분하면 1을 얻는 함수이다.

 

delta function

 

확률 분포 f(at)에 delta function δ(atat)를 적용함으로써 E[G0]를 구할 때 적분의 개념이 포함되므로 적분 결과 최적의 값 at 하나를 얻는다.

 

이때 st를 입력 받아 aθ,t를 출력해주는 neural network를 Action Network라 하고, DDPG의 첫 번째 특징이 바로 이러한 Action Network를 사용한다는 점이다.

 

Objective Function (Jθ)과 Policy Gradient (θJθ)을 유도하는 과정에서 DDPG의 두 번째 특징인 'Reward를 받은 후에 다음 State로 넘어간다'는 개념을 사용한다.

이전까지는 st에서 at를 취하여 st+1에 도달하면 Rt가 정해졌었는데,

DDPG는 stat만 정해지면 Rt가 정해진다, 즉 Rsa의 함수로 표현할 수 있는 것으로 가정하여 유도 과정에 사용한다.

구체적인 과정은 생략하고, 결과를 보면 다음과 같다. (너무 길어 반복으로 곱하는 부분에서 줄을 띄웠다.)

 

θJθ=t=0s0,s1,s2,,stγtθQw(st,aθ,t)p(s0)p(s1|s0,aθ,0)p(s2|s1,aθ,1)p(st|st1,aθ,t1)ds0,s1,,st

 

이때, Q를 계산할 때 적분을 포함하므로 바로 계산하기보다는 w를 통해 parameterize한 것에 주목하자.

보통 Qw에 1-step TD (a.k.a. TD(0))을 사용한다.

 

그리고 여기서 DDPG의 세 번째 특징인 'Off-policy' 특징을 보인다. Off-policy는 target policy와 behavior policy가 서로 다른 경우를 말한다.

수식을 살펴보면 p(s0) 이후 부분에서 behavior policy, 즉 action을 위한 확률 분포들을 계산하는 과정을 갖지만, sampling할 때 사용하는 target policy는 쓰이지 않는다. 왜냐하면 replay buffer를 사용하여 별도의 policy 없이 sampling을 하기 때문이다.

replay buffer에 특정 (st,aθ,t,Rt,st+1) set을 저장하여 이 중에서 sampling을 진행한다.

 

off-policy의 장점은 sample 간의 correlation을 떨어뜨려 다양한 상황을 학습할 수 있다는 점이다.

 

A3C와 비교해보자면 다음 표와 같다.

 

  A3C DDPG
sample의 correlation 줄이는 방법 독립적인 여러 agent를 학습시킴 off-policy
replay buffer 사용 여부 사용 x 사용 o

 

 

주요 동작 과정을 간단히 살펴보면 다음과 같다.

 

  • Do action : aθ,t+ϵt
    • 여기서 ϵ은 gaussian noise이며, deterministic policy는 variance가 없어 exploration이 불가능하므로 noise를 강제로 추가하여 exploration을 가능하게 만들어준다. 또는 ϵ-greedy policy를 이용하기도 한다.
  • Actor update : θθ+αθiQw(si,aθ,i)
  • Critic update : wwβwi(Ri+γQw(si+1,aθ,i)Qw(si,aθ,i))2
    • ww의 차이는 2015 DQN에서 target network(TD(0))와 main network(parameter update에 사용) 를 나누어 학습시킨 뒤, parameter update에 사용하던 main network의 weight w를 target network의 w에 일정 step (c) 이후에 통째로 복사하여 target 값이 일정하도록 해주었던 개념이다.
  • w(1λ)w+λwθ(1λ)θ+λθ
    • DQN에서는 ww에 한꺼번에 반영했지만, DDPG에서는 이전 값을 어느 정도 유지하면서 매 step에서 조금씩 반영하도록 한다.

 

동작 과정을 간단한 그림으로 나타내면 다음과 같다.

 

Simple DDPG Network

 

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기