본문 바로가기

Data Science/강화학습

[강화학습] 강화학습의 기반, 마르코프 결정 과정(Markov Decision Process)

반응형

🔊 해당 포스팅은 딥러닝 파이토치 교과서 서적의 강화학습 챕터 내용을 기반으로 개인적인 학습 및 정리를 위해 작성되었습니다. 하단에 등장하는 모든 자료들은 필자가 직접 재구성하였음을 알립니다.

 

이번 포스팅에서는 강화학습의 개념이 무엇인지 간단히 알아보고, 강화학습의 기반이 되는 마르코프 결정 과정(이하, MDP)에 대해 알아보도록 하자. 

 

$\pi$는 강화학습에서 행동 확률 분포인 정책(policy)을 의미한다


1. 강화학습의 5요소에 대해 알아보자

먼저 강화학습이란, 어떤 환경에서 에이전트가 어떤 행동을 했을 때, 그것이 잘한 행동인지 잘못된 행동인지를 판단하고 보상(또는 벌칙)을 주는 과정을 반복해서 에이전트 스스로 학습하게 하는 분야를 의미한다. 그래서 강화학습에서는 환경을 의미하는 '환경(Environment)' 이라는 것과 '에이전트(Agent)' 라는 구성요소를 사용한다. 여기서 환경이라 함은 에이전트가 다양한 행동을 해보고, 그 행동에 따른 결과를 관측할 수 있는 일종의 시뮬레이터를 의미한다. 그리고 에이전트는 환경에서 행동을 하는 주체가 된다. 단적인 예로, 벽돌깨기 게임을 한다고 치면 벽돌깨기 게임이라는 것이 환경이 되고, 공을 튀기는 막대 바(정확히 말하면 사람이 조절해서 움직이지는 것이므로 사람이라고 할 수 있음)가 에이전트가 된다.

 

고전게임 벽돌 깨기를 아는가..?

 

여기서 강화학습의 목표는 에이전트를 학습시키는 것이다. 더 구체적으로 말해서, 에이전트는 환경 내에 존재하는 다양한 상태(state)에서 다양한 행동을 취하게 되면서 학습해 나간다. 여기서 에이전트가 취한 행동에 대한 응답으로 양(+), 음(-), 또는 0의 보상을 돌려받는다. 그래서 강화학습을 구성하는 요소는 총 5가지로 에이전트, 환경, 상태, 액션, 보상이 된다. 이 5가지에 대한 관계도를 도식화해보면 아래와 같다.

 

강화학습을 구성하는 5개 요소 간의 관계

 

위 5개 요소 중 위에서 소개하지 않은 것인 상태(State)와 액션(Action)에 대해 간략히 알아보자. 

 

먼저 상태는 환경에 놓여 있는 Agent의 (관찰 가능한) 상태들의 집합을 의미한다. 다시 말해, 에이전트의 현재 상황을 의미한다. 에이전트의 상황은 시간 $t$에 따라 달라지게 된다. 그래서 환경에 놓여있을 수 있는 즉, 에이전트가 가질 수 있는 모든 상태의 집합을 $S$라고 할 때, 시간 $t$일 때의 에이전트 상태 $s$는 다음과 같은 수학 수식으로 표현해줄 수 있다.

$$S_t = s \ \ \left\{ s \in S \right\}$$

다음은 행동이다. 행동은 에이전트가 특정 상황에서 할 수 있는 가능한 행동을 의미한다. 에이전트가 할 수 있는 행동의 집합을 $A$라고 할 때, 에이전트가 시간 $t$일 때 특정 행동 $a$를 하는 것을 수학 수식으로 표현하면 다음과 같다.

$$A_t = a \ \ \left\{ a \in A \right\}$$

나머지 하나 요소인 보상은 지금 목차에서는 알아보지 않는다. 앞으로 등장할 내용들을 살펴보면서 알아보도록 하자. 그런데 포스팅 제목에 써있다 시피 강화학습의 문제들은 마르코프 결정 과정(MDP)에 '학습'이라는 요소를 추가한 것이라고 할 수 있다. 또 이 마르코프 결정 과정은 또 마르코프 프로세스(Markov Process)에 기반한다. 따라서 우리는 강화학습에 대해 알기 전에 이 마르코프 결정 과정과 마르코프 프로세스에 대해 먼저 학습해야 한다.

2. 미래는 현재만이 결정한다? 마르코프 프로세스(MP)

마르코프 프로세스(=마르코프 체인)란 어떤 상태가 일정한 시간 간격으로 변하고, 다음 상태는 현재 상태에만 의존하여 확률적으로 변화하는 것을 의미한다. 다시 말해, 다음 상태를 결정하는 것은 현재 상태만 영향을 미치고, 현재 상태의 이전까지의 히스토리들은 영향을 미치지 않는다라는 것이다. 

 

마르코프 프로세스의 가정사항

 

마르코프 프로세스에서는 과거 상태와 현재 상태($S_t$)가 주어졌을 때, 미래 상태($S_{t+1}$)는 과거 상태와는 독립적으로 현재 상태로만 결정된다는 것을 의미한다. 이 말은 곧, 과거와 현재 상태를 모두 고려했을 때 미래 상태가 나타날 확률과 현재 상태만 고려했을 때 미래 상태가 나타날 확률이 동일함을 의미한다. 확률 수식으로 표현하면 아래와 같다.

$$P(S_{t+1} | S_t) = P(S_{t+1} | S_1, \cdots , S_t)$$

결국, 마르코프 프로세스는 시간($t$)에 따른 상태 변화를 나타내고, 이 '상태의 변화 또는 상태의 이동'을 바로 전이(transition)이라고 부른다. 마르코프 프로세스에서는 이러한 상태 간에 변화하는 것을 확률로 표현하게 되는데, 이를 상태 전이 확률(state transition probability) 이라고 부른다. 시간 $t$에서의 상태를 $s$ 라고 하고, 시간 $t+1$에서의 상태를 $s'$ 이라고 할 때, 상태 $s$에서 $s'$로의 상태 전이 확률을 수식으로 나타내면 아래와 같다. 아래 수식에서 $P_{ss'}$ 이라는 기호는 상태 전이 확률을 나타낸 기호이다.

$$P(S_{t+1} = s' | S_t = s) = P_{ss'}$$

위 수식을 보면 약간 익숙하다고 생각할 수 있다. 바로 사건 $A$가 발생했을 때, 사건 $B$가 발생할 확률을 의미하는 조건부 확률 $P(B|A)$를 의미한다. 

 

마르코프 프로세스를 간단한 예시로 하나 들어보자. 아래 그림을 보자.

 

마르코프 프로세스 예시

 

네모칸이 각 상태를 의미한다. 그리고 화살표는 상태 전이를 의미하고, 화살표 중간에 적혀있는 숫자가 상태 전이 확률을 의미한다. 예를 하나로 들어보면, [진찰 → 대기] 전이 확률은 0.6이다. [진찰 → 진찰] 전이 확률은 0.4이다. 이렇게 다른 상태들도 동일하게 해석하면 된다. 참고로 [취침] 상태는 종료 상태이기 때문에 [취침] 에서 다른 상태로 전이하는 경우는 없으므로 [취침] 상태 자체가 1.0을 갖는다. 종료 상태인 [취침] 상태를 제외한 모든 상태들은 다른 상태로 전이하는 확률의 총합이 모두 1이다. 예를 들어, [웹서핑] 상태에서 다른 상태로 전이될 확률들은 [웹서핑 → 대기] 로 0.1, [웹서핑 → 독서]로 0.3, [웹서핑 → 취침]로 0.5, [웹서핑 → 웹서핑]로 0.2이다. 0.1 + 0.3 + 0.5 + 0.1 하게 되면 1이다.

 

위와 같은 도식화를 행렬로도 표현할 수 있는데, 이를 상태 전이 확률 행렬(state transition probability matrix)이라고 부른다. 위 도식화 예시를 행렬로 그대로 옮겨보면 아래와 같다.

 

상태 전이 확률 행렬

 

그런데, 여기서 한 가지 주의할 점이 있다. 지금까지 마르코프 프로세스를 설명하면서 미래 상태($S_{t+1}$)는 무조건 현재 상태($S_t$)에만 의존적이라고 해서, 미래 상태를 결정하는 것은 현재 상태가 '유일하다' 라는 것은 아니다. 위 행렬을 보아도 알겠지만 미래 상태를 결정하는 데 있어서 현재 상태가 높은 확률로 그렇다는 것이지, 다른 확률변수가 반드시 개입한다는 것이다. 위 행렬을 예시로 보면 [독서 → 취침]으로 상태 전이 확률을 보면 0.7이다. 즉, 다음 상태인 취침 상태를 결정하는 데 있어서 현재 상태인 독서가 70% 확률이며 나머지 30%의 다른 확률변수(여기서는 웹서핑)가 개입한다는 것이다.

3. 상태에 대한 보상을 제공하자 : 마르코프 보상 프로세스(MRP)

다음으로 알아볼 개념은 마르코프 보상 프로세스이다. 마르코프 보상 프로세스는 마르코프 프로세스에 '보상 시스템'을 추가한 것이다. 여기서 보상이라 함은 상태가 이동되면서 부여되는 보상을 의미한다. 즉,  현재 상태에서 미래 상태로 이동했을 때, 이동한 미래 상태의 좋고 나쁨에 따라 현재 상태에 부여되는 보상이다. 그리고 각 상태의 보상 총합을 리턴(return)이라고 한다.

 

미래 상태의 좋고 나쁨에 따라 이전 상태에 부여되는 보상!

 

결국, 임의의 상태의 정확한 가치를 구하기 위해서는 어느 시점에서 보상을 받을지가 중요하게 된다. 특정 상태에 빨리 도달해서 즉시 보상을 받을지, 아니면 좀 더 나중에 도달해서 보상을 받을지에 대한 가치 판단이 필요하다는 것이다. 예를 하나 들어보자.

 

현재 내가 친구에게 100만원이라는 돈을 빌려주었다. 그리고 연이자를 2%라고 해보자. 그러면 현재 친구에게 빌려준 100만원이라는 돈의 가치는 1년이 지난 뒤 연이자 2%가 붙은 102만원이라는 돈의 가치보다 작을까? 단순히 숫자의 비교($100 < 102$)로만 보면 100만원이 가치가 더 작다고 생각할 수 있지만, 이자를 붙이는 이유는 현재 돈의 가치가 미래에는 102만원 만큼의 가치가 될 것이다라는 것이기 때문에 결국 102만원의 가치는 1년이 지난 뒤에야 1년 전의 100만원 가치와 동일해진다는 것이다. 즉, 미래 가치(102만원)를 현재 시점에서 본다면 현재 가치(100만원)보다 가치가 적다는 것이다.

 

위 예시에서 든 '이자율'이 마르코프 보상 시스템에서 수식으로 표현한 것이 바로 할인율(discounting factor, $\gamma$)이다. 할인율은 보통 0 과 1사이의 값이며 미래 가치를 현재 시점에서의 가치로 변환하는 역할을 하는 셈이다.

 

따라서 할인율이 적용된 보상 즉, 리턴($G_t$)수식은 아래처럼 표현할 수 있다.

$$G_t = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \cdots = \sum_{k=0}^{\infty} {\gamma^k r_{t+k+1}}$$

위 수식을 보면 $k=0$ 일 때, 다시 말해 $t+1$일 때의 보상은 할인율이 적용되지 않은 $r_{t+1}$이 되며 $k=1$일 때부터 즉, $t+2$일 때부터 보상에 할인율이 적용되기 시작한다. 위 수식을 통해 또 알 수 있는 부분은 만약 할인율($\gamma$)이 0에 가까워 진다면 미래에 받게 될 보상들이 모두 0이되므로 바로 다음의 보상($r_{t+1}$)만 선택하는 근시안적인 행동을 하게 된다. 반대로 할인율($\gamma$)을 1과 가까워지게 할수록 미래 보상이 커지므로 원시안적인 행동을 하게 된다.

 

추가적으로, 가치 함수(value function)에 대한 개념에 대해서도 이해해야 하는데, 여기서 '가치'라 함은 현재 상태가 $s$일 때, 현재 상태에서 앞으로 발생할 것으로 기대되는($E$) 모든 보상의 합을 의미한다. 이를 수학 수식으로 표현하면 아래와 같다.

$$v(s) = E[G_t | S_t = s]$$

그래서 가치 함수는 현재 시점에서 미래에 받을 것으로 기대되는 모든 보상들을 측정한다. 이 가치 함수를 최대한 정확하게 찾는 것이 목표이고 이 가치 함수 값(=미래 보상 또는 미래 가치)이 가장 클 것으로 예상되는 결정을 하고 행동을 하는 것이 강화학습의 목표인 셈이다.

 

위에서 든 마르코프 프로세스 예시에 대해 할인율과 가치를 적용한 예시를 살펴보자.

 

 

위 그림에서 각 상태마다 괄호에 숫자가 적혀있다. 이 숫자들은 할인율($\gamma$)이 0일 때를 가정한 가치이다. 예로 하나 들어보자. [웹서핑]의 상태 밑에에는 -24라는 값이 적혀있다. 이는 위에서 살펴본 수식에서 $k = 0$ 일 때 즉, $t+1$ 시점일 때, [웹서핑] 이라는 상태에서 미래에 기대되는 보상의 합 '가치'를 의미한다.

$$G_t = r_{t+1}, \ where \ s = 웹서핑$$

그러면 위 가정사항을 머릿속에 둔 채, [독서] 와 [대기] 상태에 대한 가치 값을 계산해보도록 하자. 할인율인 $\gamma$는 역시 0이라고 가정하자.

 

우선 [독서]에서의 가치 값은 10이기 때문에 $r_{t+1}$은 10이 된다. 그리고 [독서] 상태에서 2가지 상태로 이동이 가능한데, 하나는 [웹서핑] 이고 하나는 [취침]이다. 먼저 [독서→웹서핑]으로 이동 할 때의 보상은 [웹서핑]의 가치와 [독서→웹서핑]으로 전이확률을 곱해준다. 그리고 [독서→취침]으로 이동 할 때의 보상은 [취침]의 가치와 [독서→취침]으로 전이확률을 곱해준다. 이 2개의 보상 값을 더해준 뒤, 할인율($\gamma$)을 곱해주도록 한다. 숫자 수식으로 나타내면 아래와 같다.

 

  • [독서]의 가치 = 10 + 0 * [(-24 * 0.3) + (0 * 0.7)] = 10

할인율이 0이 되므로, 미래의 보상을 전혀 고려하지 않기 때문에 가치의 값이 매우 커져 근시안적인 행동을 선택할 것이다. 그러면 반대로 할인율이 1인 경우에는 어떻게 변할까?

 

  • [독서]의 가치 = 10 + 1 * [(-24 * 0.3) + (0 * 0.7)] = 2.8

가치의 값이 2.8로 확 낮아졌다. 이는 미래의 보상을 고려하기 때문에 가치의 값이 작아져 원시안적인 행동을 선택할 것임을 의미한다.

 

참고로 보상과 가치라는 용어의 의미가 헷갈릴 수도 있다. 특정 상태 $s$에 있을 때, 미래에 받을 수 있는 보상의 합에 대한 기댓값을 가치라고 하므로, 가치는 '보상의 합'이 된다.

4. 정해진 대로 행동해, 그러면 최대 보상이야! : 마르코프 결정 프로세스(MDP)

다음은 마르코프 결정 과정이다. 마르코프 결정 과정은 직전에 배운 마르코프 보상 프로세스에서 행동이 추가된 확률 모델이다. MDP의 목표는 각 상태마다의 전체적인 보상을 최대화하는 행동이 무엇인지 결정하는 것이다. 이 때, 각 상태마다 행동 확률 분포 즉, 어떤 행동이 선택될 확률을 표현하는 함수를 정책(policy, $\pi$)이라고 한다. 수학 수식으로 표현하면 다음과 같다.

$$policy = \pi (a | s) = P(A_t = a | S_t = s)$$

MDP가 특정 $\pi$를 따를 때, 상태 $s$에서 $s'$로 이동할 확률은 다음 수식으로 계산된다.

 

 

이동할 확률을 살펴보았으니, 이번엔 보상에 대한 수식을 살펴볼 차례다. 상태 $s$에서 얻을 수 있는 보상($R$)은 다음과 같다.

 

 

그리고 MDP에서도 MRP 때와 마찬가지로 가치 함수에 대해서도 이해를 해야 한다. 다시 리마인드 해보자. '가치' 라는 것은 특정 상태에 있을 때 앞으로 미래에 기대되는 보상의 합을 의미하고, 이를 계산할 수 있도록 표현한 함수식이 가치 함수이다.

 

MDP에서는 MRP 와는 다르게 2개의 가치 함수에 대해 알아야 한다. 첫번째로는 에이전트의 특정 상태에서의 가치를 표현하는 상태-가치(state-value) 함수, 두번째로는 에이전트의 특정 상태에서 어떤 행동을 취했을 때의 가치를 표현하는 행동-가치(action-value) 함수이다. MDP는 이 2가지의 가치함수 즉, 특정 상태에서의 가치와 특정 상태에서 특정 행동을 했을 때의 가치, 2가지 요소를 결합해서 최종적인 가치를 계산하게 된다.

4-1. 더 많은 보상을 받으려면 어떤 상태여야 해? : 상태-가치 함수

상태-가치 함수는 MRP 때의 가치 함수와 동일하다. 즉, 특정 상태 $s$에서 얻을 수 있는 보상(리턴)의 기댓값이다. 단, MRP와의 차이점이 존재하는데, 그것은 MDP에서는 주어진 정책($\pi$)에 따라 행동을 한 뒤 다음 상태로 이동한다는 점이다. MDP에서의 상태-가치 함수 수식은 다음과 같다. 수식에 대한 의미를 하나씩 잘 설명해놓았으니 읽어보도록 하자. 참고로 아래 수식에서 $E$로 기댓값을 표현한 것은 행동을 어느 방향으로 하게 될지 모르기 때문에 '기댓값'으로 정의한 것이다.

 

 

위 수식에서 주목해야 할 부분은 보라색 부분이다. 현재 시점의 상태-가치 함수는 바로 다음의 미래 시점의 상태-가치 함수로 표현된다는 것! 이것이 의미하는 바는 어떠한 상태에서의 보상이던 간에  (무수히 많겠지만)미래에 언젠가는 끝이 나는 종료 상태로부터 역행하면서 계산을 할 수 있다는 것이다. 위 수식에서 $\gamma G_{t+1}$이 $\gamma v_{\pi}(S_{t+1})$으로 어떻게 된 건지는 아래에서 살펴보도록 하자.

4-2. 더 많은 보상을 받으려면 어떤 상태에서 어떤 행동을 해야 해? : 행동-가치 함수

행동-가치 함수는 특정 상태 $s$에서 어떠한 행동 $a$를 취했을 때 얻을 수 있는 보상(리턴)의 기댓값을 의미한다. 수식으로 표현하면 다음과 같다.

 

 

위 수식은 [목차 4-1]에서 살펴본 수식의 의미와 거의 유사하다. 단, 주어진 정책(행동 확률 분포, $\pi$)에서의 특정 행동($A_t = a$)이라는 것이 취해졌다는 것만이 차이점이다.

 

아직 상태-가치 함수, 행동-가치 함수에 대해서 명확히 이해가 되지 않을 수 있다. 이 두개를 좀 더 명확히 와닿게 이해하기 위해서는 벨만 기대 방정식에 대해 알아야 한다. 이 함수를 알아보고, 상태-가치 함수, 행동-가치 함수를 보다 명확하게 이해해보도록 하자.

4-3. 상태-가치 함수, 행동-가치 함수를 유도해내는 Key! : 벨만 기대 방정식

사실 벨만 기대 방정식은 벨만 방정식의 종류 중 하나이다. 또 다른 자매품으로는 벨만 최적 방정식이 있다. 벨만 최적 방정식은 아래에서 알아보기로 하고, 여기서는 상태-가치 함수와 행동-가치 함수 간의 관계를 정의하는 벨만 기대 방정식에 대해 알아보도록 하자.

 

앞에서 [4-1. 상태-가치 함수] 목차 내용을 공부하면서, 상태-가치 함수인 $v_{\pi}(s)$는 특정 상태에서 앞으로 펼쳐질 미래에 기대되는 보상의 합인 '가치'를 의미한다고 했다. 그런데 이 때, 특정 상태에서 다음 상태로 이동할 때는 주어진 정책($\pi$, 행동 확률 분포)에 따라 이동한다고 했다. 벨만 기대 방정식은 이렇게 주어진 정책($\pi$)을 고려하여 다음 상태로 이동하는 것을 나타낸다.

 

벨만 기대 방정식을 활용해서 상태-가치 함수와 행동-가치 함수를 기댓값 $E$으로 표현할 수가 있다. 즉, 상태-가치 함수와 행동-가치 함수 간의 관계를 설명할 때 벨만 기대 방정식을 활용한다는 것이다. 벨만 기대 방정식을 알아보기 전에, 위에서 간략하게 살펴본 상태-가치 함수의 도출 과정을 먼저 살펴볼 필요가 있다. 상태-가치 함수에 대한 수식을 다시 보면 아래와 같다.

 

상태-가치 함수를 도출하는 식

 

우선 첫번째 줄에서 보이는 $G_t$는 [목차 3.MRP]에서 배운 것을 적용해서 $G_t = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \cdots = \sum_{k=0}^{\infty} {\gamma^k r_{t+k+1}}$ 라는 것을 알 수 있기 때문에 두번째 줄로 변환되는 것을 알 수 있다. 그리고 $k$를 0부터 무한대까지 풀어쓴 표현이 세번째 줄이다. 그리고 네번째 줄로 가면서 $\gamma$로 한번 묶어주게 되면 네번째 줄의 파란색 네모칸 부분은 다시 $G_{t+1}$로 재변환이 가능한 것을 알 수 있다. 잘 모르겠다면 방금 $G_t$가 어떠한 수식으로 풀어졌는지 살펴보자. 그리고 마지막 다섯번째 줄로 가면서 $G_{t+1}$을 상태 $S$와 정책 $\pi$로 이루어진 $v_{\pi}(S_{t+1})$로 변하는 것을 알 수 있다. 왜냐하면 첫 번째 줄에 보면 우리는 $v_{\pi}(s_t) = G_t$로 정의했었다. 따라서 반대로도 $G_t = v_{\pi}(s_t)$이 성립하기 때문에 자연스레 $G_{t+1} = v_{\pi}(S_{t+1})$로 변화하게 된다. 이러한 과정이 바로 상태-가치 함수의 도출 과정이다.

 

결국 위 도출과정으로부터 우리가 주목해야 할 부분은 (위의 상태-가치 함수 설명에서도 언급했지만)현재 시점의 상태-가치($v_{\pi}(s_t)$)는 현재 다음($t+1$) 상태로 이동했을 때 받는 즉각적인 보상($R_{t+1}$)과 다음 시점의 상태-가치($v_{\pi}(S_{t+1})$)로 표현할 수 있다는 것이다. 이는 곧 재귀적인 형태로 미래의 상태-가치들이 현재의 상태-가치에 영향을 주고 있고, 이 말은 바꿔 말하면 현재의 상태-가치는 (언젠가는 종료될 먼 끝의) 미래의 마지막 상태에서 현재 상태로 역행하면서 상태-가치를 재귀적으로 계산할 수가 있다는 것이다.

 

이것이 바로 벨만 기대 방정식이다. 이제 이 과정을 기반으로 상태-가치 함수를 벨만 방정식으로 표현해보도록 하자. 방금 수식으로 살펴본 상태-가치 함수 수식을 다시 가져와보자.

 

상태-가치 함수 도출 유도식

 

위 수식의 마지막줄을 보자. 바로 다음(t+1) 상태로 이동했을 때의 즉각적으로 얻는 보상인 $R_{t+1}$ 과 다음 상태에서의 가치를 의미하는 $\gamma G_{t+1}$을 하나의 덩어리로, 다른 하나의 덩어리로 기댓값$E$를 분리해서 살펴보자.

 

먼저 기댓값을 이해하기 쉽게 풀어서 이야기하면 기댓값이란 것은 현재 상태($s_t$)에서 주어진 정책($\pi$)에 따른다고 했을 때, 수행할 수 있는 각각의 행동들($\pi(a|s_t)$)과 각 행동이 발생할 확률들($p(s',r|s,a)$)을 곱한 것이다. 다시 말해, 현재 기대되는 결과들(행동들)에다가 그 결과들(행동들)이 발생학 확률로 가중치가 곱해진 것이다.

 

이제 나머지 덩어리인 $R_{t+1}$와 $\gamma G_{t+1}$을 보자. $R_{t+1}$는 간단하다. 말 그대로 다음(t+1) 상태로 이동했을 때의 즉각적으로 얻는 보상을 의미하고 더 확장해서 해석할 여지가 없고 이게 끝이다. 중요한 것은 다음 상태에서의 가치를 의미하는 $\gamma G_{t+1}$이다. 좀 더 구체적으로 말해서, 현재가 $t$라면  $\gamma G_{t+1}$라는 것은 더 뒤의 미래($t+1$ 이후...)에 일어날 보상들에 대해 할인율($\gamma$)가 곱해진 것이다. 그렇다면 이 $\gamma G_{t+1}$도 결국 $G_t$를 기댓값으로 풀어쓴 것처럼 기댓값으로 풀어쓸 수가 있다.(아래 수식의 보라색 칸들) 다시 말해, $\gamma G_{t+1}$도 해석하자면 $t+1$ 이후 시점의 미래에 일어날 모든 일들(행동들, 행동들이 발생할 확률들)에 대한 평균치와 같이 해석할 수 있다. $\gamma G_{t+1}$도 기댓값으로 풀어쓰게 되면 아래처럼 수식이 전개된다.

 

현재 상태의 가치는 현재 보상, 미래 상태의 가치, 기댓값으로 표현이 가능하다

 

그리고 위 수식에서 결국 $\gamma E_{\pi}[G_{t+1}|S_{t+1}=s']$ 라는 기댓값은 다음($t+1$) 상태인 $s'$ 상태에서의 상태-가치 함수가 되기 때문에 아래처럼 $v_{\pi}(s')$로 표한할수 있게 된다.

 

1,2 번 수식을 상태-가치 함수의 벨만 방정식이라고 표현한다

 

위 수식에서 갑작스레 $q_{\pi}(s,a)$ 라는 수식이 등장했다. 이 수식은 밑에서 자세히 배울 '행동-가치 함수'이다. 바로 상태 $s$에서 행동 $a$를 취했을 때, 그 $a$라는 행동에 대한 가치를 의미하는데, 이는 2가지 요소로 구성되어 있다. 첫번재로는 상태 $s$에서 행동 $a$를 했을 때의 즉각적으로 받는 보상, 두번째로 (수행한 행동 $a$로 인해서 이동한) 다음 상태의 가치 함수이다. 그런데 두번째를 계산할 때 추가해주어야 할 것이 있다. 다음 상태의 가치 함수($v_{\pi}(s')$)는 다음($t+1$) 시점에서의 가치 함수라는 뜻이므로 할인율($\gamma$)와 현재($t$) 상태인 $s$에서 상태 $s'$으로 전이할 확률도 같이 적용해주어야 한다. 따라서 이 2가지 요소가 적용된 $q_{\pi}(s,a)$ 식을 정의하면 아래와 같아진다.

 

행동-가치 함수는 즉각보상, 할인율, 다음상태의 가치함수로 표현된다

 

위 수식을 직전에 보았던 ❷번 수식에 대입해보면 상태-가치함수는 아래처럼 최종적으로 전개된다.

 

행동-가치 함수를 정의함으로써 상태-가치 함수를 재정의할 수 있어졌다

 

결국, 상태-가치 함수는 행동-가치함수로 풀어쓸 수 있으며, 그 행동-가치 함수는 또 다른 상태-가치 함수로 풀어쓸 수 있게 된다. 

 

이제 다음으로 행동-가치 함수를 벨만 방정식으로 표현해보도록 하자. 먼저 행동-가치의 함수 수식을 정리하면 아래와 같다.

 

행동-가치 함수의 수식

 

주목할 부분은 정책 $\pi$ 기호가 사라지면서 다음 시점($t+1$) 의 상태($s'$)일 때 $a'$라는 행동을 했다라는 조건이 추가된 점이다. 그리고 상태-가치 함수를 벨만 방정식으로 표현하는 부분에서 $R_{s}^{a} = E_{\pi}[R_{t+1}|S_t=s,A_t=a]$ 라는 것과 $P_{ss'}^{a} = P(s'|s,a) = P[S_{t+1} = s' | S_t = s, A_t = a]$라는 것을 배웠으므로 이것을 이용해서 $q_{\pi}(s,a)$식을 재정의하면 아래처럼 된다.

$$q_{\pi}(s,a) = R_{s}^{a}+\gamma \sum_{s' \in S} P_{ss'}^{a}v_{\pi}(s')$$

그런데 위처럼 행동-가치 함수를 정의하니 $v_{\pi}(s')$ 라는 $s'$ 상태에서의 상태-가치 함수가 또 튀어나왔다. 고로 이 상태-가치함수를 또 다른 행동-가치 함수로 풀어낼 수 있게 된다. 아래처럼 말이다.

$$q_{\pi}(s,a) = R_{s}^{a}+\gamma \sum_{s' \in S} P_{ss'}^{a}\sum_{a' \in A}\pi(a'|s')q_{\pi}(s',a')$$

이것도 마찬가지로 $q_{\pi}(s',a')$ 라는 행동-가치 함수를 (미래의)상태-가치 함수로 풀어내게 되고 이렇게 계속 재귀적으로 풀어주는 방식으로 계산하게 된다.

 

따라서 정리하게 되면 현재 시점의 상태-가치 함수는 다음 상태의 상태-가치 함수로 계산할 수 있게 되는데, 이 때 다음 상태의 상태-가치 함수는 할인율과 현재 상태의 즉각 보상을 활용해서 현재 상태의 행동-가치 함수를 계산할 수 있게 된다. 그리고 이 현재 상태의 행동-가치 함수는 다음 상태의 행동-가치 함수를 이용해서 계산할 수 있다. 이렇게 텍스트로 작성된 관계만 보면 이해가 잘 안될 것이다. 이 관계를 도식화하해보면 아래와 같다.

 

상태-가치 함수와 행동-가치 함수가 계속 재귀적으로 계산된다

 

그래서 정리하자면, 현재 상태의 '상태-가치 함수'는 다음에 올 상태의 '행동-가치 함수'의 정책 기반 가중 평균이 된다. 그리고 현재 상태의 '행동-가치 함수'는 다음에 올 상태의 '상태-가치 함수' 와 다음 상태로 갔을 때 받는 즉각 보상, 그리고 할인율 이 세가지의 결합 확룰의 가중 평균으로 이해하면 된다. 

 

이제 지금까지 배운 벨만 기대 방정식을 좀 더 쉽게 이해하기 위해서 책에서 소개하는 강화학습 과정으로 살펴보면 다음과 같다. 

 

  1. 최초에 에이전트가 접하는 상태 $s$와 행동 $a$를 랜덤한 값으로 설정
  2. 환경과 상호 작용하면서 얻은 보상과 상태에 대한 정보를 이용해 어떤 상태에서 어떤 행동을 취하는 것이 좋은지 판단을 하게 됨. 그런데 이 판단을 하는 기준을 '상태-가치 함수값' 와 '행동-가치 함수값'을 기준으로 판단을 한다.(머신러닝 분야에서 마치 Loss Function과 같은 셈)
  3. 2번 단계에서 구한 2개의 함수값을 최대화하기 위해 벨만 기대 방정식을 이용해서 점점 높은 보상을 얻을 수 있는 상태와 행동을 찾게 된다.(머신러닝 분야에서 벨만 기대 방정식이 SGD와 같은 Optimizer 역할을 하는 셈
  4. 2~3번의 과정을 계속 반복하면서 최대 보상을 갖는 즉, 2개의 함수 값이 최대화되도록 하는 정책(행동 확률 분포)을 찾는다.

결국, 4번의 과정까지 끝나면 우리는 최대 보상을 갖는 정책 즉, 행동 확률 분포를 찾게 되는 것이고 이 최적화된 정책이 바로 벨만 최적 방정식이라고 한다.

4-4. 최대의 보상을 얻도록 하는 정책 : 벨만 최적 방정식

벨반 최적 방정식은 대단한 것이 아닌 강화학습을 통해서 찾게된 최적화된 정책($\pi$)을 의미한다. 여기서 헷갈리지 말아야 할 것은 강화학습의 목표가 최적의 '상태-가치 함수' 와 '행동-가치 함수'를 찾는 것이 아닌 최대의 보상을 보장하는 최적화된 정책을 찾는 것이다. 결국, 이 최적화된 정책을 찾아야 한다는 목표를 이루기 위해 2가지의 가치 함수를 이용해서 가치 함수 값을 maximize 하도록 하는 것이다. 그리고 이 가치 함수 값을 maximize 하도록 하기 위해서는 벨만 기대 방정식을 이용하는 것! 각 역할을 우리가 익숙한 머신러닝 용어에 빗대어 보면 다음과 같다.

 

  • 최적화된 정책을 찾다 = 최적화된 파라미터 값을 찾다
  • 가치 함수 값이 maximize 해야 한다 = Loss Function 값이 minimize 해야 한다
  •  벨만 기대 방정식을 이용해 최대 보상을 얻는 상태와 행동을 찾는다 = SGD, Adam과 같은 Optimizer로 역전파를 통해 계산된 Gradient 기반으로 파라미터를 업데이트 한다

참고로 "가치 함수 값이 maximize 해야 한다"  "Loss Function 값이 minimze 해야 한다"  랑 다르다고 생각할 수 있지만, 단순하게 가치 함수 값의 부호만 바꾸어주면 minimize 하는 문제로 변경이 가능하기 때문에 동일한 것이나 마찬가지다.

 

지금까지 배운 내용으로 보았을 때, MDP는 결국 행동-가치 함수를 계산하면 상태-가치 함수를 계산할 수 있게 된다는 점현재 상태의 가치를 계산하려 한다면 미래 상태의 가치를 계산함으로써 역행하여 계산할 수 있다는 점이다. 그래서 우리가 알아내야 하는 함수는 바로 행동-가치 함수 이른바 'Q-함수' 라고 부르는 것이다. 이 Q-함수를 찾게 되면 상태-가치 함수도 알게되고, 결국 MDP의 목표인 '가장 큰 보상을 받는 정책인 최적화된 정책'을 찾을 수 있게 된다.

 

그런데 MDP에서 상태-가치함수, 행동-가치함수를 계산하는 방법은 시간 복잡도가 $O(n^3)$이게 되며 때문에 상태 개수가 여러가지이면 계산량이 어마무시해지기 때문에 적용하기가 어려워진다. 그래서 이를 해결하기 위해 발전되어진 방법들로는 다이나믹 프로그래밍, 몬테카를로, 시간 차 학습, 합수적 접근 학습들이 있다. 이에 대해서는 해당 포스팅에서는 자세히 다루지 않는다. 각 개념에 대한 설명은 책 원본을 참조하도록 하자.


이렇게 해서 강화학습의 기반이 되는 MDP에 대해 알아보았다. 다음 포스팅에서는 행동-가치 함수 이른바 'Q-함수' 를 사용해 최적화하되 신경망 모델을 사용하지 않는 방법인 Q-Learning과 신경망 모델을 사용하는 방법인 DQN에 대해서 배워보도록 하자.

반응형