정책 그래디언트

Seulgi Kim·2023년 5월 23일
0

reinforce learning

목록 보기
11/14

강화학습의 목표

환경으로부터 받는 누적 보상을 최대화하는 최적 정책을 구하는 것.

목적함수

목적함수는 다음과 같이 표현 가능하다.

J(θ)=Eτpθ(τ)[t=0Tγtr(xt,ut)]\begin{aligned} J(\theta) = {\mathbb E}_{\tau \sim p_\theta(\tau)} \left[ \sum\limits_{t=0}^{T}\gamma^t r(x_t, u_t) \right] \end{aligned}

이때 τ\tau는 궤적을 의미하며, τpθ(τ)\tau\sim p_\theta(\tau)는 기댓값을 계산할 때 확률밀도함수 pθ(τ)p_\theta(\tau)를 사용하겠다는 의미이다.
이때의 정책은 보통 신경망으로 파라미터화되며, 이 신경망을 정책 신경망 (policy neural network)라고 부른다. 최적 정책 신경망의 파라미터 θ\theta는 다음과 같다.

θ=arg maxJ(θ)\begin{aligned} \theta^* = \argmax J(\theta) \end{aligned}

전체 반환값 G0=t=0Tγtr(xt,ut)G_0=\sum\limits_{t=0}^T \gamma^t r(x_t, u_t)는 시간스텝 t=0t=0부터 에피소드가 종료될 때까지 받을 수 있는 전체 궤적에 대한 갑가 보상의 총합이다. 시간 스텝 k=tk=t부터 에피소드가 종료될 때까지 받을 수 있는 예정 보상 (reward-to-go)의 총합은 Gt=k=tTγktr(xk,uk)G_t=\sum\limits_{k=t}^T \gamma^{k-t}r(x_k, u_k)이다.

궤적에 대한 확률 밀도 함수 pθ(τ)p_\theta(\tau)는 확률의 연쇄법칙과 마르코프 시퀀스 가정으로 인해 다음과 같이 쓸 수 있다.

pθ(τ)=p(x0)pθ(u0,x1,...,xT,uTx0)=p(x0) πθ(u0x0) p(x1x0,u0) πθ(u1x1) ... p(xTxT1,uT1) π(uTxT)=p(x0)t=0Tπθ(utxt) p(xt+1xt,ut)\begin{aligned} p_\theta(\tau) &= p(x_0) p_\theta(u_0, x_1, ..., x_T, u_T|x_0) \\ &=p(x_0) ~\pi_{\theta}(u_0|x_0)~ p(x_1|x_0, u_0) ~\pi_\theta(u_1|x_1)~ ... ~p(x_T|x_{T-1}, u_{T-1})~\pi(u_T|x_T) \\ &=p(x_0) \prod\limits_{t=0}^T \pi_\theta(u_t|x_t) ~p(x_{t+1}|x_t, u_t) \end{aligned}

이를 목적함수 J(θ)J(\theta)에 대입해보자.

J(θ)=Eτpθ(τ)[t=0Tγtr(xt,ut)]=τpθ(τ)(t=0Tγtr(xt,ut))dτ=x0τu0:uTp(x0) pθ(τu0:uTx0)(t=0Tγtr(xt,ut))dτu0:uT dx0=x0Eτu0:uTpθ(τu0:uT)[t=0Tγtr(xt,ut)]dx0\begin{aligned} J(\theta) &= {\mathbb E}_{\tau\sim p_\theta(\tau)} \left[ \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) \right] \\ &=\int_\tau p_\theta(\tau) \left( \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) \right) d\tau \\ &= \int_{x_0} \int_{\tau_{u_0:u_T}} p(x_0) ~ p_\theta(\tau_{u_0:u_T}|x_0)\left( \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) \right) d\tau_{u_0:u_T}~dx_0 \\ &= \int_{x_0} {\mathbb E}_{\tau_{u_0:u_T}\sim p_\theta(\tau_{u_0:u_T})} \left[ \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) \right] dx_0 \end{aligned}

이때 상태가치함수는 Vπθ(x)=Eτux:uTpθ(τux:uT)[k=tTγktr(xk,uk)]V^{\pi_\theta}(x) = {\mathbb E}_{\tau_{u_x:u_T}\sim p_\theta(\tau_{u_x:u_T})} \left[ \sum\limits_{k=t}^T \gamma^{k-t} r(x_k, u_k) \right] 이므로, 목적함수 $J(\theta)는

J(θ)=x0Vπθ(x0)p(x0)dx0=Ex0p(x0)[Vπθ(x0)]\begin{aligned} J(\theta) &= \int_{x_0} V^{\pi_\theta}(x_0) p(x_0) dx_0 \\ &= {\mathbb E}_{x_0 \sim p(x_0)} \left[ V^{\pi_\theta}(x_0) \right] \end{aligned}

이다.

정책 그래디언트

목적함수 J(θ)J(\theta)를 최대로 만드는 θ\theta를 구하기 위해 θ\theta로 편미분해보자.

J(θ)θ=θJ(θ)=τθpθ(τ)t=0Tγtr(xt,ut)dτ\begin{aligned} {\partial J(\theta) \over \partial \theta} = \nabla_\theta J(\theta) &= \int_\tau \nabla_\theta p_\theta(\tau) \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) d\tau \end{aligned}

θlogpθ(τ)=θpθ(τ)pθ(τ)\nabla_\theta \log p_\theta(\tau) = {\nabla_\theta p_\theta(\tau) \over p_\theta(\tau)} 를 이용하면,

J(θ)θ=τpθ(τ)θlogpθ(τ)t=0Tγtr(xt,ut)dτ\begin{aligned} {\partial J(\theta) \over \partial \theta} &= \int_\tau p_\theta(\tau) \nabla_\theta \log p_\theta(\tau) \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) d\tau \end{aligned}

이다. 이때 pθ(τ)=p(x0)t=0Tπθ(utxt) p(xt+1xt,ut)p_\theta(\tau)=p(x_0) \prod\limits_{t=0}^T \pi_\theta(u_t|x_t) ~p(x_{t+1}|x_t, u_t) 이므로,

θlogpθ(τ)=θ(logp(x0)+t=0T(logπθ(utxt)+logp(xt+1xt,ut)))=t=0Tθlogπθ(utxt)\begin{aligned} \nabla_\theta \log p_\theta(\tau) &= \nabla_\theta \left( \log p(x_0) + \sum\limits_{t=0}^T \left( \log \pi_\theta(u_t|x_t) +\log p(x_{t+1}|x_t, u_t) \right) \right) \\ &= \sum\limits_{t=0}^T \nabla_\theta \log \pi_\theta(u_t|x_t) \end{aligned}

으로 정리할 수 있다. 즉,

θJ(θ)=τpθ(τ)(t=0Tθlogπθ(utxt))(t=0Tγtr(xt,ut))dτ=Eτpθ(τ)[(t=0Tθlogπθ(utxt))(t=0Tγtr(xt,ut))]=Eτpθ(τ)[t=0T(γt θlogπθ(utxt) k=tT(γktr(xk,uk)))]\begin{aligned} \nabla_\theta J(\theta) &= \int_\tau p_\theta(\tau) \left( \sum\limits_{t=0}^T \nabla_\theta \log \pi_\theta(u_t|x_t) \right) \left( \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) \right) d\tau \\ &= {\mathbb E}_{\tau \sim p_\theta(\tau)} \left[ \left( \sum\limits_{t=0}^T \nabla_\theta \log \pi_\theta(u_t|x_t) \right) \left( \sum\limits_{t=0}^T \gamma^t r(x_t, u_t) \right) \right] \\ &= {\mathbb E}_{\tau \sim p_\theta(\tau)} \left[ \sum\limits_{t=0}^T \left( \gamma^t ~\nabla_\theta \log \pi_\theta (u_t|x_t) ~\sum\limits_{k=t}^T \left( \gamma^{k-t} r(x_k, u_k) \right) \right) \right] \end{aligned}

이다. 여기서 눈여겨 볼 점은 상태천이 확률밀도함수가 목적함수 그래디언트 식에서 사라졌다는 점이다. 즉, 모델이 필요 없으므로, 목적함수의 그래디언트를 이용하는 방법은 모델 프리(model-free) 방법이라고도 불린다.

이 목적함수 그래디언트 방법을 사용하면 감가율 γ\gamma가 작을수록 빠른 시간 안에 로그-정책 그래디언트를 0으로 만들 수 있다. 이렇게 되면 에피소드의 후반부 궤적에 있는 데이터의 이용도가 크게 떨어지는 단점이 있다. 따라서 목적함수 그래디언트를 변화시켜서 예정 보상에만 감가율을 적용시켜, 편향된(biased) 그래디언트를 사용한다.

θJ(θ)=Eτpθ(τ)[t=0T(θlogπθ(utxt) k=tT(γktr(xk,uk)))]=Eτpθ(τ)[t=0T(θlogπθ(utxt)Gt)]\begin{aligned} \nabla_\theta J(\theta) &= {\mathbb E}_{\tau \sim p_\theta(\tau)} \left[ \sum\limits_{t=0}^T \left( \nabla_\theta \log \pi_\theta (u_t|x_t) ~\sum\limits_{k=t}^T \left( \gamma^{k-t} r(x_k, u_k) \right) \right) \right] \\ &= {\mathbb E}_{\tau \sim p_\theta(\tau)} \left[ \sum\limits_{t=0}^T \left( \nabla_\theta \log \pi_\theta (u_t|x_t) \cdot G_t \right) \right] \end{aligned}

이때 목적함수 J(θ)J(\theta)를 최대로 하는 파라미터 θ\theta는 경사상승법으로 업데이트 한다.

θθ+αθJ(θ)\begin{aligned} \theta \leftarrow \theta + \alpha \nabla_\theta J(\theta) \end{aligned}

이와 같이 목적함수의 그래디언트를 이용해 정책을 업데이트 하는 방법을 정책 그래디언트라고 부른다.

REINFORCE 알고리즘

정책 그래디언트를 사용함에 있어 기댓값 Eτpθ(τ){\mathbb E}_{\tau \sim p_\theta(\tau)}는 에피소드를 M개만큼 생성해 에피소드 평균을 이용해 근사적으로 계산한다. M=1M=1인 경우를 REINFORCE 알고리즘이라고 부른다. 이때의 손실함수로

loss=t=0T(logπθ(utxt)Gt)\begin{aligned} loss = -\sum\limits_{t=0}^T (\log \pi_\theta (u_t | x_t) G_t) \end{aligned}

를 사용한다.

방법

  1. 정책 πθ(ux)\pi_\theta(u|x)로부터 샘플 궤적 τ\tau를 생성한다. (에피소드를 생성한다)
  2. 에피소드에서 반환값 GtG_t를 계산한다.
  3. 에피소드에서 손실함수를 계산한다.
    loss=t=0T(logπθ(utxt)Gt)loss = -\sum\limits_{t=0}^T (\log \pi_\theta (u_t | x_t) G_t)
  4. 정책 파라미터를 업데이트한다.
    θθ+αθJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)

REINFORCE 알고리즘의 문제점

  1. 한 에피소드가 끝나야 정책을 업데이트할 수 있다.
    몬테 카를로 정책 그래디언트라고 부르기도 한다.
  2. 그래디언트 분산이 매우 크다.
    목적함수의 그래디언트는 반환값에 비례하는데, 반환값은 환경에 따라, 에피소드의 길이에 따라 크게 달라진다.
    따라서 신경망의 학습에 시간이 많이 걸리고 불안정하며 학습이 안될 수도 있다.
  3. 온-폴리시(on-policy) 방법이다.
    온-폴리시 방법은 정책을 업데이트 하기 위해서 해당 정책을 실행시켜 발생한 샘플이 필요하므로 효율성이 떨어진다.

이러한 이유로 REINFORCE 알고리즘은 사용되지 않지만, 다른 정책 그래디언트 기반 알고리즘의 기초가 된다는 점에서 의의가 있다.

출처

수학으로 풀어보는 강화학습 원리와 알고리즘. 박성수 저.

0개의 댓글