A2C 알고리즘

Seulgi Kim·2023년 6월 27일
0

reinforce learning

목록 보기
13/14

A2C 알고리즘의 목적함수의 그래디언트

A2C 알고리즘의 목적함수 그래디언트는 다음과 같다.

θJ(θ)=t=0T(E[θlogπθ(utxt)Aπθ(xt,ut)])\begin{aligned} \nabla_\theta J(\theta) = \sum\limits_{t=0}^T ({\mathbb E}[\nabla_\theta \log \pi_\theta(u_t|x_t) A^{\pi_\theta}(x_t, u_t)]) \end{aligned}

한개의 에피소드 샘플만을 생각하면 다음과 같이 근사적으로 구할 수 있다.

θJ(θ)t=0T(θlogπθ(utxt)Aπθ(xt,ut))\begin{aligned} \nabla_\theta J(\theta) \approx \sum\limits_{t=0}^T (\nabla_\theta \log \pi_\theta (u_t|x_t) A^{\pi_\theta} (x_t, u_t)) \end{aligned}

어드밴티지 함수는 다음과 같이 근사적으로 구할 수 있다.

Aπθ(xt,ut)=Qπθ(xt,ut)Vπθ(xt)=r(xt,ut)+Ext+1p(xt+1xt,ut)[γVπ(xt+1)]r(xt,ut)+γVπθ(xt+1)Vπθ(xt)\begin{aligned} A^{\pi_\theta}(x_t, u_t) &= Q^{\pi_\theta}(x_t, u_t) - V^{\pi_\theta}(x_t) \\ &= r(x_t, u_t) + {\mathbb E}_{x_{t+1} \sim p(x_{t+1}|x_t, u_t)} [\gamma V^{\pi} (x_{t+1})] \\ &\approx r(x_t, u_t) + \gamma V^{\pi_\theta}(x_{t+1}) - V^{\pi_\theta}(x_t) \end{aligned}

여기서 근사적으로 어드밴티지 함수를 구하기 위해, 현재 관측된 xt+1x_{t+1}이 가장 상태 천이 확률이 높은 p(xt+1xt,ut)p(x_{t+1}|x_t, u_t)로부터 얻어졌다고 생각하면, γV(xt+1)\gamma V(x_{t+1})의 평균이 현재 관측된 xt+1x_{t+1}의 상태가치함수로 대체될 수 있다.

이제 목적함수의 그래디언트를 계산하는 것은 상태가치 함수를 얼마나 정확히 계산하느냐에 달려있다.
정책 π\piθ\theta로 파라미터화된 정책 신경망으로부터 추정하고, 가치 VVϕ\phi로 파라미터화된 가치 신경망으로부터 추정한다.
그러면 정책 신경망과 가치 신경망, 두 개의 신경망이 작동하게 되는데, 정책 신경망은 에이전트가 어떻게 행동해야 하는지를 알려주므로 액터(actor) 신경망이라고 하고, 가치 신경망은 그 행동을 평가하기 때문에 크리틱(critic) 신경망이라고 한다.
두 신경망에 대해 두 개의 독립적인 신경망을 구성하는 경우도 있고, 공통의 신경망을 쓰고 출력 부분만 다른 layer를 쓰는 경우도 있다.

가치함수 추정

벨만 방정식에 의하면, 현재 상태와 다음 상태의 가치함수가 다음과 같은 관계가 있다.

Vπ(xt)=Eutπ(utxt)[r(xt,ut)+Ext+1p(xt+1xt,ut)[γVπ(xt+1)]]\begin{aligned} V^\pi(x_t) &= {\mathbb E}_{u_t \sim \pi(u_t|x_t)} [ r(x_t, u_t) + {\mathbb E}_{x_{t+1} \sim p(x_{t+1}|x_t, u_t)} [\gamma V^\pi(x_{t+1})] ] \end{aligned}

따라서 가치함수를 근사하는 함수 Vϕ(xt)V_\phi (x_t)는 다음과 같이 근사적으로 추정할 수 있다.

Vϕ(xt)r(xt,ut)+γVϕ(xt+1)\begin{aligned} V_\phi(x_t) \approx r(x_t, u_t) + \gamma V_\phi (x_{t+1}) \end{aligned}

여기서도 근사적으로 Vϕ(xt)V_\phi (x_t)를 구하기 위해, 관측된 xt+1x_{t+1}은 가장 확률이 높은 p(xt+1xt,ut)p(x_{t+1}|x_t, u_t)로부터 얻어졌고, 현재 실행한 행동 utu_t가 가장 최선의 정책(확률이 높은 π\pi)로부터 얻어졌다고 생각한다.

시간차 타깃(TD target)을 참값(true)이라고 가정하면, 근사 가치함수 Vϕ(xt)V_\phi(x_t)의 손실함수를 mean square deviation (MSD)으로 구할 수 있다.

Losscritic(ϕ)=12ir(xi,ui)+γVϕ(xi+1)Vϕ(xi)2\begin{aligned} Loss_{critic}(\phi) = {1\over2}\sum\limits_i || r(x_i, u_i) + \gamma V_\phi (x_{i+1}) - V_\phi (x_i) ||^2 \end{aligned}

여기서 Vϕ(xi)V_\phi(x_i)가 예측값이 된다.
121\over2는 미분했을 때 제곱에서 나오는 22를 없애주기 위한 하나의 트릭이다.
크리틱 신경망으로부터 얻어진 상태가치함수 VϕV_\phi로부터 어드밴티지 함수도 계산할 수 있다.

Aϕ(xi,ui)r(xi,ui)+γVϕ(xi+1)Vϕ(xi)\begin{aligned} A_\phi(x_i, u_i) \approx r(x_i, u_i) + \gamma V_\phi(x_{i+1}) - V_\phi(x_i) \end{aligned}

정책 추정

정책은 목적함수로부터 얻어진다.

Lossactor(θ)i(logπθ(uixi)Aϕ(xi,ui))\begin{aligned} Loss_{actor}(\theta) \approx - \sum\limits_i (\log \pi_\theta (u_i|x_i) A_\phi(x_i, u_i)) \end{aligned}

이때 A2C의 목적함수는 최대화 해야하고, loss는 일반적으로 최소화하는 방향으로 학습하므로, 앞에 음의 부호를 붙인다.
여기서 Aϕ(xi,ui)A_\phi(x_i, u_i)θ\theta의 함수가 아니기 때문에 그래디언트 안에 포함될 수 있다.

액터 신경망의 로스는 참값이 항상 1인 교차 엔트로피에 어드밴티지 함수를 곱한 형태이다.
교차 엔트로피란 H(p,q)=Exp(x)[logq(x)]=xp(x)logq(x)dx{\mathcal H}(p, q) = {\mathbb E}_{x \sim p(x)}[-\log q(x)] = -\int_x p(x) \log q(x) dx로 표시하며, 확률 분포 p(x)p(x)에 따라 일어나는 이벤트를 근사 분포 q(x)q(x)를 사용하여 나타내려고 할 때 필요한 정보량이다.
액터 신경망의 로스는 참값이 항상 1인 p(x)p(x)가 있다고 했을 때 확률분포함수 πθ\pi_\thetap(x)p(x)에 의해 일어나는 이벤트를 나타내려고 할 때 필요한 정보량이다.
이때 정보량은 작을수록 더 잘 모사한다는 것을 의미하므로, loss는 줄어드는 방향으로 학습해야한다.
어드밴티지 함수는 정보량에 곱해진 형태로, 어드밴티지가 큰 정책의 샘플은 그래디언트 계산에 더 큰 영향을 미치고, 어드밴티지가 작은 정책의 샘플은 그래디언트 계산에 작은 영향을 미치므로, 점진적으로 정책이 향상될 것으로 기대된다.

A2C 프로세스

  1. ϕ\phiθ\theta를 초기화한다.
  2. 정책 uiu_i을 액터 크리틱 πθ(uixi)\pi_\theta (u_i|x_i)로부터 확률적으로 선택한다.
  3. uiu_i를 실행해 보상 r(xi,ui)r(x_i, u_i)와 다음 상태 xi+1x_{i+1}을 측정한다.
  4. 2~3을 N 스텝 동안 반복.
  5. 시간차 타깃 (TD target) yiy_i을 크리틱 신경망을 포함한 계산식으로 r(xi,ui)+γVϕ(xi+1)r(x_i, u_i) + \gamma V_\phi(x_{i+1}) 계산한다.
  6. 크리틱 신경망의 손실함수를 계산한다.
    losscritic=12i(yiVϕ(xi))2loss_{critic} = {1\over2}\sum\limits_i (y_i - V_\phi(x_i))^2
  7. 어드밴티지를 계산한다.
    Aϕ(xi,ui)=r(xi,ui)+γVϕ(xi+1)Vϕ(xi)A_\phi(x_i, u_i) = r(x_i, u_i) + \gamma V_\phi(x_{i+1}) - V_\phi(x_i)
  8. 크리틱 신경망을 업데이트 한다.
    ϕϕ+αcritici+1[(yiVϕ(xi))ϕVϕ(xi)]\phi \leftarrow \phi + \alpha_{critic} \sum\limits_{i+1}[(y_i - V_\phi(x_i)) \nabla_\phi V_\phi(x_i)]
  9. 액터 신경망을 업데이트 한다.
    θθ+αactorθi(logπθ(uixi)Aϕ(xi,ui))\theta \leftarrow \theta + \alpha_{actor} \nabla_\theta \sum\limits_i (\log \pi_\theta (u_i|x_i) A_\phi (x_i, u_i))
  10. 2~9 적절할 때까지 반복

온라인 액터-크리틱 프로세스

온라인 액터-크리틱 알고리즘은 한 개의 샘플이 생성되는 즉시 신경망을 업데이트 한다.
즉, N=1N=1이다.

연속 공간에서의 신경망 구조

이산공간

이산공간에서 액터 신경망의 출력층의 뉴런의 개수는 취할 수 있는 행동의 개수가 된다.
즉, 행동변수 u=[u1,...un]Tu = [u_1, ... u_n]^T의 차원이 nn이고 각 행동변수가 가질 수 있는 값 uj=uj1,uj2,...ujmu_j = {u_{j1}, u_{j2}, ... u_{jm}}의 개수가 m개라면, 출력층의 뉴런의 개수는 nmnm개가 된다.
예를 들어, 2차원 공간에서 움직이는 공이 있다고 했을 때, 행동변수 u=[u1,u2]u = [u_1, u_2]이고(xx축, yy축), 각 행동변수가 가질 수 있는 값은 {1,0,1}\{ -1, 0, 1\}이 된다.
즉, 액터 신경망은 xx축과 yy축으로 움직이는 정도에 따라 6개의 뉴런 출력층을 가질 수 있다.

연속공간

연속공간 행동변수일 경우, 가질 수 있는 행동의 개수는 무한대가 될 것이다.
따라서 구현 가능한 액터 신경망을 만들기 위해서는 신경망의 출력을 특정한 구조를 갖는 확률밀도함수라고 가정하는 것이 좋다.
예를 들면 행동변수가 서로 독립인 가우시안이라고 가정하면, 각각의 행동변수가 갖는 평균과 분산을 출력하게 하는 것이다.
기댓값이 μ=[μ1,μ2,...μm]T\mu = [\mu_1, \mu_2, ... \mu_m]^T이고 공분산이 P=diag{σ12,σ22,...,σm2}P = diag\{\sigma_1^2, \sigma_2^2, ..., \sigma_m^2\}인 가우시안 정책 확률 밀도 함수는 다음과 같이 주어진다.

πθ(utxt)=j=1mπθ(ui,jxt)=j=1m12πσθ,j2(xt)exp{(ut,jμθ,j(xt))22σθ,j2(xt)}logπθ(utxt)=j=1mlogπθ(ui,jxt)=j=1m[(ut,jμθ,j(xt))22σθ,j2(xt)+12log(2πσθ,j2(xt))]\begin{aligned} \pi_\theta(u_t|x_t) &= \prod\limits_{j=1}^m \pi_\theta (u_{i,j}|x_t) \\ &= \prod\limits_{j=1}^m {1 \over \sqrt{2\pi \sigma^2_{\theta, j}(x_t)}} \exp \{ - {(u_{t, j} - \mu_{\theta, j}(x_t))^2\over 2 \sigma^2_{\theta, j}(x_t)} \} \\ \log \pi_\theta (u_t|x_t) &= \sum\limits_{j=1}^m \log \pi_\theta (u_{i,j}|x_t) \\ &= -\sum\limits_{j=1}^m \left[ {(u_{t,j}-\mu_{\theta, j}(x_t))^2 \over 2\sigma^2_{\theta,j}(x_t)} + {1\over2}\log(2\pi \sigma^2_{\theta,j}(x_t))\right] \end{aligned}

0개의 댓글