[Reinforcement Learning] Value-based Methods / Policy-based Methods

zekim·2021년 10월 13일
0

[Reinforcement Learning]

목록 보기
4/5

Value-based Methods

Value-based Method에는 대표적으로 Q-Learning, Deep Q-Learning 등이 있다.
Value function에 의해서 각각의 state마다 action에 대해서 가치(value)를 판단한다. 이를 통해서 현재 상태(state)에 대해서 가장 최적의 action을 찾을 수 있다.
Value-based methods는 action space가 discrete action일 때 주로 사용한다.
ex. Q-Learning, SALSA, Value Iteraton, DQN

Policy-based Methods

REINFORCE 방식 등이 있다.
가치를 찾는 것이 아니라 policy를 직접적으로 최적화 한다. action space가 continuous이거나 stochastic일 때 주로 사용한다.
Policy-based method에서는 value function이 없다.
ex. REINFORCE, Actor Critic, Cross-entropy Method




Value-based, Policy-based의 두가지 방법이 존재하지만, 현재는 대부분 Policy-based method 들을 사용한다. 그 이유는 첫번째로, 강화학습의 최종적인 목표는 action을 잘하는 것이고, 각 state마다 정확한 가치를 알아야 하는지는 중요하지 않다. 두번째로는, value-based learning의 경우 output값이 scalar 값이고, policy-based method는 output이 확률이다. Output이 scalar가 되면 값 자체가 크게 변할 수 있기 때문에 학습이 불안정할 수 있다. 마지막으로, continuous value 같은 경우 각각의 모든 action에 대한 q-value를 구하는 것은 어렵다. 하지만, policy-based인 경우, q-value를 찾는 것 없이 바로 action을 찾기 때문에 매우 빠르다.

Policy Gradient

이처럼 최적 정책을 구하기 위해 Policy Gradient방법이 제시되었다.
정책 그래디언트 방법은 누적 보상을 파라미터화 된 정책의 함수로 기술해 누적 보상과 정책 파라미터 간의 함수 관계를 구축한다. 이 후, 최적화 방법을 사용해 누적 보상을 최대화하는 정책 파라미터를 계산하게 된다.
Policy Gradient의 목적함수는 J(θ)=Eτpθ(τ)[t=0Tγtr(xt,at)]=Ex0px0[Vπ0(x0)]J(\theta)=E_{\tau\sim p_{\theta}(\tau)}[\sum_{t=0}^T \gamma^t r(x_t, a_t)] = E_{x_0\sim p_{x_0}}[V^{\pi_0}(x_0)]이고, 반환값의 기댓값으로 이루어져 있는 것을 볼 수 있고, 목적함수는 초기 상태변수 x0x_0에 대한 상태가치의 평균값이 된다. 여기서, 정책이 θ\theta로 파라미터화 됐다면, 목적함수를 최대로 만드는 정책 파라미터 θ\theta를 계산하는 것이다. 이 때, Deep Reinforcement Learning에서 정책은 신경망으로 파라미터화 된다. 이 신경망을 정책 신경망(policy neural network)라고 한다.

정책 그래디언트(Policy Gradient)를 위해서 위의 목적 함수를 θ\theta에 대해서 미분하면 다음과 같은 식을 얻을 수 있다.

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

여기서 중요한 점은 상태천이 확률 밀도함수인 p(xt+1xt,at)p(x_{t+1}|x_t, a_t)가 목적함수 그래디언트 식에서 사라졌다는 것이다. 상태천이 확률 밀도함수는 환경으로 부터 주어지므로, 환경 모델이 필요없는 모델 프리(model-free) 강화학습 방법이 된다.
위의 그래디언트 식에서 감가율(γ\gamma)가 곱해져 있는 것을 볼 수 있는데, 감가율이 작을수록 변화율이 작아서 그래디언트를 0으로 만드는 현상이 일어난다. 또한, 감가율이 1이 되면, 그래디언트의 분산을 크게 만들 수 있고, 무한 구간 에피소드에서는 예정 보상의 총합이 무한대가 될 수 있기 때문에 사용하지 못할 수 있다. 따라서, 이를 보완한 실용적인 목적함수 그래디언트는 다음과 같다.

θJ(θ)=Eτθ(τ)[(t=0Tθlogπθ(atxt)(k=tTγktr(xt,at)))]\nabla_{\theta}J(\theta)=E_{\tau\sim_{\theta}(\tau)}[(\sum_{t=0}^T\nabla_{\theta}log\pi_{\theta}(a_t|x_t)(\sum_{k=t}^T\gamma^{k-t} r(x_t, a_t)))]

현재 시점이 tt인 경우, 현재 시점 이후의 예정 보상에만 감가율을 적용하는 것을 볼 수 있다.

REINFORCE

정책 그래디언트를 실제 적용하는데 있어서 τ\tau상의 기댓값은 수학적으로 직접 계산하기 어려우므로, 샘플을 이용해 추정한다. 여기서 샘플이란 어떤 정책을 실제로 실행해서 나온 에피소드를 의미한다. 따라서, 에피소드를 M개만큼 생성(샘플링)해 에피소드 평균을 이용해서 근사적으로 계산하게 된다.

θJ(θ)1M[m=1Mt=0T{θlogπθ(atxt)(k=tTγktr(xt,at))}]=1M[m=1Mt=0T{θlogπθ(atxt)Gt}]\nabla_{\theta}J(\theta)\approx {1\over M}[\sum_{m=1}^M\sum_{t=0}^T\{\nabla_{\theta}log\pi_{\theta}(a_t|x_t)(\sum_{k=t}^T\gamma^{k-t} r(x_t, a_t))\}] = {1\over M}[\sum_{m=1}^M\sum_{t=0}^T\{\nabla_{\theta}log\pi_{\theta}(a_t|x_t)G_t\}]

여기서, 매번 에피소드를 M개만큼 생성하고 정책을 업데이트 할 수도 있지만, 한 개의 에피소드마다 정책을 업데이트 할 수도 있다.

파라미터 θ\theta로 표현된 정책 πθ\pi_{\theta}를 신경망으로 구성할 때 에피소드의 손실함수로 다음 식을 사용한다.

loss=t=0(logπθ(at(m)xt(m))Gt(m))loss=-\sum_{t=0}(log\pi_{\theta}(a_{t}^{(m)}|x_{t}^{(m)})G_{t}^{(m)})

손실함수의 식을 보면 이진분류 문제에서 참값이 항상 1인 cross-entropy에 반환값(GtG_t)을 곱한 형태이다. 따라서, 반환값을 크게 받은 정책의 에피소드는 그래디언트 계산시 큰 영향을 끼쳐 보상이 최대가 되는 방향으로 정책이 개선되게 되는 것이다.

REINFORCE는 Neural Network의 output이 확률 값이며, 초기화는 uniform-distribution probability를 적용하였기 때문에 일종의 random behavior를 구현할 수 있게 되었다. Policy Gradient 모델의 경우 on-policy methods class에 속하며 old policy에 의해서 축적된 데이터로는 학습을 할 수 없다는 뜻이다. REINFORCE의 장점은 수렴이 비교적 빠르나, 환경과 더 많은 interaction을 요구하게 된다.

0개의 댓글