아래의 내용은 세종대학교 박성수 교수님께서 쓰신 수학으로 풀어보는 강화학습 원리와 알고리즘 책의 4장의 내용을 표기법만 달리해서 정리한 내용입니다. 책의 전개와 설명이 좋아서 강화학습에 관심있는 분들은 꼭 구입하셔서 읽어보길 바랍니다.
- 강화학습의 목표: 누적 보상을 최대화하는 최적 정책(optimal policy)를 구하는 것
- 누적보상: J
- t시점에서의 상태(s)와 행동(a): st,at
- t시점에서의 상태와 행동으로 인한 보상: r(st,at)
- 정책: π(at∣st)
- 감가율: γ
A2C 배경
∇θJ(θ)=Eτ∼pθ(τ)[k=0∑T(γt∇θlogπθ(at∣st))(k=t∑Tγk−tr(st,at))]
기존 REINFORCE 알고리즘은 2개의 단점이 존재한다.
- 에피소드가 끝나야 정책 π를 업데이트할 수 있다. Why? Gt를 계산해야하므로.
- 그래디언트의 분산이 크다.
위의 두 문제점을 해결하고자 A2C 알고리즘이 제안되었다.
그래디언트 개선
A2C 알고리즘이 기존의 그래디언트를 어떻게 개선했는지 알아보자. 먼저, 궤적을 다음과 같이 분해하자.
τ=(s0,a0,s1,a1,…,sT,aT)=(s0,a0,…,st,at)∪(st+1,at+1,…,sT,aT)=τs0:at∪τst+1:aT
그래디언트를 위의 분해한 궤적을 기반으로 다시 적어보자.
∇θJ(θ)=Eτ∼pθ(τ)[k=0∑T(γt∇θlogπθ(at∣st))(k=t∑Tγk−tr(st,at))]=t=0∑T∫τs0:at∫τst+1:aT(γt∇θlogπθ(at∣st)(k=t∑Tγk−tr(st,at)))pθ(τs0:at,τst+1:aT)dτst+1:aTdτs0:at=t=0∑T∫τs0:at∫τst+1:aT(γt∇θlogπθ(at∣st)(k=t∑Tγk−tr(st,at)))pθ(τst+1:aT∣τs0:at)pθ(τs0:at)dτst+1:aTdτs0:at=t=0∑T∫τs0:atγt∇θlogπθ(at∣st)[∫τst+1:aT(k=t∑Tγk−tr(st,at))pθ(τst+1:aT∣τs0:at)dτst+1:aT]pθ(τs0:at)dτs0:at
여기서 마지막 줄 대괄호에 쓰인 식을 자세히 살펴보자.
∫τst+1:aT(k=t∑Tγk−tr(st,at))pθ(τst+1:aT∣τs0:at)dτst+1:aT=∫τst+1:aT(k=t∑Tγk−tr(st,at))pθ(τst+1:aT∣st,at)dτst+1:aT (∵Markov property)=Qπθ(st,at)
따라서, 위의 식을 이용하여 최종적으로 그래디언트를 표현하면 다음과 같다.
∇θJ(θ)=t=0∑T∫τs0:atγt∇θlogπθ(at∣st)Qπθ(st,at)pθ(τs0:at)dτs0:at=t=0∑T(∫(st,at)γt∇θlogπθ(at∣st)Qπθ(st,at)pθ(st,at)dstdat) (∵maginalization)=t=0∑T(∫(st,at)γt∇θlogπθ(at∣st)Qπθ(st,at)πθ(at∣st)pθ(st)dstdat)=t=0∑TEst∼pθ(st),at∼πθ(at∣st)[γt∇θlogπθ(at∣st)Qπθ(st,at)]
앞에서 소개한 비슷한 이슈로 γt는 제거한다.
∇θJ(θ)=t=0∑TEst∼pθ(st),at∼πθ(at∣st)[∇θlogπθ(at∣st)Qπθ(st,at)]
Advantage
bt=Qπθ(st,at) 치환해서 임의의 함수처럼 생각해보자.
∇θJ(θ)=t=0∑T(∫(st,at)∇θlogπθ(at∣st)⋅bt⋅πθ(at∣st)pθ(st)dstdat)=t=0∑T(∫(st,at)∇θπθ(at∣st)⋅bt⋅pθ(st)dstdat)=t=0∑T(∫st[∫at∇θπθ(at∣st)btdat]pθ(st)dst)
만약, bt가 at에 의존하지 않은 함수라고 해보자. 그리고 미분과 적분의 이동이 자유롭다고 가정하자.
∫at∇θπθ(at∣st)btdat=bt∫at∇θπθ(at∣st)dat=bt∇θ∫atπθ(at∣st)dat=bt∇θ1=0
위의 결과를 이용하면 다음을 알 수 있다.
∇θJ(θ)=t=0∑T(∫(st,at)∇θlogπθ(at∣st)⋅bt⋅πθ(at∣st)pθ(st)dstdat)=0
따라서, at에 의존하지 않은 적절한 bt를 이용하면 기존 그래디언트의 값은 변화시키지 않으면서 분산을 줄일 수 있다. 적절한 bt를 무엇일까? 앞에서 소개한 함수 중 at에 의존하지 않는 것이 있다. 바로 Vπθ(st)이다. 일반적으로 bt=Vπθ(st)를 사용하면 그래디언트의 분산이 줄어든다고 알려져있다.
∇θJ(θ)=t=0∑TEst∼pθ(st),at∼πθ(at∣st)[∇θlogπθ(at∣st){Qπθ(st,at)−Vπθ(st)}]=t=0∑TEst∼pθ(st),at∼πθ(at∣st)[∇θlogπθ(at∣st)Aπθ(st,at)]
Aπθ(st,at)=Qπθ(st,at)−Vπθ(st)=Qπθ(st,at)−Eat∼πθ(at∣st)[Qπθ(st,at)]를 advantage라고 정의한다. 식의 의미를 해석하면 st 상태에서 at 행동을 했을 때, 가치함수값이 기댓값보다 얼마나 좋은지를 나타내며 advantage와 의미가 통한다.
Actor-Critic
위에서 advantage를 알아보았다. 하지만 근본적인 문제는 advantage를 계산할 수 없다는 것이다. 왜냐면 Vπθ(st),Qπθ(st,at)를 모르기 때문이다. 따라서 두 가치함수를 추정해야한다. 먼저 두 가치함수의 관계를 살펴보자.
Qπ(st,at)=r(st,at)+Est+1∼p(st+1∣st,at)[γVπ(st+1)]
Advantage를 위의 식을 사용하여 다음과 같이 근사하자.
Aπθ(st,at)=Qπθ(st,at)−Vπθ(st)≈r(st,at)+γVπθ(st+1)−Vπθ(st)
Advantage를 계산하기 위해서는 상태가치함수(V)만을 잘 추정하면 되겠다. 추정은 신경망(neural network) 모델을 통해 수행한다. 정책 역시 신경망을 통해 모델링한다. 정책을 모델링한 정책 신경망은 파라미터 θ를 갖고 있으며 행동을 알려주기에 actor라고 부르며 상태가치함수를 추정하는 가치 신경망은 파라미터 ϕ를 갖고 있으며 가치를 평가하기에 critic이라고 부른다.
두 신경망은 목적이 다르기에 각기 다른 손실함수(혹은 누적보상)를 최소(혹은 최대)화하는 파라미터를 학습해야한다. 먼저 가치 신경망의 손실함수를 정의하기 위해서 벨만방정식을 생각하자.
Vπ(st)=Eat∼π(at∣st)[r(st,at)+Est+1∼p(st+1∣st,at)[γVπ(st+1)]]
위에서 했던 방식과 비슷하게 상태가치함수를 근사하자.
Vϕ(st)≈r(st,at)+γVϕ(st+1)
따라서 가치 신경망, critic의 손실함수는 다음과 같다.
Lcritic(ϕ)=21i∑∥r(si,ai)+γVϕ(si+1)−Vϕ(si)∥22
가치 신경망을 통해 추정한 가치함수를 가지고 advantage도 근사할 수 있다.
Aϕ(si,ai)≈r(si,ai)+γVϕ(si+1)−Vϕ(si)
따라서 정책 신경망, actor의 손실함수는 다음과 같다.
Lactor(θ)≈−i∑(logπθ(ai∣si)Aϕ(si,ai))
최종적으로 두 손실함수를 번갈아가면서 그래디언트를 구하고 ϕ와 θ를 업데이트해서 학습을 수행한다. 자세한 알고리즘과 코드는 세종대학교 박성수 교수님께서 쓰신 수학으로 풀어보는 강화학습 원리와 알고리즘 책을 참고하면 좋다.