Markov Decision Process(MDP)

Seungsoo Lee·2022년 7월 7일
0

RL

목록 보기
2/15

date: 2021-10-15 22:00:00



강화학습에서 agent가 학습을 하는데에 있어서 가장 중요한것은 agent가 풀고자 하는 문제의 정의라고 할 수 있다.

문제가 정의가 되어야지 학습을 시작할 수 있기 때문이다

사람은 스스로 문제에 대해서 정의를 내릴 수 있지만, 컴퓨터인 agent는 그러기 쉽지 않다.

따라서 우리가 직접 문제의 정의를 많지도 않고 적지도 않게 학습을 할만큼 정도로 직접 해주어야한다


MDP가 무엇인가?

앞선 글에서 말했듯이 강화학습은 순차적 행동 결정 문제라고 하였다.

여기서 말하는 MDP는 순차적으로 이루어지는 행동들을 결정하는 것을 모델링을 한 수학적 프레임 워크라고 할 수 있다.

또한 중요한건 이 행동들의 결정은 stochastic 한 방법으로 결정된다는 것이다.

어렵게 생각하지 말고 그냥 한마디로 강화학습이라는 추상적인 개념을 수식으로 나타내었다고 보면 된다.

덕분에 우리는 이 MDP라는 수학적 프레임 워크를 통해 문제를 정의 할 수 있게된다.




MDP의 구성요소

MDP의 구성요소도 마찬가지로 앞선 글에서의 강화학습의 구성요소와 거의 유사하다.

하지만 MDP에선 보상함수, 상태변환확률, 할인율이라는 개념이 더 추가가 되었다. (좀 더 확장 되었다 생각해도 된다.)

따라서 하나 하나를 grid-world를 예를 들어 다시 설명을 해 볼것이다.


상태 (state)

이와 같은 grid-world가 있다고 가정하자.

agent가 갈 수 있는 State중에서 (1, 3) 지점을 MDP의 수학적 표현을 빌리게 되면,

St = (1, 3)

이런식으로 나타낼 수 있다.

다시 해석해보자면 시간 t일때 (1, 3)인 지점을 우리는 위 처럼 표현을 한다.

그런데 일반적으로 특정 시간 t에서의 상태 St 가 어떤 상태에 있는지는 아무도 모른다. ( (1, 1), (5, 5) 등...).

그런 정해져있지 않은 St 를 가지고 우리는 확률변수(random variable) 이라고 한다.

그러면 실제 (1,3) 과 같이 정해진 상태를 어떻게 표현을 할까?

아래와 같이 소문자 s로 표현이 가능하다.

St = s

그리고 아래를 보면 특정 시간에서의 정해진 특정 상태를 소문자와 첨자를 통해 표현도 가능하다.

s1 = (1,3)t = 1

방금까지 말한 내용은 아직까진 MDP에 대한 직접적인 내용은 없지만 앞으로 설명할 때에 필요한 개념이므로 생각을 해놔야한다.


행동(action)

위의 grid-world에서의 action set은 4가지 밖에 없다.

A = {up, down, right, left}

따라서 행동 집합을 위와 같이 나타낼 수 있다.

그럼 우리가 배운 내용을 바탕으로 어떤 state에서 action을 한 후 agent가 이동하는 과정을 생각해보자.

이와 같이 agent가 (3,1)state 에서 (4,1)state로 이동하는 과정에서 right라는 acion을 하였다.

이런 추상적인 말을 수학적으로 표현해본다면 어떻게 될까?

(3,1)또는 (4,1)이라는 state 또한 정해진 state이기 때문에 우리는 소문자로 나타낼 수 있다고 말했다.

따라서 현재 상태를 s1 = (3,1) 이라고 하고 행동 후 상태를 s2 = (4,1)이라고 표현을 하면,

시간 t일때 agent는 St = s1 에서 At = right 라는 행동을 해서 시간 t + 1일때 St+1 = s2 으로 이동 하였다고 할 수 있다.

여기서 At 도 random variable인 셈이다.

여기 까지 이해를 해야지 다음 상태 변환 확률을 이해할 수 있다.


상태 변환 확률 (state transition probablity)

방금 action을 배웠다.

우리는 agent가 어떤 상태에서 어떤 행동을 취한다면 agent의 상태가 변한다는것을 알고있다.

이 grid world 예제를 계속해서 이용을 하겠다.

아까 예제 처럼 시간 t일때 agent는 St = s1 에서 At = right 라는 행동을 해서 시간 t + 1일때 St+1 = s2 으로 이동 하였다고 할 수 있다 하였다.

근데 agent가 우리가 명령한대로 행동을 안할 확률도 포함 되어있다고 가정을 하게 된다면 말이 달라지게 된다.

가령 right라고 action을 넣었지만 agent가 갑자기 넘어지는 바람에 left를 할 수 도 있다는 말인것이다.

이처럼 상태의 변화에는 확률적인 요인이 들어가게 되는데, 이것을 수학적으로 표현한것을 가지고 우리는 상태 변환 확률(state transition probablity) 이라고 하는 것이다.

상태 변환 확률 = P[St+1 = s2 | St = s1 , At = a]

이 값은 agent 가 알지 못하는 값이므로 환경의 일부라고 생각해야한다.


보상함수 (reward function)

agent가 학습할 수 있는 유일한 정보가 바로 보상이다.

강화학습의 핵심이라고 할 수 있는 보상을 수학적으로 표현한 것이 보상함수이다.

r(s, a) = E[Rt+1 | St = s, At = a]

이 수식은 보상함수의 정의이다.

그대로 해석하자면, r(s, a)는 t시간의 timestep에서 만약 s 상태에 있는 agent가 a행동을 하게 된다면,

t + 1시간의 timestep일때 agent의 state에서의 보상의 기댓값이 된다.

여기서 처음 보는 것들이 몇개가 있다.

E

그중 E에 대해서 설명을 해볼까 한다.

E는 Expectation에서 첫글자를 따온 것인데, 말 그대로 기댓값이라고 할 수 있다.

기댓값은 일종의 평균인데 정확한 값이 아니라 예상되는 값이라고 볼 수 있다.

그러면 보상함수에 왜 기댓값을 곱할까?

아까 상태 변환 확률에서 말한것 처럼 agent가 행동을 하다가도 상태의 변화에 확률적인 요인이 들어가 있게 된다고 했다.

그래서 그 부분을 고려하게 되면 행동a에 따라 받는 보상r도 다를 수 있으므로 보상함수에 기댓값을 곱한다.

Rt + 1

또 Rt + 1 을 처음 볼 것이다.

그런데 좀 이상한게 있다.

왜 R이 t일때가 아니라 t+1일 때일까??

agent가 s에서 a라는 행동을 하면, 환경은 다음 state인 s' 와 reward r을 주기 때문이다.

다시말해 agent가 행동을 하고 난 후 상태를 이동했을때 그 상태의 보상을 알게되기 때문에 timestep이 t + 1이 될 수 밖에 없다는 말이다.

이렇게 보상함수도 설명을 하였다.


할인율

할인율은 사람의 심리와 같다.

우리와 같은 사람도 100만원을 지금 준다고하는것과 나중에 10년후에 준다고 하는것중 어느것을 선택하라고 물어보면

당연히 전자를 선택할 것이다.

강화학습에서도 마찬가지로 보상(reward)를 언제 받느냐가 중요한데 현재를 기준으로 지금 당장 보상을 받는게 학습하는데 있어서도 유리할 것입니다.

먼저 timestep에 대해서 잠시 말을 한적이 있었다.

정확하게 뭔지는 말을 안했었다.

timestep에 대해서 알려고하면 에피소드에 대해서도 알아야 한다.

위의 예제 grid-world에서 강화학습을 할때 agent는 goal이라는 목표까지 가게 되는데 그 목표까지 가게 되는 모든 action, 머물렀던 state 그리고 reward의 시퀀스를 보고 우리는 한 에피소드라고 한다.

그 한 에피소드 내에서 한 state에 머무를때를 한 timestep이라고 한다.

위의 그림 처럼 동일한 reward를 timestep가 t였을 때 받는경우와 와 t + k였을 떄 받는 경우를 비교하게 될때 당연히 t + k인 시점에 reward를 받는게 유리할것이다.

만약 t일때 받게 되면 t일때의 입장에서 k -1 만큼의 timestep을 기다려야 동일한 reward를 얻을 수 있으니 불리할 것이다.

따라서 이것을 고려하여 할인율이라는 개념을 적용하게 된다.

그럼 위의 그림을 참고해서 할인율 수식을 만들면

γk-1 Rt+k

위 식은 할인율을 고려한 미래 보상의 현재 가치이다.

좀더 자세히 설명을 위해 그림을 그려보았다.

이 그림은 3x3 grid-world의 예시이다.

γ(할인율) 은 0.8로 설정해 두었다.

빨간색 네모는 agent이고 G는 goal, R은 reward이다.

파란색 선은 한 에피소드라고 보면 된다.

이 그림에는 각 timestep의 보상 가치를 업데이트 해둔 것이다.

γk-1 Rt+k 이 식을 고려해보면 t = 2 일때 reward는 0.8 x 1로

timestep t = 2일때 미래보상의 현재가치는 0.8이라고 할 수 있다.

당연히 머리속으로 생각해보면 t = 2에서 reward가 1이면 더 좋을 것이다.

그러나 지금 rewrad 는 t = 3일때의 state에서 1이다.

그렇기 때문에 한 번만 기다리면 1을 받을 수 있어서 가치가 0.8로 discount된것이다.

그러면 t = 1일때는 어떨까?

마찬가지로 할인율을 고려해서 t = 1일때 reward는 0.82 x 1로

당연히 머리속으로 생각해보면 t = 1에서 reward가 1이면 더 좋을 것이다.

그러나 지금 rewrad 는 t = 3일때의 state에서 1이다.

그렇기 때문에 두 번만 기다리면 1을 받을 수 있어서 가치가 0.64로 좀더 discount된것이다.

할인율에서 가치라는 말이 나왔는데 미리 언급하자면 나중에 다음 포스트에는 가치함수(value function)에 대해서 다룰 예정이다.


정책

이미 강화학습이란? 이라는 포스트에서 강화학습의 구성요소로 설명을 한 적이있다.

하지만 수학적 프레임 워크인 MDP에 맞추기 위해선 이에 맞는 수식이 필요하다.

π(a | s) = P[At = a | St = s]

위 수식은 정책의 정의이다.

정책의 정의는 그대로 해석해보면 s라는 state에서 a라는 action을 할 확률이라는 것이다.

한마디로 각 state마다 어떤 행동을 할지 알려주게 된다.

결국 강화학습은 이 정책을 업데이트 시키면서 학습을 시키게 된다.

정책은 나중에 많이 다룰 예정이므로 이정도만 알고 있어도 충분하다.




MDP의 활용

우리는 방금까지 MDP와 그 구성요소에 대해서 배웠다.

그럼 이 MDP가 어떻게 작동하는 것인가??

우리가 MDP의 구성요소들을 직접 설정을하면 결국 우리가 강화학습을 하기전 가장 먼저 해야했던 순차적 행동 결정 문제를 정의하게 된다.

이렇게 되면 설정된 MDP를 가지고 agent가 현재 state에서 앞으로 받을 reward들을 고려해서 action을 결정하게 된다.

action을 결정하면 환경은 agent에게 위의 그림과 같이 실제 reward와 다음 state에 대한 정보를 알려주게 된다.

그런데 MDP를 가지고 agent가 현재 state에서 앞으로 받을 reward들을 어떤식으로 고려를 해서 어떻게 action을 선택하게 되는것일까?

그것을 value function(가치 함수)를 통해서 알아낼 수 있다.

다음 포스트에서 value function(가치 함수)에 대해서 설명을 할것이다.


제가 올린 글에서 잘못된 부분이 있으면 제 메일로 연락주세요!

Reference : 파이썬과 케라스로 배우는 강화학습


이승수의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

0개의 댓글