[Reinforcement Learning] A2C

jekim5418·2021년 10월 13일
0

[Reinforcement Learning]

목록 보기
5/5

REINFORCE 알고리즘은 정책을 업데이트 하기 위해서 M개의 에피소드가 끝날 때 까지 기다려야하며, 그래디언트의 분산이 매우 크다는 단점이 있다. 이를 개선하기 위해 제시된 알고리즘이 어드벤티지 액터-크리틱(A2C, Advantage actor-critic) 이다.
REINFORCE의 목적함수는 반환값으로 이루어져 있었다. 이를 바탕으로 목적함수를 재구성하면 다음과 같다.

θJ(θ)=t=0T(Extdθ,atπθ(τ)[γtθlogπθ(atxt)Qπθ(xt,at)])\nabla_{\theta}J(\theta)=\sum_{t=0}^T(E_{x_t\sim d_{\theta}, a_t\sim \pi_{\theta}(\tau)}[\gamma^t \nabla_{\theta}log\pi_{\theta}(a_t|x_t) Q^{\pi_{\theta}}(x_t, a_t)])

위 식을 보면 반환값 대신에 행동가치 함수가 있고, 행동가치를 계산하면 되는 형태로 바뀌었다.
행동가치는 정책이 실현되는 시간스텝 tt에서의 기댓값이기 때문에 목적함수의 그래디언트를 계산할 때 에피소드가 끝날 때 까지 기다릴 필요가 없다.

그래디언트 값의 분산이 커지게 되면 학습이 상당히 불안정해 지게 된다. 위의 그래디언트 식에서 분산을 줄이기 위해서 상태가치 함수를 베이스 라인(목적함수 그래디언트의 분산을 최소화 하는 값)으로 사용한다. 상태가치 함수를 사용하는 이유는 행동의 함수가 아니기 때문에 베이스라인으로 사용할 수 있는 것이다. 위의 그래디언트 식에 상태가치 함수를 적용한 그래디언트 식은 다음과 같다.

θJ(θ)=t=0T(Extpθ,atπθ(τ)[θlogπθ(atxt){Qπθ(xt,at)Vπθ(xt,at)}])=t=0T(Extpθ,atπθ(τ)[θlogπθ(atxt){Aπθ(xt,at)}])\nabla_{\theta}J(\theta)=\sum_{t=0}^T(E_{x_t\sim p_{\theta}, a_t\sim \pi_{\theta}(\tau)}[\nabla_{\theta}log\pi_{\theta}(a_t|x_t) \{Q^{\pi_{\theta}}(x_t, a_t)-V^{\pi_{\theta}}(x_t, a_t)\}])=\sum_{t=0}^T(E_{x_t\sim p_{\theta}, a_t\sim \pi_{\theta}(\tau)}[\nabla_{\theta}log\pi_{\theta}(a_t|x_t) \{A^{\pi_{\theta}}(x_t, a_t)\}])

여기서 Aπθ(xt,at)A^{\pi_{\theta}}(x_t, a_t)는 어드벤티지 함수(Advantage)함수라고 한다.
어드벤티지 함수는 상태변수 xtx_t에서 선택된 행동 ata_t가 평균에 비해 얼마나 좋은 지를 평가하는 척도로 해석할 수 있다. 이제, 목적함수 그래디언트는 행동가치가 아닌 advantage에 비례하게 되고, 분산을 줄이는 문제는 어드벤티지 함수를 얼마나 정확하게 추정하느냐에 달려 있다.
어드벤티지 함수는 Aπθ(xt,at)r(xt,at)+γVπθ(xt+1)Vπθ(xt)A^{\pi_{\theta}}(x_t, a_t)\approx r(x_t, a_t) + \gamma V^{\pi_{\theta}}(x_{t+1})-V^{\pi_{\theta}}(x_t) 로 근사할 수 있으며, 상태가치를 얼마나 정확하게 계산하느냐의 문제로 바뀌게 된다. 이 문제를 해결하기 위해서 정책 신경망과 다른 신경망을 이용해 상태가치 함수를 근사한다.

정책 신경망은 에이전트가 어떻게 행동해야하는지 알려주므로 액터(actor) 신경망이라고 하고, 가치 신경망을 행동을 평가하기 때문에 크리틱(critic) 신경망 이라고 한다.

0개의 댓글