강화학습/파이썬과 케라스로 배우는 강화학습(스터디)

[강화학습] 02 - MDP

고집호랑이 2022. 12. 13. 22:00

MDP

이전 포스팅에서 나왔듯이 강화학습이란 결정을 순차적으로 내려야 하는 문제에 적용됩니다. 

 

그리고 강화학습을 풀기 위해서는 이 문제를 수학적으로 정의해야 하는데, 이때 사용하는 방법이 MDP라고 했었죠.

 

문제를 잘못 정의하면 에이전트가 학습을 못 할 수도 있기 때문에 이 MDP를 올바르게 설정하는 것이 에이전트가 학습하는 데 가장 중요한 단계 중 하나라고 할 수 있습니다.

 

MDP는 아래 그림과 같이 상태, 행동, 보상 함수, 상태 변환 확률, 감가율로 구성돼 있습니다.

 

MDP의 구성 요소

이 책에서는 순차적 행동 결정 문제의 예시인 그리드월드를 통해 MDP의 구성요소를 설명하고 있습니다.

 

그리드월드

그리드월드는 위의 그림과 같이 격자로 이뤄진 환경에서 문제를 푸는 각종 예제를 뜻합니다. 

 

위 그림의 경우 빨간색 네모가 에이전트의 위치, 초록색 세모가 장애물의 위치, 파란색 동그라미가 목표점을 나타내고 있습니다. 

 

상태

S는 에이전트가 관찰 가능한 상태의 집합입니다. 여기서 상태란 "자신의 상황에 대한 관찰"을 뜻합니다.

 

로봇과 같은 실제 세상에서의 에이전트에게 상태는 센서 값이 될 것입니다.

 

그리드월드와 같이 상태 공간이 작을 경우에는 상태의 정의 문제가 중요하지 않을 수 있습니다. 

 

하지만 방대하고 복잡한 상태 안에서 학습하는 에이전트를 구현할 때는 상태의 정의는 많이 고민해야 할 문제입니다.  

 

상태로서 무수히 많은 센서 값을 받아들이는 로봇은 학습하기 위해서 어떤 센서 값을 쓸지는 매우 중요하겠죠.

 

아무튼 이 그리드월드에서의 상태 집합은 다음과 같이 나타낼 수 있습니다. $$S = \{(1,1),(1,2),(1,3), ... (5,5)\}$$

 

모든 격자의 위치로서 총 25개의 상태가 있는 것이죠. 특정 시간에 그리드월드 에이전트의 상태는 25개의 상태 중 하나가 될 것입니다. 

 

즉 MDP에서의 상태는 시간에 따라 확률적으로 변하기 때문에 시간 t에 에이전트가 있을 상태는 확률변수가 됩니다. 

 

이 책에서 확률변수는 대문자로 표현하는데, 따라서 "시간 t에서의 상태 $S_t$가 어떤 상태 s다"를 다음과 같이 표현합니다. $$S_t = s$$

 

행동

에이전트가 상태 $S_t$에서 할 수 있는 가능한 행동의 집합은 A입니다. 따라서 시간 t에 에이전트가 특정한 행동 a를 했다면 다음과 같이 표현합니다. $$A_t = a$$

 

행동 또한 특정 시간에 어떤 행동을 할지 정해져 있는 것이 아니므로 확률변수입니다. 

 

그리드월드에서 에이전트가 할 수 있는 행동은 위, 아래, 왼쪽, 오른쪽으로 움직이는 것이기 때문에 행동 집합은 다음과 같습니다. $$A = \{up, down, left, right\}$$

 

보상함수

보상은 에이전트가 학습할 수 있는 유일한 정보로서 환경이 에이전트에게 주는 정보입니다.

 

시간 t에서 상태가 $$S_t = s$$이고 행동이 $$A_t = a$$일 때 에이전트가 받을 보상은 다음과 같이 조건부 기댓값으로 표현됩니다. $$r(s,a) = E[R_{t+1}|S_t = s, A_t = a]$$

 

보상은 환경이 에이전트에게 주는 것이고 환경에 따라서 같은 상태에서 같은 행동을 취하더라도 다른 보상을 줄 수도 있기 때문에 보상함수는 기댓값으로 표현합니다. 

 

또한 에이전트가 특정 시간 t에 상태 s에서 행동 a를 하면 환경이 에이전트에게 보상을 알려주는 시점은 t+1입니다. 

 

그렇기 때문에 에이전트가 받는 보상을 $R_{t+1}$라고 표현한 것입니다. t와 t+1 사이 하나의 시간 단위를 타입스텝(time step)이라고 합니다. 

 

상태 변환 확률

일반적인 상황이라면 에이전트가 어떤 상태 s에서 행동 a를 한다면 그 행동에 따른 다음 상태인 s'으로 상태가 변할 것입니다.

 

하지만 실제 환경에서는 상태가 무조건 변한다고 할 수 없습니다. 바람에 의해 넘어질 수도 있고, 누군가의 방해로 다음 상태로 도달하지 못할 수도 있죠.

 

상태 변환 확률은 상태 s에서 행동 a를 취했을 때 다른 상태 s'에 도달할 확률입니다. 수식으로 표현하면 다음과 같습니다.  $$P^a_{ss'} = P[S_{t+1} = s' | S_t = s, A_t = a]$$

 

이 값 또한 보상과 마찬가지로 에이전트가 알지 못하는 값으로 환경의 일부이기 때문에 환경의 모델이라고도 부릅니다.

 

할인율 

뜬금없지만 우리에게 10억을 받을 기회가 생겼다고 생각해봅시다. 우리는 이 10억을 당장 받는지 10년 뒤에 받는지 선택할 수 있습니다. 

 

그렇다면 우리는 대부분 10억을 당장 받으려고 할 것입니다. 10년 뒤에는 10억이라는 가치가 떨어질 수도 있고, 당장 사용하지도 못하기 때문입니다.

 

이런 생각이 에이전트에도 적용되게 됩니다. 에이전트는 보상이 얼마나 시간이 지나서 받는지를 고려해서 현재의 가치로 따집니다.

 

1분 뒤에 받을 100이라는 보상을 현재의 가치로 환산하여 100보다 작다고 생각하는 것입니다. 이를 수학적으로 표현하기 위해 "할인율"이라는 개념을 도입합니다.

 

이렇게 미래의 가치를 현재의 가치로 환산하는 것을 할인한다고 하고 시간에 따라 할인하는 비율을 할인율이라고 합니다. 

 

할인율 $γ$은 0과 1 사이의 값으로 곱해질수록 보상이 감소하게 됩니다.

 

만약 현재의 시간 t로부터 시간 k가 지난 후에 보상을 $R_{t+k}$를 받을 것이라고 하면 이 보상의 가치는 $γ^{k-1}R_{t+k}$가 됩니다. 

 

정책 

정책은 모든 상태에서 에이전트가 할 행동입니다. 정책은 각 상태에서 하나의 행동만을 나타낼 수 있고 확률적으로 left = 40%, up = 60%와 같이 나타낼 수도 있습니다. 

 

이전 포스팅에서도 말했듯이 강화학습의 최종 목표는 보상의 합이 최대가 되도록 하는 최적 정책을 찾는 것입니다. 

 

학습을 통해 최적 정책에 도달하면 각 상태에서는 단 하나의 행동만을 선택할 것입니다.

 

하지만 에이전트가 학습하고 있을 때는 다양한 상황에 대해 학습하고 경험하기 위해서 각 상태에서 확률적으로 여러 개의 행동을 선택할 수 있어야 합니다. 

 

정책을 수식으로 나타내면 다음과 같습니다. 에이전트의 상태가 $S_t = s$일 때 가능한 행동 중 $A_t = a$을 할 확률을 나타냅니다.

$$π(a|s) = P[A_t = a | S_t = s]$$

 

정책의 예시
그리드월드에서 정책의 예시

위의 그림은 정책의 예시를 나타냅니다. 각 상태에서의 행동을 화살표로 나타낸 것이고, 화살표가 2개인 것은 2개의 행동 중 확률적으로 하나의 행동을 선택한다는 의미입니다.

 

에이전트는 실제로 받은 보상을 토대로 가치함수와 정책을 바꾸는 과정을 반복하면서 최종 목표인 최적 정책을 학습할 수 있습니다. 

 

가치함수란 앞으로 받을 것이라 예상하는 보상을 의미하며, 이는 강화학습을 위해 풀어야 하는 벨만 방정식과 연결됩니다.

 

가치함수와 벨만 방정식에 대한 설명을 다음 포스팅에 이어서 하도록 하겠습니다~! 긴 글 읽어주셔서 감사합니다!

 

 

http://www.yes24.com/Product/Goods/44136413

 

파이썬과 케라스로 배우는 강화학습 - YES24

“강화학습을 쉽게 이해하고 코드로 구현하기”강화학습의 기초부터 최근 알고리즘까지 친절하게 설명한다!‘알파고’로부터 받은 신선한 충격으로 많은 사람들이 강화학습에 관심을 가지기

www.yes24.com

이 글은 위의 책 내용을 바탕으로 작성한 글입니다.