3. 벨만 방정식

3.0 벨만 방정식

주어진 정책 π\pi 의 상태별 밸류 vπ(s)v_\pi(s)를 구하는 것이 생각보다 어려운 일이다.

밸류 를 계산하는 방법은 "벨만 방정식을 이용해서 구한다." 나 다름이 없을 정도로 강화학습에서 중요한 수식이다.

이후 다이나믹 프로그래밍dynamic programming을 이용하여 벨만 방정식을 반복적으로 사용하여 임의로 초기화 되어 있던 값들이 조금씩 실제 밸류에 가까워지는 방식에 대해 다룰것이다.


재귀 함수

피보나치 수열이 대표적인 예이다.

  • 일반적인 함수로 표현
fib(n)=15((1+52)n(1+52)n)\mathrm{fib}(n) = \frac{1}{\sqrt{5}}\left(\left(\frac{1+\sqrt{5}}{2}\right)^n-\left(\frac{1+\sqrt{5}}{2}\right)^n \right)
  • 재귀 함수로 표현
fib(n)=fib(n1)+fib(n2)\mathrm{fib}(n) = \mathrm{fib}(n-1) + \mathrm{fib}(n-2)

현재 시점(T)(T) 다음 시점(T+1(T+1) 사이의 재귀적 관계를 이용해 정의하여 벨만 방정식을 사용한다.



3.1 벨만 기대 방정식

0 단계
vπ(st)=Eπ[rt+1+γvπ(st+1)]v_\pi(s_t) = \mathbb{E}_\pi[r_{t+1}+\gamma v_\pi(s_{t+1})] qπ(st,at)=Eπ[rt+1+γqπ(st+1,at+1)]q_\pi(s_t, a_t) = \mathbb{E}_\pi[r_{t+1}+\gamma q_\pi(s_{t+1},a_{t+1})]
1 단계
vπ(s)=aAπ(as)qπ(s,a)v_\pi(s) = \sum_{a \in A} \pi (a|s)q_\pi(s,a) qπ(s,a)=rsa+γsSPssavπ(s)q_\pi(s, a) = r^a_s + \gamma \sum_{s' \in S}P^a_{ss'}v_{\pi}(s')
2 단계
vπ(s)=aAπ(as)(rsa+γsSPssavπ(s))v_\pi(s) = \sum_{a \in A}\pi(a|s) \left(r^a_s + \gamma \sum_{s'\in S} P^a_{ss'}v_\pi(s') \right) qπ(s,a)=rsa+γsSPssaaAπ(as)qπ(s,a)q_\pi(s, a) = r^a_s + \gamma \sum_{s' \in S}P^a_{ss'} \sum_{a' \in A} \pi(a'|s')q_\pi(s', a')

0 단계

vπ(st)=Eπ[rt+1+γvπ(st+1)]v_\pi(s_t) = \mathbb{E}_\pi[r_{t+1}+\gamma v_\pi(s_{t+1})]
  • 위 식은 현 상태sts_{t} 의 밸류와 다음 상태 st+1s_{t+1}의 밸류와의 관계를 나타냄
  • vπv_\pi의 정의
상태 가치 함수 state value function 정의

=Eπ[rt+1+γrt+2+γ2rt+3+...]= \mathbb{E}_\pi[r_{t+1}+\gamma r_{t+2}+\gamma^2 r_{t+3}+...]

=Eπ[rt+1+γ(rt+2+γrt+3+...)]= \mathbb{E}_\pi[r_{t+1}+\gamma(r_{t+2}+\gamma r_{t+3}+...)]

=Eπ[rt+1+γGt+1]=\mathbb{E}_\pi[r_{t+1}+\gamma G_{t+1}]

=Eπ[rt+1+γvπ(st+1)]= \mathbb{E}_\pi[r_{t+1}+\gamma v_{\pi}(s_{t+1})]

π(a1st)=0.6,\pi(a_1|s_t)=0.6, π(a2st)=0.4\pi(a_2|s_t)=0.4

1 단계

  • 액션 밸류 qπ(s,a)q_\pi (s, a) 를 이용하여 상태 밸류 vπ(s)v_\pi(s)를 표현 하는 첫 번째 식.
  • vπ(s)v_\pi(s)를 이용하여 qπ(s,a)q_\pi (s, a)를 표현하는 두 번째 식.
1.액션밸류를 이용하여 상태밸류 계산하기
vπ(s)=aAπ(as)qπ(s,a)v_\pi(s) = \sum_{a \in A} \pi (a|s)q_\pi(s,a)
  • vπ(s)v_\pi(s) : s의 밸류
  • π(as)\pi(a|s) : s에서 a를 실행할 확률
  • qπ(s,a)q_\pi(s,a) : s에서 a를 실행하는 것의 밸류
2.
qπ(s,a)=rsa+γsSPssavπ(s)q_\pi(s, a) = r^a_s + \gamma \sum_{s' \in S}P^a_{ss'}v_{\pi}(s')
  • qπ(s,a)q_\pi(s, a) : s에서 a를 실행하는 것의 밸류
  • rsar_s^a : 즉시 얻는 보상
  • PssaP^a_{ss'} : s에서 a를 실행하면 s'에 도착할 확률
  • vπ(s)v_\pi(s') : s'의 밸류

2 단계

3.2 벨만 최적 방정식

최적 밸류와 최적 정책

v(s)=maxπ vπ(s)v_*(s) = \underset{\pi}{\mathtt{max}} \ v_\pi(s) q(s,a)=maxπ qπ(s,a)q_*(s,a) = \underset{\pi}{\mathtt{max}} \ q_\pi(s, a) π\pi_*
  • 최적의 정책 : π\pi_*
  • 최적의 밸류 : v(s)=vπ(s)v_*(s)=v_{\pi_*}(s) (π\pi_*를 따랐을 때의 밸류)
  • 최적의 액션 밸류 : q(s,a)=qπ(s,a)q_*(s,a)=q_{\pi_*}(s,a) (π\pi_*를 따랐을 때의 액션 밸류)

벨만 최적 방정식

0단계

v(st)=maxaE[rt+1+γv(st+1)]v_*(s_t)=\underset{a}{\mathtt{max}}\mathbb{E}[r_{t+1}+\gamma v_*(s_{t+1})] q(st,at)=E[rt+1+γ maxa q(st+1,a)]q_*(s_t,a_t)=\mathbb{E}[r_{t+1}+\gamma \ \underset{a'}{\mathtt{max}} \ q_*(s_{t+1}, a')]

1단계

v(s)=maxa q(s,a)v_*(s) = \underset{a}{\mathtt{max}} \ q_*(s, a) q(s,a)=rsa+γsSPssav(s)q_*(s,a) = r_s^a+\gamma \sum_{s' \in S}P^a_{ss'}v_*(s')

2단계

v(s)=maxa[rsa+γsSPssav(s)]v_*(s) = \underset{a}{\mathtt{max}} \bigg[ r^a_s+ \gamma \sum_{s'\in S}P^a_{ss'} v_*(s') \bigg] q(s,a)=rsa+γsSPssamaxa q)(s,a)q_*(s,a)=r_s^a+\gamma \sum_{s'\in S}P_{ss'}^a \underset{a'}{\mathtt{max}}\ q_*)(s',a')

벨만 '최적' 방정식에서는 π\pi정책 에 의한 확률적 요소가 사라진다. 최대값 연산자를 통해 제일 좋은 액션을 선택하기에...