PPO 알고리즘

signer do·2024년 8월 26일

강화학습

목록 보기
11/11

1. Background

A2C 알고리즘은 REINFORCE 알고리즘의 아래 2가지 단점을 개선했다.
1. Monte-Carlo update 문제
2. objective function의 분산이 큰 점

하지만 A2C도 여전히 on-policy라는 단점이 있음.
policy를 update하기 위해 해당 policy를 실행시켜 발생한 sample이 필요하므로 효율성이 매우 떨어진다.
Actor-Critic 뿐만 아니라 policy gradient를 이용한 방법의 문제인데, policy parameter 변화량이 작더라도 policy 자체가 크게 변할 수 있다. 정책이 점진적으로 update되어야만 안정적인 학습이 가능.

이에 policy를 점전적으로 update외어야만 안정적인 학습이 가능하기 때문에 이를 개선한 proximal policy optimization(근접 정책 최적화)를 소개.


2. A2C objective 함수의 gradient 재구성

REINFORCE에서 사용되는 objective 함수 J(θ)J(\theta)를 최대로 만드는 θ\theta 계산
J(θ)θ=θJ(θ)=θτpθ(τ)t=0Tγtr(xt,ut)dτ\cfrac{\partial J(\theta)}{\partial \theta}=\nabla_\theta J(\theta)=\nabla_\theta\int_\tau p_\theta(\tau)\sum\limits^T_{t=0}\gamma^tr(\mathbf{x_t,u_t})d\tau

  • θlogpθ(τ)=θpθ(τ)pθ(τ)\nabla_\theta \log p_\theta(\tau)=\cfrac{\nabla_\theta p_\theta(\tau)}{p_\theta(\tau)} 관계식 이용

=τpθ(τ)pθ(τ)θpθ(τ)t=0Tγtr(xt,ut)dτ=\int_\tau \cfrac{p_\theta(\tau)}{p_\theta(\tau)}\nabla_\theta p_\theta(\tau)\sum^T_{t=0}\gamma^t r(\mathbf{x_t, u_t})d\tau
=τpθ(τ)θlogpθ(τ)t=0Tγtr(xt,ut)dτ=\int_\tau p_\theta(\tau)\nabla_\theta\log p_\theta(\tau) \sum\limits^T_{t=0} \gamma^t r(\mathbf{x_t,u_t})d\tau

  • θlogpθ(τ)\nabla_\theta \log p_\theta(\tau)를 좀 더 전개한 후 θ\theta의 종속적인 항만 남기기

θlogpθ(τ)=θlog(p(x0)t=0Tπθ(utxt)p(xt+1xt,ut))\nabla_\theta \log p_\theta(\tau)=\nabla_\theta \log(p(\mathbf{x}_0) \prod\limits^T_{t=0}\pi_\theta(\mathbf{u_t|x_t})p(\mathbf{x_{t+1}|x_{t}, u_t}))
=θ(logp(x0)+t=0Tlogπθ(utxt)+logp(xt+1xt,ut))=\nabla_\theta (\log p(\mathbf{x}_0)+\sum\limits_{t=0}^T\log\pi_\theta(\mathbf{u_t|x_t})+\log p(\mathbf{x_{t+1}|x_t, u_t}))

θlogpθ(τ)=t=0Tθlogπθ(utxt)\nabla_\theta \log p_\theta(\tau) = \sum\limits^T_{t=0}\nabla_\theta \log\pi_\theta(\mathbf{u_t|x_t})

따라서 objective function의 gradient는
θJ(θ)=τpθ(τ)(t=0Tθlogπθ(utxt))(t=0Tγtr(xt,ut))dτ\nabla_\theta J(\theta)=\int_\tau p_\theta(\tau)\bigg(\sum\limits^T_{t=0}\nabla_\theta \log\pi_\theta ( \mathbf{u_t|x_t})\bigg)\bigg(\sum\limits^T_{t=0} \gamma^t r(\mathbf{x_t, u_t}) \bigg)d\tau
=Eτpθ(τ)[(t=0Tθlogπθ(utxt))(t=0Tγtr(xt,ut))]=\mathbb{E}_{\tau\sim p_\theta(\tau)}\bigg[\bigg(\sum\limits^T_{t=0}\nabla_\theta \log\pi_\theta ( \mathbf{u_t|x_t})\bigg)\bigg(\sum\limits^T_{t=0} \gamma^t r(\mathbf{x_t, u_t}) \bigg) \bigg]

여기서 pθ(τ)=p(x0)t=0Tπθ(utxt)p(xt+1xt,ut)p_\theta(\tau)=p(\mathbf{x_0})\prod\limits^T_{t=0}\pi_\theta(\mathbf{u}_t|\mathbf{x_t})p(\mathbf{x_{t+1}|x_t,u_t})
즉, 정책 πθ\pi_\theta로 생성되는 trajectory의 PDF를 나타냄.

2.1 A2C의 gradient

식 1.
θJ(θ)=t=0T(Eτx0:utpθ(τx0:ut)[γtθlogπθ(utxt)Aπθ(xt,ut)])\nabla_\theta J(\theta)=\sum\limits^T_{t=0}\big(\mathbb{E}_{\tau_{\mathbf{x_0:u_t}}\sim p_\theta(\tau_{\mathbf{x_0:u_t}})}\big[\gamma^t \nabla_\theta \log \pi_\theta(\mathbf{u_t|x_t}) A^{\pi_\theta}(\mathbf{x_t, u_t}) \big] \big)

식 2.
θJ(θ)=t=0T(Extpθ(xt),utπθ(utxt)[γtθlogπθ(utxt)Aπθ(xt,ut)])\nabla_\theta J(\theta)=\sum\limits^T_{t=0}\big(\mathbb{E}_{\mathbf{x_t}\sim p_\theta(\mathbf{x}_t), \mathbf{u_t}\sim\pi_\theta(\mathbf{u_t|x_t})}\big[\gamma^t \nabla_\theta \log \pi_\theta(\mathbf{u_t|x_t}) A^{\pi_\theta}(\mathbf{x_t, u_t}) \big] \big)

  • τx0:ut=(x0,u0,x1,u1,...,xt,ut)\tau_{\mathbf{x}_0:\mathbf{u}_t}=(\mathbf{x_0, u_0, x_1, u_1, ..., x_t, u_t})

πθ\pi_\theta로 발생시킨 sample을 이용해 기댓값을 계산한다.
즉 policy를 한 단계 update한 후 이전 policy가 발생시킨 sample은 폐기하고 update된 policy로 sample을 다시 발생시킴. 이 sample로 다시 policy update 반복

on-policy: policy를 update하기 위해 해당 policy로 발생시킨 sample이 필요한 방법
off-policy보다 데이터 효율성이 떨어짐.
off-policy는 다른 policy로 발생시킨 sample로도 해당 policy를 update할 수 있다.
그렇다면, 현재 policy πθ\pi_\theta 대신에 이전 정책 πθOLD\pi_{\theta_{OLD}}로 발생시킨 sample로도 기댓값을 계산할 수 없을까?

중요 샘플링에 의하면 PDF p(x)p(\mathbf{x})에 기반한 함수 f(x)f(\mathbf{x})의 기댓값을 다른 PDF q(x)q(\mathbf{x})에 기반하여 계산할 수 있다.

Exp(x)[f(x)]=Exq(x)[p(x)q(x)f(x)]\mathbb{E}_{\mathbf{x}\sim p(\mathbf{x})}\big[f(\mathbf{x}) \big]=\mathbb{E}_{\mathbf{x}\sim q(\mathbf{x})}\bigg[ \cfrac{p(\mathbf{x})}{q(\mathbf{x})}f(\mathbf{x})\bigg]

중요도 샘플링의 원리 수학적 증명

주로 몬테카를로 적분의 맥락에서 중요도 샘플링이 어떻게 적용되는지 설명합니다.

문제 설정

어떤 함수 (f(x))( f(x) )의 기대값 EP[f(x)]\mathbb{E}_P[f(x)]을 구한다. 기댓값의 정의는
EP[f(x)]=f(x)P(x) dx\mathbb{E}_P[f(x)] = \int f(x) P(x) \ dx
여기서 P(x)P(x)는 Probability Density Function, PDF.

직접 샘플링 접근법

만약 P(x)P(x)에서 직접 sample을 얻을 수 있다면, monte carlo 방법을 사용하여 기댓값을 다음과 같이 추정 가능
EP[f(x)]1Ni=1Nf(xi)\mathbb{E}_P[f(x)] \approx \cfrac{1}{N} \sum\limits_{i=1}^{N} f(x_i)

  • 여기서 xix_iP(x)P(x)로부터 얻은 sample
    그러나, P(x)P(x)로부터 직접 sample을 얻기 어려운 경우, 다른 분포 Q(x)Q(x)로부터 샘플링을 할 수 있음.

중요도 샘플링 접근법

Q(x)Q(x)를 사용하여 EP[f(x)]\mathbb{E}_P[f(x)]를 재구성할 수 있음. 먼저 적분 표현을 변경.
EP[f(x)]=f(x)P(x) dx=f(x)P(x)Q(x)Q(x) dx\mathbb{E}_P[f(x)] = \int f(x)P(x) \ dx = \int f(x) \cfrac{P(x)}{Q(x)} Q(x) \ dx

  • Q(x)Q(x)xx의 다른 PDF 입니다. 위 식에서 알 수 있듯이, P(x)P(x) 대신 Q(x)Q(x)에서 sampling한 다음, 비율 P(x)Q(x)\cfrac{P(x)}{Q(x)}가중치를 부여 가능

몬테카를로 추정

이제 Q(x)Q(x)로부터 샘플 xix_i를 얻고, 기대값을 다음과 같이 추정 가능
EQ[f(x)]1Ni=1Nf(xi)P(xi)Q(xi)\mathbb{E}_Q[f(x)] \approx \cfrac{1}{N} \sum\limits_{i=1}^{N} f(x_i) \frac{P(x_i)}{Q(x_i)}

  • w(xi)=P(xi)Q(xi)w(x_i) = \frac{P(x_i)}{Q(x_i)}는 각 sample에 대한 중요도 가중치.

important sampling 사용하여 P(x)P(x)에서의 기대값을 추정할 수 있는 이유

  • 목표 분포 P(x)P(x)에서의 sampling이 어려운 경우, 쉽게 sampling할 수 있는 분포 Q(x)Q(x)를 사용하여 sample을 뽑고, Q(x)Q(x)에서 뽑은 각 sample의 중요도 가중치를 조정하여 원래 분포 P(x)P(x)에서의 결과를 재구성 가능. 이것이 수학적으로 가능한 이유는 최종적으로 적분값이 동일하게 유지되기 때문.

식 1.에 important sampling 개념을 적용하면, objective function의 gradient는 다음과 같다.
θJ(θ)=t=0T(Eτx0,ut:pθOLD(τxt,ut)[pθ(τx0:ut)pθOLD(τx0:ut) γtθlogπθ(utxt)Aπθ(xt,ut)])\nabla_\theta J(\theta)=\sum\limits^T_{t=0}\big(\mathbb{E}_{\tau_{\mathbf{x_0, u_t}:}\sim p_{\theta_{OLD}}(\tau_{\mathbf{x_t, u_t}})} \bigg[\cfrac{p_\theta(\tau_{\mathbf{x}_0:\mathbf{u}_t})}{p_{\theta_{OLD}} (\tau_{\mathbf{x}_0:\mathbf{u}_t})}\ \gamma^t \nabla_\theta \log \pi_\theta(\mathbf{u_t|x_t}) A^{\pi_\theta}(\mathbf{x_t, u_t}) \big] \bigg)

  • trajectory를 (x0,u0,x1,u1....,xT,uT)(\mathbf{x_0, u_0, x_1, u_1. ..., x_T, u_T})일 때 Markov 가정 하에 전개하면
    pθ=p(x0)t=0Tπθ(utxt)p(xt+1xt,ut)p_\theta=p(\mathbf{x}_0)\prod\limits^{T}_{t=0}\pi_\theta(\mathbf{u_t|x_t})p(\mathbf{x_{t+1}|x_t,u_t})

이를 이용하여 위 중요도 가중치는 아래와 같이 표현
pθ(τx0:ut)pθOLD(τx0:ut)=p(x0)k=0tπθ(ukxk)p(xk+1xk,uk)p(x0)k=0tπθold(ukxk)p(xk+1xk,uk)=k=0tπθ(ukxk)πθold(ukxk)\cfrac{p_\theta(\tau_{\mathbf{x}_0:\mathbf{u}_t})}{p_{\theta_{OLD}}(\tau_{\mathbf{x_0:u_t}})}=\cfrac{p(\mathbf{x}_0)\prod\limits^{t}_{k=0}\pi_\theta(\mathbf{u_k|x_k})p(\mathbf{x_{k+1}|x_k,u_k})}{p(\mathbf{x}_{0})\prod\limits^{t}_{k=0}\pi_{\theta_{old}}(\mathbf{u_k|x_k})p(\mathbf{x_{k+1}|x_k,u_k})}=\prod\limits^{t}_{k=0}\cfrac{\pi_\theta(\mathbf{u_k|x_k})}{\pi_{\theta_{old}}(\mathbf{u_k|x_k})}

이 식을 objective gradient 식에 대입하면 다음과 같이 된다.
θJ(θ)=t=0T(Eτx0,ut:pθOLD(τxt,ut)[(k=0tπθ(ukxk)πθold(ukxk)) γtθlogπθ(utxt)Aπθ(xt,ut)])\nabla_\theta J(\theta)=\sum\limits^T_{t=0}\big(\mathbb{E}_{\tau_{\mathbf{x_0, u_t}:}\sim p_{\theta_{OLD}}(\tau_{\mathbf{x_t, u_t}})} \bigg[\bigg(\prod\limits^{t}_{k=0}\cfrac{\pi_\theta(\mathbf{u_k|x_k})}{\pi_{\theta_{old}}(\mathbf{u_k|x_k})}\bigg)\ \gamma^t \nabla_\theta \log \pi_\theta(\mathbf{u_t|x_t}) A^{\pi_\theta}(\mathbf{x_t, u_t}) \big] \bigg)

위 식에 의하면 이전 policy(πθold\pi_{\theta_{old}})로 발생시킨 sample τx0:ut\tau_{\mathbf{x_0:u_t}}를 이용해 기댓값 계산 가능.
즉, 이전 policy로 발생시킨 sample을 이용해 현재의 policy를 평가하고 update할 수 있다.

하지만 위 식에는 스케일 함수가 시간이 흐름에 따라 계속 곱해진다는 것인데, 정책 πθ\pi_\thetaπθold\pi_{\theta_{old}}가 서로 비슷하다고 해도 곱셈이 계속 누적되면 나중에는 큰 차이를 보일 수 있다. 즉 scale이 아주 컸다가 아주 작아질수 있다. 스케일이 아주 작아진다면 학습이 어려울 것이고 update가 작아서, 아주 커지면 학습이 불안정해진다.

식 2.에 importance smapling을 이용해 새 policy(πθ(utxt))(\pi_\theta(\mathbf{u_t|x_t}))에 기반한 기댓값을 이전 policy(πθold(utxt))(\pi_{\theta_{old}}(\mathbf{u_t|x_t}))에 대해 바꾸면

θJ(θ)=t=0T(Extpθ(xt),utπθ(utxt)[γtθlogπθ(utxt)Aπθ(xt,ut)])\nabla_\theta J(\theta)=\sum\limits^T_{t=0}\big(\mathbb{E}_{\mathbf{x_t}\sim p_\theta(\mathbf{x}_t), \mathbf{u_t}\sim\pi_\theta(\mathbf{u_t|x_t})}\big[\gamma^t \nabla_\theta \log \pi_\theta(\mathbf{u_t|x_t}) A^{\pi_\theta}(\mathbf{x_t, u_t}) \big] \big)
=t=0T(Extpθold(xt)[pθ(xt)pθold(xt) Eutπθold(utxt)[γtπθ(utxt)πθold(utxt)θlogπθ(utxt)Aπθ(xt,ut)]])=\sum\limits^T_{t=0}\big(\mathbb{E}_{\mathbf{x_t}\sim p_{\theta_{old}}(\mathbf{x}_t)}\bigg[\cfrac{p_\theta(\mathbf{x}_t)}{p_{\theta_{old}}(\mathbf{x}_t)}\ \mathbb{E}_{\mathbf{u}_t\sim\pi_{\theta_{old}}(\mathbf{u_t|x_t})}\bigg[\gamma^t \cfrac{\pi_\theta(\mathbf{u_t|x_t})}{\pi_{\theta_{old}}(\mathbf{u_t|x_t})} \nabla_\theta \log \pi_\theta(\mathbf{u_t|x_t}) A^{\pi_\theta}(\mathbf{x_t, u_t}) \bigg]\bigg] \big)

위 식에서 xt\mathbf{x}_t state까지 가게 될 확률이 새 policy와 이전 policy가 거의 같다고 가정하면 pθ(xt)pθold(xt)1\cfrac{p_\theta(\mathbf{x}_t)}{p_{\theta_{old}}(\mathbf{x}_t)}\approx1,
θJ(θ)=t=0T(Extpθold(xt)[ Eutπθold(utxt)[γtπθ(utxt)πθold(utxt)θlogπθ(utxt)Aπθ(xt,ut)]])\nabla_\theta J(\theta)=\sum\limits^T_{t=0}\big(\mathbb{E}_{\mathbf{x_t}\sim p_{\theta_{old}}(\mathbf{x}_t)}\bigg[\ \mathbb{E}_{\mathbf{u}_t\sim\pi_{\theta_{old}}(\mathbf{u_t|x_t})}\bigg[\gamma^t \cfrac{\pi_\theta(\mathbf{u_t|x_t})}{\pi_{\theta_{old}}(\mathbf{u_t|x_t})} \nabla_\theta \log \pi_\theta(\mathbf{u_t|x_t}) A^{\pi_\theta}(\mathbf{x_t, u_t}) \bigg]\bigg] \big)

위 식에 의하면 이전 policy(θold\theta_{old})로 발생시킨 sample을 이용해 현재 policy를 평가하고 update할수 있으며, scale 함수는 πθ(utxt)πθold(utxt)\cfrac{\pi_\theta(\mathbf{u_t|x_t})}{\pi_{\theta_{old}}(\mathbf{u_t|x_t})}는 이전과 달리 \prod가 아닌 현재 timestep t만의 함수가 되기 때문에 누적되지 않는다. 위 식은 pθ(xt)pθold(xt)1\cfrac{p_\theta(\mathbf{x}_t)}{p_{\theta_{old}}(\mathbf{x}_t)}\approx1 가정 하에 성립한다.
또한 Aπθ(xt,ut)A^{\pi_{\theta}}(\mathbf{x}_t, \mathbf{u}_t)Aπθold(xt,ut)A^{\pi_{\theta_{old}}}(\mathbf{x}_t, \mathbf{u}_t)로 치환 가능한지 알아본다.


3. policy update와 성능

Policy gradient의 원래 목적은 다음과 같은 objective function이 있을 때
J(θ)=Eτpθ(τ)[t=0Tγtr(xt,ut)]J(\theta)=\mathbb{E}_{\tau \sim p_\theta(\tau)}\big[\sum\limits_{t=0}^T\gamma^t r(\mathbf{x_t, u_t})\big]

다음과 같이 policy parameter θ\theta에 대한 objective function의 gradient를 이용해 objective 함수가 최대가 되도록 점진적으로 policy πθ\pi_\theta를 update하는 것
θθ+αθJ(θ)\theta \leftarrow\theta+\alpha\nabla_\theta J(\theta)

policy를 update한다는 것
update 이전 policy(πθold\pi_{\theta_{old}})와 이후의 policy πθ\pi_\theta로 인한 objective function의 차이가 J(θ)J(θold)>0J(\theta)-J(\theta_{old})>0이 되도록 하는 것

이제 policy의 차이에 따른 objective function의 차이를 정량적으로 계산. 다음과 같이 πθold\pi_{\theta_{old}}πθ\pi_\theta에 따른 objective function이 있다.
J(θ)=Eτpθ(τ)[t=0γt r(xt,ut)]J(\theta)=\mathbb{E}_{\tau\sim p_{\theta}(\tau)}\big[\sum\limits^{\infty}_{t=0}\gamma^t \ r(\mathbf{x_t, u_t}) \big]
J(θold)=Eτpθold(τ)[t=0γt r(xt,ut)]J(\theta_{old})=\mathbb{E}_{\tau\sim p_{\theta_{old}}(\tau)}\big[\sum\limits^{\infty}_{t=0}\gamma^t \ r(\mathbf{x_t, u_t}) \big]

여기서 trajectory는 τ=(x0,u0,x1,u1,...)\tau=(\mathbf{x_0, u_0, x_1, u_1, ...})이며 무한 구간 episdoe라고 가정. objective function은 다음과 같이 적분 형태로 표현 가능

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

  • p(x0)p(\mathbf{x}_0)는 state x0\mathbf{x}_0 오게 되는 PDF

이 식을 이용하면 두 policy 차이에 따른 objective function 차이는 다음과 같다.
J(θ)J(θold)=Ex0p(x0)[Vπθ(x0)]Ex0p(x0)[Vπθold(x0)]J(\theta)-J(\theta_{old})=\mathbb{E}_{\mathbf{x}_0 \sim p(\mathbf{x}_0)}\big[ V^{\pi_\theta}(\mathbf{x}_0) \big] -\mathbb{E}_{\mathbf{x}_0 \sim p(\mathbf{x}_0)}\big[ V^{\pi_{\theta_{old}}}(\mathbf{x}_0) \big]

확률밀도함수의 적분은 1임을 이용해((u0,x1,u1,...)pθ(u0,x1,u1,...)du0dx1du1=1\int_{(\mathbf{u_0, x_1, u_1,...})} p_{\theta}(\mathbf{u_0, x_1, u_1, ...)}d\mathbf{u}_0d\mathbf{x}_1 d\mathbf{u}_1 \cdots=1) 2번째 항을 다음과 같이 바꿀 수 있다.
Ex0p(x0)[Vπθold(x0)]=x0Vπθold(x0)p(x0)dx0\mathbb{E}_{\mathbf{x}_0\sim p(\mathbf{x}_0)}\big[V^{\pi_{\theta_{old}}}(\mathbf{x}_0) \big]=\int_{\mathbf{x}_0} V^{\pi_{\theta_{old}}}(\mathbf{x}_0)p(\mathbf{x}_0)d\mathbf{x}_0
=x0[(u0,x1,u1,...)pθ(u0,x1,u1,...)du0dx1du1]Vπθold(x0)p(x0)dx0=\int_{\mathbf{x}_0}\big[ \int_{(\mathbf{u_0, x_1, u_1,...})} p_{\theta}(\mathbf{u_0, x_1, u_1, ...)}d\mathbf{u}_0d\mathbf{x}_1 d\mathbf{u}_1 \cdots \big] V^{\pi_{\theta_{old}}}(\mathbf{x}_0)p(\mathbf{x}_0)d\mathbf{x}_0
=τVπθold(x0)p(τ)dτ=\int_\tau V^{\pi_{\theta_{old}}}(\mathbf{x}_0)p(\tau)d\tau

결국에는 x0\mathbf{x}_0에서 출발한 해당 경로에서 새로운 θ\thetapdf에 VπθoldV^{\pi_{\theta_{old}}}에 대한 평균이다.
Ex0p(x0)[Vπθold(x0)]=Eτpθ(τ)[Vπθold(x0)]\mathbb{E}_{\mathbf{x}_0\sim p(\mathbf{x}_0)}[V^{\pi_{\theta_{old}}}(\mathbf{x}_0) \big]=\mathbb{E}_{\tau\sim p_\theta(\tau)}\big[ V^{\pi_{\theta_{old}}}(\mathbf{x}_0) \big]

이 때 pdf 적분이 1인 것을 pθ(x0)p_{\theta}(\mathbf{x}_0) 함수를 이용하는 트릭을 사용했다.

objective function 차이의 첫번째 항도 해당 트릭을 사용하면
J(θ)J(θold)=Eτpθ(τ)[Vπθ(x0)]Eτpθ(τ)[Vπθold(x0)]J(\theta)-J(\theta_{old})=\mathbb{E}_{\mathbf{\tau} \sim p_\theta(\mathbf{\tau})}\big[ V^{\pi_\theta}(\mathbf{x}_0) \big] -\mathbb{E}_{\mathbf{\tau} \sim p_\theta(\mathbf{\tau})}\big[ V^{\pi_{\theta_{old}}}(\mathbf{x}_0) \big]

무한 구간 episode를 가정했으므로 전개하면
Eτpθ(τ)[Vπθ(x0)]Eτpθ(τ)[Vπθold(x0)]\mathbb{E}_{\mathbf{\tau} \sim p_\theta(\mathbf{\tau})}\big[ V^{\pi_\theta}(\mathbf{x}_0) \big] -\mathbb{E}_{\mathbf{\tau} \sim p_\theta(\mathbf{\tau})}\big[ V^{\pi_{\theta_{old}}}(\mathbf{x}_0) \big]
=Eτpθ(τ)[Vπθ(x0)]Eτpθ(τ)[t=0γtVπθold(xt)t=1γtVπθold(xt)]=\mathbb{E}_{\tau \sim p_\theta(\tau)}\big[ V^{\pi_\theta}(\mathbf{x}_0) \big] - \mathbb{E}_{\tau\sim p_\theta(\tau)}\big[ \sum\limits^{\infty}_{t=0} \gamma^t V^{\pi_{\theta_{old}}}(\mathbf{x}_t) -\sum\limits^{\infty}_{t=1} \gamma^t V^{\pi_{\theta_{old}}}(\mathbf{x}_t) \big]
=Eτpθ(τ)[t=0γtr(xt,ut)]+Eτpθ(τ)[t=0γt(γVπθold(xt)Vπθold(xt))]=\mathbb{E}_{\tau\sim p_\theta(\tau)}\big[ \sum\limits^{\infty}_{t=0} \gamma^t r(\mathbf{x_t, u_t)} \big]+\mathbb{E}_{\tau\sim p_\theta(\tau)}\big[\sum\limits^{\infty}_{t=0} \gamma^t(\gamma V^{\pi_{\theta_{old}}}(\mathbf{x}_t) - V^{\pi_{\theta_{old}}}(\mathbf{x}_t))\big]
=Eτpθ(τ)[t=0γt(r(xt,ut)+γVπθold(xt)Vπθold(xt))]=\mathbb{E}_{\tau\sim p_\theta(\tau)}\big[ \sum\limits^\infty_{t=0} \gamma^t \big( r(\mathbf{x_t, u_t})+\gamma V^{\pi_{\theta{old}}}(\mathbf{x}_t)-V^{\pi_{\theta{old}}}(\mathbf{x}_t) \big) \big]

  • Advantage 함수의 정의
    Aπθ(xt,ut)=Qπθ(xt,ut)Vθπ(xt)A^{\pi_\theta}(\mathbf{x_t, u_t})=Q^{\pi_\theta}(\mathbf{x}_t, \mathbf{u}_t)-V^{\pi}_\theta(\mathbf{x_t})
    =r(xt,ut)+Ext+1p(xt+1xt,ut)[γVπθ(xt+1)]Vπθ(xt+1)=r(\mathbf{x_t, u_t})+\mathbb{E}_{\mathbf{x}_{t+1}\sim p(\mathbf{x}_{t+1}|\mathbf{x_t}, \mathbf{u_t})}\big[ \gamma V^{\pi_\theta}(\mathbf{x}_{t+1}) \big]-V^{\pi_\theta}(\mathbf{x}_{t+1})
    =Ext+1p(xt+1xt,ut)[r(xt,ut)+γVπθ(xt+1)Vπθ(xt+1)]=\mathbb{E}_{\mathbf{x}_{t+1}\sim p(\mathbf{x}_{t+1}|\mathbf{x_t}, \mathbf{u_t})}\big[r(\mathbf{x_t, u_t})+\gamma V^{\pi_\theta}(\mathbf{x}_{t+1}) -V^{\pi_\theta}(\mathbf{x}_{t+1})\big]

J(θ)J(θold)=Eτpθ(τ)[t=0γtAπθ(xt,ut)]J(\theta)-J(\theta_{old})=\mathbb{E}_{\tau\sim p_\theta(\tau)}\big[ \sum\limits_{t=0}^{\infty} \gamma^t A^{\pi_\theta}(\mathbf{x}_t, \mathbf{u}_t) \big]

위 식은 여전히 현재 policy(πθ\pi_\theta)로 발생시킨 sample이 필요.
πθold\pi_{\theta_{old}}로 sample을 발생시킬 수 있도록 해결해보자.

pθ(τ)=pθ(x0,u0,...,ut1,xt,ut,xt+1,...)p_\theta(\tau)=p_\theta(\mathbf{x_0, u_0, ..., u_{t-1}, x_t, u_t, x_{t+1}, ...})
x0\mathbf{x_0}에서 action t1t-1을 취해서 xt\mathbf{x}_t state로 이동 후 action ut\mathbf{u}_t를 취해서 xt+1\mathbf{x}_{t+1} state에서 무한대 episode까지.
=pθ(τx0:ut1,xt,ut,τxt+1:=p_\theta(\tau_{\mathbf{x_0:u_{t-1}}}, \mathbf{x_t, u_t}, \tau_{x_{t+1}:\infty})
경로가 저렇게 정해진 상황에서, xt,ut\mathbf{x_t},\mathbf{u_t}만 따로놓고 살펴보자.

=pθ(utxt,τx0:ut1,τxt+1:)pθ(xt,τx0:ut1,τxt+1:)=p_\theta(\mathbf{u}_t|\mathbf{x_t}, \tau_{\mathbf{x}_0:\mathbf{u}_{t-1}}, \tau_{\mathbf{x}_{t+1}:\infty})p_\theta(\mathbf{x}_t, \tau_{\mathbf{x_0:u_{t-1}}}, \tau_{x_{t+1}:\infty})

  • τx0:ut1=(x0,u0,...,xt1,ut1)\tau_{\mathbf{x_0}:\mathbf{u_{t-1}}}=(\mathbf{x}_0, \mathbf{u}_0, ..., \mathbf{x_{t-1}}, \mathbf{u_{t-1}}), τxt+1:(xt+1,ut+1,...)\tau_{\mathbf{x_{t+1}}:\infty}(\mathbf{x}_{t+1}, \mathbf{u}_{t+1}, ...)

Markov 정리를 이용하면 위 식은
pθ(τ)=πθ(utxt)pθ(p_\theta(\tau)=\pi_\theta(\mathbf{u_t|x_t})p_\theta(

profile
Don't hesitate!

0개의 댓글