정책 그래디언트 (policy gradient)

chchch·2022년 4월 7일
0

RL

목록 보기
2/3
post-thumbnail

아래의 내용은 세종대학교 박성수 교수님께서 쓰신 수학으로 풀어보는 강화학습 원리와 알고리즘 책의 3장의 내용을 표기법만 달리해서 정리한 내용입니다. 책의 전개와 설명이 좋아서 강화학습에 관심있는 분들은 꼭 구입하셔서 읽어보길 바랍니다.

  • 강화학습의 목표: 누적 보상을 최대화하는 최적 정책(optimal policy)를 구하는 것
  • 누적보상: JJ
  • tt시점에서의 상태(ss)와 행동(aa): st,ats_t, a_t
  • tt시점에서의 상태와 행동으로 인한 보상: r(st,at)r(s_t, a_t)
  • 정책: π(atst)\pi(a_t | s_t)
  • 감가율: γ\gamma

목적함수

만약 정책이 θ\theta로 파라미터화됐다면 πθ(atst)\pi_\theta(a_t|s_t), 예를 들어 딥러닝 구조를 사용해서 정책을 모델링할 경우, 딥러닝의 가중치를 θ\theta라고 생각할 수 있다. 최적 정책을 구하는 것은 최적 θ\theta를 찾는 문제로 변한다.

θ=arg maxθJ(θ)J(θ)=Eτpθ(τ)[t=0Tγtr(st,at)]\theta^*= \argmax_\theta J(\theta) \\ J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right]

여기서 pθ(τ)p_\theta(\tau)는 정책 πθ(atst)\pi_\theta(a_t|s_t)로 생성되는 궤적(trajectory, τ\tau)의 확률밀도함수이며 상태와 행동의 결합확률밀도함수이다. 정책 πθ(atst)\pi_\theta(a_t|s_t)에 의해서 행동(ata_t)를 선택할 것이므로 행동의 궤적은 πθ(atst)\pi_\theta(a_t|s_t)에 의존된다. 여기서 중요한 것은 상태천이확률(p(st+1st,at))(p(s_{t+1}|s_t, a_t))은 환경 모델에 의해 결정되는 것으로 θ\theta로 통제할 수 없다. 이 부분은 뒤에 자세히 설명한다.

τ=(s0,a0,s1,a1,,sT,aT)pθ(τ)\tau = (s_0, a_0, s_1, a_1, \dots, s_T, a_T) \sim p_\theta(\tau)

궤적의 확률밀도함수는 복잡한 결합확률밀도함수로 앞서 가정한 마르코프 가정을 사용하여 간편한 형태로 분해할 수 있다.

pθ(τ)=pθ(s0,a0,s1,a1,,sT,aT)=p(s0)πθ(a0,s1,a1,,sT,aTs0)=p(s0)πθ(a0s0)p(s1s0,a0)πθ(a1s0,a0,s1)p(s2s0,a0,s1,a1)=p(s0)πθ(a0s0)p(s1s0,a0)πθ(a1s1)p(s2s1,a1)(Markov assumption)=p(s0)t=0Tπθ(atst)p(st+1st,at)\begin{aligned} p_\theta (\tau) &= p_\theta (s_0, a_0, s_1, a_1, \dots, s_T, a_T) \\ &= p(s_0) \pi_\theta(a_0, s_1, a_1, \dots, s_T, a_T | s_0) \\ &= p(s_0) \pi_\theta(a_0|s_0)p(s_1 | s_0, a_0)\pi_\theta(a_1|s_0, a_0, s_1)p(s_2|s_0, a_0, s_1, a_1) \cdots \\ &= p(s_0) \pi_\theta(a_0|s_0)p(s_1 | s_0, a_0) \pi_\theta(a_1|s_1) p(s_2|s_1, a_1) \cdots (\because Markov ~ assumption) \\ & = p(s_0) \prod_{t=0}^T \pi_\theta(a_t|s_t) p(s_{t+1}|s_t, a_t) \end{aligned}

위의 표기에서 확률이 θ\theta에 의존 여부를 주의깊게 확인할 필요가 있다.

J(θ)=Eτpθ(τ)[t=0Tγtr(st,at)]J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right]

를 다시 τ=(s0,a0,s1,,sT,aT)=(s0)(a0,s1,,sT,aT)\tau = (s_0, a_0, s_1, \dots, s_T, a_T) = (s_0) \cup (a_0, s_1, \dots, s_T, a_T)로 분해해서 유도해보자.

J(θ)=s0τa0:aT[t=0Tγtr(st,at)]p(s0)pθ(τa0:aTs0)dτa0:aTds0=s0τa0:aT[t=0Tγtr(st,at)]pθ(τa0:aTs0)dτa0:aTVπθ(s0)p(s0)ds0=s0Vπθ(s0)p(s0)ds0=Es0p(s0)[Vπθ(s0)]\begin{aligned} J(\theta) &= \int_{s_0} \int_{\tau_{a_0:a_T}} \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] p(s_0) p_\theta(\tau_{a_0:a_T}|s_0) d\tau_{a_0:a_T} d s_0\\ &= \int_{s_0} \underbrace{\int_{\tau_{a_0:a_T}} \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] p_\theta(\tau_{a_0:a_T}|s_0) d\tau_{a_0:a_T}}_{V^{\pi_\theta}(s_0)} p(s_0) d s_0 \\ &= \int_{s_0} V^{\pi_\theta}(s_0) p(s_0) d s_0 = \mathbb{E}_{s_0 \sim p(s_0)} [V^{\pi_\theta}(s_0)] \end{aligned}

목적함수 J(θ)J(\theta)는 초기상태 s0s_0에 대한 상태가치(Vπθ(s0)V^{\pi_\theta} (s_0))의 기댓값이 된다.


정책 그래디언트

목적함수를 최대 혹은 최소화하는 파라미터를 찾는 문제에서 그래디언트(gradient)를 계산한 경사하강법을 사용한다. 따라서, 목적함수에 대한 그레디언트를 유도해보자.

J(θ)θ=θJ(θ)=θτpθ(τ)[t=0Tγtr(st,at)]dτ=τθpθ(τ)[t=0Tγtr(st,at)]dτ=τpθ(τ)pθ(τ)θpθ(τ)[t=0Tγtr(st,at)]dτ=τpθ(τ)θpθ(τ)pθ(τ)[t=0Tγtr(st,at)]dτ=τpθ(τ)θlogpθ(τ)[t=0Tγtr(st,at)]dτ\begin{aligned} \frac{\partial J(\theta)}{\partial \theta} &= \nabla_\theta J(\theta) = \nabla_\theta \int_\tau p_\theta(\tau) \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] d\tau \\ &= \int_\tau \nabla_\theta p_\theta(\tau) \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] d\tau \\ &= \int_\tau \frac{p_\theta(\tau)}{p_\theta(\tau)} \nabla_\theta p_\theta(\tau) \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] d\tau \\ &= \int_\tau p_\theta(\tau) \frac{\nabla_\theta p_\theta(\tau)}{p_\theta(\tau)} \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] d\tau \\ &= \int_\tau p_\theta(\tau) \nabla_\theta \log p_\theta(\tau) \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] d\tau \end{aligned}

위에서 적분 안으로 미분이 들어가는 것은 무조건 되는 것은 아니지만 여기서는 가능한 함수를 다룬다고 가정하자.

이제 θlogpθ(τ)\nabla_\theta \log p_\theta(\tau)를 자세히 살펴보자.

θlogpθ(τ)=θlog(p(s0)t=0Tπθ(atst)p(st+1st,at))=θ(logp(s0)+t=0Tlogπθ(atst)+t=0Tlogp(st+1st,at))=θt=0Tlogπθ(atst)=t=0Tθlogπθ(atst)\begin{aligned} \nabla_\theta \log p_\theta(\tau) &= \nabla_\theta \log \left(p(s_0) \prod_{t=0}^T \pi_\theta(a_t|s_t)p(s_{t+1}|s_t, a_t) \right)\\ &= \nabla_\theta \left( \log p(s_0) + \sum_{t=0}^T \log \pi_\theta(a_t|s_t) + \sum_{t=0}^T \log p(s_{t+1}|s_t, a_t) \right) \\ &= \nabla_\theta \sum_{t=0}^T \log \pi_\theta(a_t|s_t) \\ &= \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \end{aligned}

θ\theta에 의존하는 확률들만 미분하면 살아남고 나머지는 모두 00이 되기 때문에 위와 같이 계산된다.

이제 다시 θJ(θ)\nabla_\theta J(\theta)로 돌아가서 그래디언트 계산을 마무리해보자.

J(θ)θ=τpθ(τ)θlogpθ(τ)[t=0Tγtr(st,at)]dτ=τpθ(τ)(t=0Tθlogπθ(atst))[t=0Tγtr(st,at)]dτ=Eτpθ(τ)[(t=0Tθlogπθ(atst))(t=0Tγtr(st,at))]\begin{aligned} \frac{\partial J(\theta)}{\partial \theta} &= \int_\tau p_\theta(\tau) \nabla_\theta \log p_\theta(\tau) \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] d\tau \\ &= \int_\tau p_\theta(\tau) \left( \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \right) \left [ \sum_{t=0}^T \gamma^t r(s_t, a_t) \right] d\tau \\ &= \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \left( \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \right) \left( \sum_{t=0}^T \gamma^t r(s_t, a_t) \right) \right] \end{aligned}

위의 식을 보면 그래디언트를 계산하는데 환경 모델을 의미하는 상태천이확률(p(st+1st,at))(p(s_{t+1}|s_t, a_t))는 사용되지 않았다. 즉, 환경 모델에 의존하지 않는 모델 프리(model-free) 방법이다.


그래디언트 개선

θJ(θ)=Eτpθ(τ)[(t=0Tθlogπθ(atst))(t=0Tγtr(st,at))]\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \left( \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \right) \left( \sum_{t=0}^T \gamma^t r(s_t, a_t) \right) \right]

위의 식을 자세히 보면 더 먼 미래 시점(k>t)(k>t)에서의 행동이 이전 tt시점의 보상에 영향을 준다. 따라서 논리에 맞게 식의 수정이 필요하다.

θJ(θ)=Eτpθ(τ)[k=0T(θlogπθ(atst))(k=tTγtr(st,at))]=Eτpθ(τ)[k=0T(γtθlogπθ(atst))(k=tTγktr(st,at))]\begin{aligned} \nabla_\theta J(\theta) &= \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \sum_{k=0}^T ( \nabla_\theta \log \pi_\theta(a_t|s_t)) \left( \sum_{k=t}^T \gamma^t r(s_t, a_t) \right) \right] \\ &= \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[\sum_{k=0}^T (\gamma^t \nabla_\theta \log \pi_\theta(a_t|s_t)) \left(\sum_{k=t}^T \gamma^{k-t} r(s_t, a_t) \right) \right] \end{aligned}

위의 식에서 γtθlogπθ(atst)\gamma^t \nabla_\theta \log \pi_\theta(a_t|s_t)로 인해 tt가 커질수록 그래디언트의 영향은 줄어든다. 따라서 최종적으로 다음과 같이 수정한다.

Eτpθ(τ)[k=0T(θlogπθ(atst))(k=tTγktr(st,at))]\mathbb{E}_{\tau \sim p_\theta(\tau)} \left[\sum_{k=0}^T (\nabla_\theta \log \pi_\theta(a_t|s_t)) \left(\sum_{k=t}^T \gamma^{k-t} r(s_t, a_t) \right) \right]

그래디언트를 수정했기 때문에 원 문제의 그래디언트와 편향(bias)을 가진 그래디언트로 볼 수 있다. 하지만 감가율을 포함할 경우 매우 어렵다고 알려져있어서 해당 그래디언트를 사용하도록 하자.

profile
머신러닝과 통계학을 공부하는 사람

0개의 댓글