Policy Gradient

signer do·2024년 3월 11일

강화학습

목록 보기
7/11

1. Objective Function(목적함수)

강화학습의 목표

  • return 값의 기댓값으로 이루어진 JJ(목적함수)를 최대로 만드는 정책(π(xtat)\pi(\mathbf{x_t|a_t})) 구하는 것
  • Policy가 Parameter화된 것이 πθ(atxt)\pi_{\theta}(\mathbf{a_t|x_t})라면, J(θ)J(\theta)를 최대로 만드는 policy parameter(θ\theta)를 계산하는 것

θ=argmax J(θ)\theta^*=argmax \ J(\theta), J(θ)=Eτp0(τ)[t=0Tγtr(xt,at)]J(\theta)=\mathbb{E_{\tau \sim p_0(\tau)}}[\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t})]

변수설명
r(xt,at)r(\mathbf{x_t,a_t})시간 t일 때 state 변수(xt\mathbf{x}_t)에서 action(at\mathbf{a_t})를 했을 때 agent가 받는 보상
γ\gammadiscount factor(감가율) 0~1
τ\taupolicy(πθ)\pi_{\theta})로 생성되는 trajectory(궤적). (x0,a0,x1,a1,...xT,aT)(\mathbf{x_0,a_0,x_1,a_1,...x_T,a_T})
pθ(τ)p_\theta(\tau)정책 πθ\pi_{\theta}로 생성되고, 기댓값 계산 시 사용하는 확률밀도함수

policy(πθ\pi_{\theta})는 보통 neural network로 parameter화됨.

  • θ\theta는 NN의 모든 weight

1.1 Total Discount reward

t=0부터 Episode가 종료될 때까지 받을 수 있는 전체 Trajectory에 대한 Total discount Reward

  • G0=t=0Tγtr(xt,at)G_0=\sum^T_{t=0}\gamma^t*r(\mathbf{x_t, a_t})

임의의 시간 k=t부터 Episode가 종료될 때까지 받을 수 있는 Reward-to-go(예정 보상)

  • Gt=k=tTγktr(xt,at)G_t=\sum^T_{k=t}\gamma^{k-t}*r(\mathbf{x_t,a_t})

위의 확률 pθ(τ)p_{\theta}(\tau)을 확률의 chain rule(연쇄법칙)에 의해 전개하면,
초기 상태변수 x0\mathbf{x}_0의 PDF(p(x0)p(\mathbf{x}_0))는 πθ\pi_\theta(policy)와 무관하므로 첨자 없애기.
또한 p(x1x0,a0)p(\mathbf{x_1|x_0,a_0})는 환경의 모델로 Transition Probability(x0x1\mathbf{x_0 →x_1})이므로 알 수 없고 policy와 무관.

pθ(τ)=pθ(x0,a0,x1,a1,...,xT,aT)=p(x0)pθ(a0,x1,a1...xT,aTx0)p_{\theta}(\tau)=p_{\theta}(\mathbf{x_0,a_0,x_1,a_1,...,x_T,a_T})=p(\mathbf{x}_0)p_{\theta}(\mathbf{a_0,x_1,a_1...x_T,a_T}|\mathbf{x}_0)
=p(x0)pθ(a0x0)p(x1x0,a0)pθ(a1x0,a0,x1)p(x2x0,a0,x1,a1)pθ(a2,...,xT,aTx0,a0,x1,a1,x2)=p(\mathbf{x_0})p_{\theta}(\mathbf{a_0|x_0})p(\mathbf{x_1|x_0,a_0})p_{\theta}(\mathbf{a_1|x_0,a_0,x_1})p(\mathbf{x_2|x_0,a_0,x_1,a_1})p_{\theta}(\mathbf{a_2,...,x_T,a_T|x_0,a_0,x_1,a_1,x_2})

마르코프 시퀀스 가정(Markov Decision Process)에 따라 현재 상태의 이전 상태만이 영향을 줄 수 있기 때문에
pθ(a1x0,a0,x1)=πθ(a1x1)p_{\theta}(\mathbf{a_1|x_0,a_0,x_1})=\pi_{\theta}(\mathbf{a_1|x_1})
p(x2x0,a0,x1,a1)=p(x2x1,a1)p(\mathbf{x_2|x_0,a_0,x_1,a_1})=p(\mathbf{x_2|x_1,a_1})

최종적으로 pθ(τ)=p(x0)Πt=0Tπθ(atxt)p(xt+1xt,at)p_{\theta}(\tau)=p(\mathbf{x_0})*\Pi^T_{t=0}\pi_{\theta}(\mathbf{a_t|x_t)}p(\mathbf{x_{t+1}}|\mathbf{x_t,a_t})

1.2 Objective Function

J(θ)=Eτpθ(τ)[t=0Tγtr(xt,at))]=τpθ(τ)(t=0Tγtr(xt,at))dτJ(\theta)=\mathbb{E}_{\tau \sim p_{\theta}(\tau)}[\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t}))]=\int_\tau p_{\theta}(\tau)(\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t}))d\tau

여기서 trajectory를 두 영역으로 분할
τ=(x0,a0,x1,a1,...xT,aT)=(x0)(a0,x1,a1,...xT,aT)=(x0)τa0:aT\tau=(\mathbf{x_0,a_0,x_1,a_1,...x_T,a_T})=(\mathbf{x}_0)\cup(\mathbf{a_0,x_1,a_1,...x_T,a_T})=(\mathbf{x}_0)\cup\tau_{\mathbf{a_0:a_T}}
pθ(τ)=pθ(x0,τa0:aT)=p(x0)pθ(τa0:aTx0)p_{\theta}(\tau)=p_{\theta}(\mathbf{x_0,\tau_{\mathbf{a_0:a_T}}})=p(\mathbf{x_0})*p_{\theta}(\tau_{\mathbf{a_0:a_T}}|\mathbf{x_0})

J(θ)=τpθ(τ)(t=0Tγtr(xt,at))dτJ(\theta)=\int_\tau p_{\theta}(\tau)(\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t}))d\tau
=x0τa0:aTpθ(x0,τa0:aT)(t=0Tγtr(xt,at))dτa0:aTdx0=\int_{\mathbf{x}_0}\int_{\tau_\mathbf{a_0:a_T}}p_{\theta}(\mathbf{x_0,\tau_{\mathbf{a_0:a_T}}})(\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t}))d\tau_{\mathbf{a_0:a_T}}d\mathbf{x_0}
=x0τa0:aTp(x0)pθ(τa0:aTx0)(t=0Tγtr(xt,at))dτa0:aTdx0=\int_{\mathbf{x}_0}\int_{\tau_\mathbf{a_0:a_T}}p(\mathbf{x_0})*p_{\theta}(\tau_{\mathbf{a_0:a_T}}|\mathbf{x_0})(\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t}))d\tau_{\mathbf{a_0:a_T}}d\mathbf{x_0}
=x0[τa0:aTpθ(τa0:aTx0)(t=0Tγtr(xt,at))dτa0:aT]p(x0)dx0=\int_{\mathbf{x}_0}[\int_{\tau_\mathbf{a_0:a_T}}p_{\theta}(\tau_{\mathbf{a_0:a_T}}|\mathbf{x_0})(\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t}))d\tau_{\mathbf{a_0:a_T}}]p(\mathbf{x}_0)d\mathbf{x_0}

대괄호항은
Vπθ(x0)=τa0:aTpθ(τu0:uTx0)(t=0Tγr(xt,at))dτa0:aTV^{\pi_\theta}(\mathbf{x}_0) = \int_{\tau_{\mathbf{a_0:a_T}}}p_\theta(\tau_{\mathbf{u_0:u_T}}|\mathbf{x}_0)(\sum^T_{t=0}\gamma*r(\mathbf{x_t,a_t}))d\tau_{\mathbf{a_0:a_T}}

따라서,
J(θ)=x0Vπθ(x0)p(x0)dx0J(\theta)=\int_\mathbf{x_0}V^{\pi_\theta}(\mathbf{x_0})p(\mathbf{x_0})d\mathbf{x}_0
=Ex0p(x0)[Vπθ(x0)]=\mathbb{E}_{\mathbf{x}_0 \sim p(\mathbf{x}_0)}[V^{\pi_\theta}(\mathbf{x}_0)]

Objective Function은 초기 state 변수 x0\mathbf{x}_0에 대한 state value function의 평균값이 된다.


2. Policy Gradient

J(θ)J(\theta)를 최대로 만드는 θ\theta를 계산하기 위해 Objective Function을 θ\theta로 미분

J(θ)θ=θJ(θ)=θτpθ(τ)t=0Tγtr(xt,at)dτ\cfrac{\partial J(\theta)}{\partial \theta}=\nabla_\theta J(\theta)=\nabla_\theta \int_\tau p_\theta(\tau) \sum^T_{t=0}\gamma^t*r(\mathbf{x_t, a_t})d\tau

=τθ pθ(τ)t=0Tγt(xt,at)dτ=\int_\tau \nabla_\theta \ p_\theta(\tau) \sum^T_{t=0}\gamma^t(\mathbf{x_t,a_t})d\tau

2.1 Gradient of Objective Function

θ log pθ(τ)=θ pθ(τ)pθ(τ)\nabla_\theta \ log\ p_\theta(\tau)=\cfrac{\nabla_\theta\ p_\theta(\tau)}{p_\theta(\tau)} 식을 이용하여
위의 식,  J(θ)θ=τpθ(τ)pθ(τ)θ pθ(τ)t=0Tγt(xt,at)dτ\cfrac{\partial \ J(\theta)}{\partial \theta}=\int_\tau \cfrac{p_\theta(\tau)}{p_\theta(\tau)} \nabla_\theta \ p_\theta(\tau) \sum^T_{t=0}\gamma^t(\mathbf{x_t,a_t})d\tau
=τpθ(τ)θ pθ(τ)pθ(τ)t=0Tγt(xt,at)dτ=\int_\tau p_\theta(\tau) \cfrac{\nabla_\theta\ p_\theta(\tau)}{p_\theta(\tau)} \sum^T_{t=0}\gamma^t(\mathbf{x_t,a_t})d\tau

=τpθ(τ)θ log pθ(τ)t=0Tγt(xt,at)dτ=\int_\tau p_\theta(\tau) \nabla_\theta\ log\ p_\theta(\tau) \sum^T_{t=0}\gamma^t(\mathbf{x_t,a_t})d\tau

θ log pθ(τ)\nabla_\theta\ log\ p_\theta(\tau)를 전개해보면
=θ log(p(x0)t=0T πθ(atxt) p(xt+1xt,at))=\nabla_\theta\ log(p(\mathbf{x}_0)\prod^T_{t=0}\ \pi_\theta(\mathbf{a_t|x_t})\ p(\mathbf{x}_{t+1}|\mathbf{x_t,a_t}))
=θ(log p(x0)+t=0Tlog πθ(atxt)+t=0Tlog p(xt+1xt,at)=\nabla_\theta(log\ p(\mathbf{x}_0)+\sum^T_{t=0}log\ \pi_\theta(\mathbf{a_t|x_t})+\sum^T_{t=0}log\ p(\mathbf{x_{t+1}|x_t,a_t})

두번째 항만이 θ\theta에 대한 함수이므로, 첫번째, 세번째 항은 θ\theta에 대해 상수항이므로 θ=0\nabla_\theta=0이다.
여기서 Transition Probability 또는 Environment의 동역학 모델인 p(xt+1xt,at)p(\mathbf{x_{t+1}|x_t,a_t})가 objective function의 gradient 식에서 사라졌다는 것.
따라서 Model이 필요 없으므로 Gradient of the Objective Function을 이용하는 방법은 Environment의 모델이 필요 없는 model-free 강화학습 방법이다.

θ log pθ(τ)=t=0Tθ log πθ(atxt)\nabla_\theta\ log \ p_\theta(\tau)=\sum^T_{t=0} \nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t})

θ J(θ)=τpθ(τ)(t=0Tθ log πθ(atxt)) (t=0Tγtr(xt,at))dτ\nabla_\theta\ J(\theta)=\int_\tau p_\theta(\tau)(\sum^T_{t=0}\nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t}))\ (\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t}))d\tau

2.2 Gradient of Bias Objective Function

Objective Function이 아래일 때
J(θ)=Eτ pθ(τ)[t=0Tγtr(xt,at)]J(\theta)=\mathbb{E}_{\tau \sim\ p_\theta(\tau)}[\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t})]

Gradient of the Objective Function은
θ J(θ)=Eτpθ(τ)[(t=0Tθ log πθ(atxt))(t=0Tγtr(xt,at)]\nabla_\theta\ J(\theta)=\mathbb{E}_{\tau \sim p_\theta(\tau)}[(\sum^T_{t=0}\nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t}))*(\sum_{t=0}^T\gamma^t*r(\mathbf{x_t,a_t})]

=Eτpθ(τ)[t=0T(θ log πθ(atxt)(k=0Tγkr(xk,ak)))]=\mathbb{E}_{\tau \sim p_\theta(\tau)}[\sum^T_{t=0}(\nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t)}(\sum^T_{k=0}\gamma^k*r(\mathbf{x_k,a_k})))]

오른쪽 2번째 항은 t=0에서 Episode가 종료될때까지 받을 수 있는 trajectory에 대한 total discounted sum G0G_0.
하지만 t=k에서 실행된 policy (πθ(akxk)\pi_\theta(\mathbf{a_k|x_k}))는 t<k에서의 reward 값에 영향을 끼치지 못하는(non-causality)를 고려한다면 위 식은 다음과 같이 수정
즉, 결과인 r(xk,ak)r(\mathbf{x_k,a_k})은 원인인 t<kt<kπθ(atxt)\pi_\theta(\mathbf{a_t|x_t})에 앞서 발생할 수 없다.

xk\mathbf{x_k}는 {ak1,xk1,...,at,xt,...\mathbf{a}_{k-1}, \mathbf{x}_{k-1}, ..., \mathbf{a}_t,\mathbf{x}_t, ...}에 영향을 줄 수 없음.
그렇기 때문에 오른쪽 2번째 항은 G0G_0가 아니라, k=tTγkr(xt,at)\sum^T_{k=t}\gamma^k*r(\mathbf{x_t,a_t})로 변경. 아래와 같이 수정

=E τpθ(τ)[t=0T(θ log πθ(atxt)(k=tTγkr(xk,ak)))]=\mathbb{E}_{\ \tau \sim p_\theta(\tau)}[\sum^T_{t=0}(\nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t)}(\sum^T_{k= t}\gamma^k*r(\mathbf{x_k,a_k})))]

=E τpθ(τ)[t=0T(γt θ log πθ(atxt)(k=tTγktr(xk,ak)))]=\mathbb{E}_{\ \tau \sim p_\theta(\tau)}[\sum^T_{t=0}(\gamma^t\ \nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t)}(\sum^T_{k= t}\gamma^{k-t}*r(\mathbf{x_k,a_k})))]

처음 감가율 γt\gamma^t는 log-policy gradient에 곱해지기 때문에 시간이 갈수록 변화율을 점점 작게 만듬. 감가율 γ\gamma가 작을수록 빠른 시간 안에 log-policy gradient(Jθ(θ)J_\theta(\theta))를 0으로 만들 수 있다.
이렇게 되면 episode의 후반부 trajectory에 있는 data의 이용도가 크게 떨어지는 단점.

감가율이 γ=1\gamma=1이라면 objective function의 gradient는 다음 식

θ J(θ)=E τpθ(τ)[t=0T(θ log πθ(atxt)(k=tTr(xk,ak)))]\nabla_\theta\ J(\theta)=\mathbb{E}_{\ \tau \sim p_\theta(\tau)}[\sum^T_{t=0}( \nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t)}(\sum^T_{k= t}r(\mathbf{x_k,a_k})))]

  • 위 식은 Objective Function의 gradient의 분산을 크게 만들 수 있다는 단점
  • 무한 구간 Episode에서는 보상의 총합(GtG_t)이 무한대가 될 수 있기 때문에 사용하지 못함.

실용적인 Objective Function의 Gradient

θ J(θ)=E τpθ(τ)[t=0T(θ log πθ(atxt)(k=tTγktr(xk,ak)))]\nabla_\theta\ J(\theta)=\mathbb{E}_{\ \tau \sim p_\theta(\tau)}[\sum^T_{t=0}( \nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t)}(\sum^T_{k= t}\gamma^{k-t}* r(\mathbf{x_k,a_k})))]

예정된 reward에만 감가율 적용. 위 식은 다소 편향된 gradient.
t일 때 r(xt,at)r(\mathbf{x_t,a_t}),
t+1일 때 γr(xt+1,at+1)\gamma*r(\mathbf{x_{t+1},a_{t+1}}),
...
T일 때 γTtr(xt+1,at+1)\gamma^{T-t}*r(\mathbf{x_{t+1},a_{t+1}})

감가율 γ\gamma가 포함된 MDP는 생각보다 까다로운 문제, 아래 논문에서 자세히 논의.
Bias in Natural Actor-Critic Algorithms, 2014

2.3 Summary

Objective Function을 이용해 policy를 update하는 것을 policy gradient라고 한다.
Objective Function을 최대로 하는 parameter θ\theta는 다음과 같이 Gradient Ascent로 구할 수 있음

  • Objective Function
    J(θ)=Eτpθ(τ)[t=0Tγtr(xt,at)], τ=(x0,a0,x1,a1,...,xT,aT)J(\theta)=\mathbb{E}_{\tau \sim p_\theta(\tau)}[\sum^T_{t=0}\gamma^t*r(\mathbf{x_t,a_t})],\ \tau=(\mathbf{x_0,a_0,x_1,a_1,...,x_T,a_T})
  • 가정
    Stochastic Policy atπθ(atxt)\mathbf{a}_t \sim \pi_\theta(\mathbf{a_t|x_t})
  • Gradient of O.F
    θ J(θ)=E τpθ(τ)[t=0T(θ log πθ(atxt)(k=tTr(xk,ak)))]\nabla_\theta\ J(\theta)=\mathbb{E}_{\ \tau \sim p_\theta(\tau)}[\sum^T_{t=0}( \nabla_\theta\ log\ \pi_\theta(\mathbf{a_t|x_t)}(\sum^T_{k= t}r(\mathbf{x_k,a_k})))]
  • Update
    θθ+αθ J(θ)\theta ← \theta+\alpha*\nabla_\theta\ J(\theta)|
profile
Don't hesitate!

0개의 댓글