강화학습 개념정리(2) - rl problem, 벨만 방정식, Q 함수, advantage function, value function

JTDK·2021년 7월 18일
0

RL from zero to hero

목록 보기
2/7

Intro

1편에 이어 2편도 바로 작성하게 됐다. 기본적으로 내 머릿속 정리를 위해 쓰는거라 다소 배려가 부족하긴 하지만, 그래도 최대한 보는사람도 도움을 얻을 수 있게끔 쓰도록 노력하겠다.

RL Problem

정책의 종류나 리턴 측정의 종류에 상관없이, RL의 목표는 기대수익(Expected Return)을 극대화 하는 정책을 찾는것이다.

Expected Return 에 대해 얘기하기 위해서는 먼저 Trajectory의 확률 분포에 대해 알아야 한다.

Environment transition과 policy가 모두 확률적(Stochastic)인 상황에서 T-step Trajectory의 확률은 다음과 같다.

P(τπ)=ρ0(s0)t=0T1P(st+1st,at)π(atst)(1)P(\tau|\pi)=\rho_0(s_0)\displaystyle\prod_{t=0}^{T-1}P(s_{t+1}|s_t,a_t)\pi(a_t|s_t)-(1)

ρ0(s0)\rho_0(s_0) : start-state distribution 으로부터 sampling된 s0s_0의 확률값 (처음 상태가 s0s_0이 될 확률)

t=0T1P(st+1st,at)\displaystyle\prod_{t=0}^{T-1}P(s_{t+1}|s_t,a_t) : sts_tata_t가 주워졌을때, 다음 state가 st+1s_{t+1}이 될 확률들의 곱

π(atst)\pi(a_t|s_t) : 정책 π\pi를 따를때, sts_t에서 고른 액션이 ata_t일 확률

수식이 좀 어려운데, 일단 정책이 확률적이란것에 주목해보자. 정책이 확률적이라는 말은 곧 같은 정책으로도 만들어 질 수 있는 Trajectory가 여러개라는 것이다. 이 많은 trajectories 중 하나의 특정 trajectory (s0,a0,s1,a1,...)(s_0,a_0,s_1,a_1,...)가 나올 확률이 위 수식이다.

그렇다면 기대수익은 그 각각의 Trajectory와 거기서 산출된 cumulative reward, 즉 Return을 곱한 값을 적분한것이 된다. 문장으로 쓰니 굉장히 복잡한데, 일단 수식으로 쓰면 다음과 같다.

J(π)=τP(τπ)R(τ)=Eτπ[R(τ)](2)J(\pi) = \int_\tau P(\tau|\pi)R(\tau) =E_{\tau\sim\pi}[R(\tau)]-(2)

예를 들어보자.

앞이 보이지 않는 깜깜한 환경이 있다. 이 환경에서는 앞, 뒤, 좌, 우로 움직일 수 있고, 한걸음을 내딛을 때마다 reward를 1씩 받지만, 무작위로 설치된 함정에 빠지면 하나의 Trajectory가 종료된다.
Agent의 Policy는 네 방향으로 걸어갈 확률이 모두 같은 무작위 이동 정책이다. 이런 환경에서 Agent를 움직이게 하였더니 {앞,우,우,앞,뒤,좌}의 행동을 한 후 함정에 빠져 Trajectory가 종료됐다.

  • 이 환경은 한걸음 내딛으면 무조건 그 방향으로 나아간다
    P(st+1st,at)=1P(s_{t+1}|s_t,a_t) = 1
  • 이 환경의 시작점은 정해져있다
    ρ0(s0)=1\rho_0(s_0) = 1
  1. 위 예에서 Agent는 (네가지 행동을 할 확률이 0.25로 같은) 고정된 정책을 이용하고 있지만, 같은 정책으로 다시 Agent를 움직인다면 앞서 행동한것과는 다르게 행동할 것이다(엄밀히 말하면 아주 낮은 확률로 같은 수 있지만.) 이는 우리가 사용한 정책이 확률적 정책(Stochastic Policy)이기 때문이다.

  2. 여기서 {앞,우,우,앞,뒤,좌} 라는 특정한 trajectory가 나올 확률을 계산하는게 위 (1)번 식이다.

  • P(τπ)=ρ0(s0)t=0T1P(st+1st,at)π(atst)=11(0.25)6P(\tau|\pi)=\rho_0(s_0)\displaystyle\prod_{t=0}^{T-1}P(s_{t+1}|s_t,a_t)\pi(a_t|s_t)=1*1*(0.25)^6
  1. {앞,우,우,앞,뒤,좌} 라는 하나의 특정한 Trajectory에서 얻은 return 값은 6이다. 기댓값의 정의에 의해 다른 모든 Trajectories에 대하여 그 trajectories가 나올 확률과 각각의 return 값을 곱해준걸 모두 더해준다면, 이는 곧 Policy의 expected return값이라고 할 수 있을것이다. 이것이 위 (2)번 적분식의 의미인것이다(!)

그렇다면 결국 RL Problem의 궁극적인 목표는 다음과 같이 표현될 수 있다.

π=argmaxπJ(π)\pi^*=arg\displaystyle\max_\pi J(\pi)

여기서 π\pi^* 를 Optimum Policy 라고 부른다.

Value Function

특정 state(혹은 state-action pair)에서의 Value는 그 state에서 시작해서 끝까지 Policy대로 움직였을때의 기대수익(Expected Return)이다. Value Function은 RL 거의 모든 영역에서 쓰이는데, 대표적으로 크게 네가지 종류가 있다.

On-Policy Value Function Vπ(s)V^\pi(s)은 s에서 시작해서 끝까지 정책 π\pi로 움직였을때의 기대수익(Expected Return)이다.

Vπ(s)=Eτπ[R(τ)s0=s]V^\pi(s)=\displaystyle\Epsilon_{\tau\sim\pi}[R(\tau)|s_0=s]

On-Policy Action-Value Function Qπ(s,a)Q^\pi(s,a)은 s에서 (정책이 정하지 않았을 수도 있는) 액션 a를 취한 후, 끝까지 정책 π\pi로 움직였을때의 기대수익(Expected Return)이다.

Qπ(s,a)=Eτπ[R(τ)s0=s,a0=a]Q^\pi(s,a)=\displaystyle\Epsilon_{\tau\sim\pi}[R(\tau)|s_0=s, a_0=a]

Optimal Value Function V(s)V^*(s)은 s에서 시작해서 끝까지 최적정책(Optimal Policy)으로 움직였을때의 기대수익(Expected Return)이다.

V(s)=maxπEτπ[R(τ)s0=s]V^*(s)=\displaystyle\max_\pi\Epsilon_{\tau\sim\pi}[R(\tau)|s_0=s]

Optimal Action-Value Function Q(s,a)Q^*(s,a)은 s에서 (정책이 정하지 않았을 수도 있는) 액션 a를 취한 후, 끝까지 최적정책으로 움직였을때의 기대수익(Expected Return)이다.

Q(s,a)=maxπEτπ[R(τ)s0=s,a0=a]Q^*(s,a)=\displaystyle\max_\pi\Epsilon_{\tau\sim\pi}[R(\tau)|s_0=s, a_0=a]

Value Function과 Action-Value Function의 관계성

Vπ(s)=Eaπ[Qπ(s,a)](1)V^\pi(s) = \Epsilon_{a\sim\pi}[Q^\pi(s,a)]-(1)
V(s)=maxaQ(s,a)(2)V^*(s) = \displaystyle\max_aQ^*(s,a)-(2)

위 개념을 제대로 숙지했다면 두 수식은 따로 설명이 필요없이 V와 Q의 정의에 의해 자연스럽게 이해가 될것이다.

The Optimal Q-Function and the Optimal Action

Q(s,a)Q^*(s,a)a(s)a^*(s) 사이에는 중요한 관계가 있다. Q(s,a)Q^*(s,a) 의 정의는 상태 s에서 임의의 액션 a를 취한 후 Optimal Policy로 움직였을때의 기대수익이다. 그런데 상태 s에서도 Optimal Policy로 움직인다면, s에서의 reward값이 최대가 될것이고, Q(s,a)=r(s,a)+V(s+1)Q^*(s,a)=r(s,a)+V^*(s+1)이라고 표현이 가능하므로, 자연스레 Q(s,a)Q^*(s,a) 값도 최대가 될것이다. 따라서 다음과 같은 식이 성립한다.

a(s)=arg maxaQ(s,a)a^*(s)=\displaystyle\argmax_aQ^*(s,a)

Optimal Action은 반드시 한개 이상 존재한다. 즉, 여러개 일수도 있지만 없을 수는 없다.

Bellman Equations

위에 말한 네가지 Value Function 들은 모두 벨만방정식이라는 자기일관적(self-consistency)인 방정식을 따른다. 벨만 방정식의 기본 아이디어는 다음과 같다.

시작점의 Value는 그곳에 있으므로써 얻는 reward와 다음 state의 Value의 합과 같다.

그닥 어려운 개념은 아니고, 재귀함수를 생각하면 이해하기 용이하다.

On-policy function에서의 벨만 방정식은 다음과 같다.

Vπ(s)=Eaπ,sP[r(s,a)+γVπ(s)]V^\pi(s)=\Epsilon_{a\sim\pi, s'\sim P}[r(s,a)+\gamma V^\pi(s')]
Qπ(s,a)=EsP[r(s,a)+γEaπ[Qπ(s,a)]Q^\pi(s,a)=\Epsilon_{s'\sim P}[r(s,a)+\gamma\Epsilon_{a'\sim\pi} [Q^\pi(s',a')]

  • sPs'\sim P 는 s의 다음상태 s'이 Environment의 transition rule에 의해 샘플링 된다는 의미이다.

Optimal Value Function에서의 벨만 방정식은 다음과 같다.

V(s)=maxaEsP[r(s,a)+γV(s)]V^*(s)=\displaystyle\max_a\Epsilon_{s'\sim P}[r(s,a)+\gamma V^*(s')]
Q(s,a)=EsP[r(s,a)+γmaxaE[Q(s,a)]Q^*(s,a)=\Epsilon_{s'\sim P}[r(s,a)+\gamma\displaystyle\max_{a'}\Epsilon [Q^*(s',a')]

On-policy 와 Optimal 벨만 방정식의 가장 큰 차이점은 액션을 정할때 max\max의 유무이다. 이는 다시말해 Agent가 Optimal하게 움직이기 위해 action을 정할때는 반드시 Value값을 극대화 하는 방향으로 정해야 한다는 것이다. 솔직히 당연한 얘기 같은데 뭘 이리 장황하게 수식까지 써가며 설명해놓은건지는 잘 모르겠다(intro에서 밝혔듯이, 원문은 내가 쓴게 아니고 무려 Microsoft 산하에 OpenAi에서 쓴거임)

  • 벨만 방정식은 실제 알고리즘 코딩할때도 매우 매우 많이 나오므로 익숙해지길 추천한다

Advantage Functions

RL에서는 가끔(사실은 꽤 빈번하게) 어떤 액션이 '절대적으로 좋은가(absolute)' 보다는 '다른거 보다 얼마나 좋은가(relative)'에 초점을 맞춘다. 우리는 이러한 개념을 advantage function 이라고 표현한다.

Advantage Function Aπ(s,a)A^\pi(s,a) 는 state s에서 특정한 액션인 a를 뽑는게 정책 π\pi를 따라서 임의로 뽑는것 보다 얼마나 좋은지를 표현하는 용어이다. 수식으로 표현하자면 다음과 같다.

Aπ(s,a)=Qπ(s,a)Vπ(s)A^\pi(s,a)=Q^\pi(s,a)-V^\pi(s)

나는 이게 처음에 이해가 잘 안갔는데, 당시 했던 생각은 이랬다.

어떻게 Q(s,a)Q(s,a)V(s)V(s)보다 클수가 있지? Q(s,a)Q(s,a) 는 상태 s에서 특정한 a를 뽑았을때의 밸류이고, V(s)V(s)는 a를 포함한 다른 액션들을 뽑았을때까지 포괄하는 의미 아닌가?

언뜻 보면 맞는말 같은데, 당연히 틀렸다. 이러한 오해는 개념이 확실히 정립되지 않아서 생긴 것이었다.

두가지 액션을 선택할 수 있는 state s에서 정책 π\pi는 무작위선택을 한다고 해보자. 1번 액션을 선택했을때의 보상은 10이고 2번 액션을 선택했을때의 보상은 20이다.

여기서 Vπ(s)V^\pi(s)30+γVπ(s)30+\gamma V^\pi(s') 일까? 당연히 아니다. 단순히 10+2010+20을 하는게 아니라, π\pi가 각 액션을 고를 확률을 곱해줘야한다. 즉,

Vπ(s)=1012+2012+γVπ(s)=15+γVπ(s)V^\pi(s)=10*\frac{1}{2}+20*\frac{1}{2}+\gamma V^\pi(s')=15+\gamma V^\pi(s')

가 되는것이다. 이는 2번 액션만 고르는 Q(s,a2)Q(s,a_2)보다 값이 작다.

Advantage Function은 Policy Gradient에서 매우 중요한 개념이므로 추후 다시 다룰것이다.

Conclusion

이제 기본 개념정리는 어느정도 끝낸것 같다. 비록 대부분 아는 내용이었지만, 중간중간 까먹었던 내용이나 정확히 이해하지 못했던 내용들을 정리할 수 있어서 뜻깊은 시간이었다. 다음 포스트 부터는 실제로 어떤 알고리즘으로 RL Agent를 학습시키는지에 대해 알아보자~

profile
RL, 퀀트 투자 공부 정리

0개의 댓글