[강화학습 기초 3-1] 마르코프 결정 과정: 행동과 정책이 더해진다
MDP의 행동과 정책, 상태가치함수와 행동가치함수, 최적 정책, 자주 나오는 용어를 정리합니다.
강화학습 기초 시리즈 · 12편 중 5번째 글
연재 목차 보기
대표가 쓴 『개발자답게 코드로 익히는 강화학습』(프리렉, 2025)의 내용을 블로그에 맞게 정리해 연재합니다.
2장의 마르코프 보상 과정(MRP)은 상태가 확률에 따라 저절로 바뀌는 세계였습니다. 이번 편의 마르코프 결정 과정(MDP, Markov Decision Process)에서는 에이전트가 스스로 행동을 고릅니다. 여기서부터 난이도가 한 단계 올라가지만, Q러닝 · DQN · PPO 같은 모든 알고리즘이 이 위에 서 있으니 꼭 짚고 넘어가야 합니다.
MRP에 두 가지가 더해진다
| MRP | MDP | |
|---|---|---|
| 구성 | S, P, R, γ | S, A, P, R, γ + 정책 π |
| 상태가 바뀌는 이유 | 전이 확률만 | 에이전트의 행동 + 전이 확률 |
| 목적 | 가치를 계산한다 | 가치가 가장 커지는 정책을 찾는다 |
- 행동(A): 에이전트가 고를 수 있는 선택지입니다. 상태처럼 종류가 정해져 있습니다.
- 정책(π): 각 상태에서 어떤 행동을 고를지 나타내는 확률입니다. 한 상태에서 모든 행동의 확률을 더하면 1입니다.
정책이 확률이라는 점이 중요합니다. 왼쪽 0.6, 오른쪽 0.4인 정책은 "항상 왼쪽"이 아니라 "열 번 중 여섯 번쯤 왼쪽"입니다. 이 의외성이 뒤에서 다룰 탐험과 연결됩니다.
행동이 들어오면서 전이 확률과 보상에도 행동 조건이 붙습니다. 상태 s에서 행동 a를 했을 때 다음 상태가 s′일 확률은 Pass′, 그때 받을 보상의 기댓값은 Ras로 씁니다.
배와 해류로 생각하기
에이전트는 키를 잡은 선장이고, 전이 확률은 해류나 바람입니다. 선장이 오른쪽으로 키를 틀어도(행동) 해류 때문에 다른 곳에 도착할 수 있습니다. 그래서 다음 상태에 갈 확률은 행동을 고를 확률 × 그 행동 뒤 전이 확률을 모두 더해 구합니다.
| 상태 s1에서 | 정책 π | 도착 확률 (s2 / s3) | s2에 갈 확률 |
|---|---|---|---|
| 행동 A1 (s2 쪽으로) | 0.4 | 0.8 / 0.2 | 0.4 × 0.8 = 0.32 |
| 행동 A2 (s3 쪽으로) | 0.6 | 0.1 / 0.9 | 0.6 × 0.1 = 0.06 |
| s1 → s2 전체 확률 | 0.38 | ||
(이해를 돕기 위해 새로 만든 예시입니다.) 정책을 바꾸면 이 값이 달라집니다. MDP에서 하는 일은 결국 가치가 커지도록 정책을 조정하는 것입니다.
상태가치함수와 행동가치함수
정책을 평가하려면 "이 정책을 따르면 얼마나 좋은가"를 숫자로 알아야 합니다. 그 숫자를 주는 함수가 두 가지입니다.
- 상태가치함수 vπ(s): 상태 s에서 정책 π를 따를 때 앞으로 받을 반환값의 기댓값
- 행동가치함수 qπ(s, a): 상태 s에서 행동 a를 먼저 하고 그 뒤로 정책 π를 따를 때의 기댓값. Q함수라고도 부릅니다.
qπ(s, a) = Ras + γ Σs′ Pass′ vπ(s′)
첫 줄은 "상태의 가치 = 각 행동의 가치를 정책 확률로 평균 낸 것"입니다. 둘째 줄은 "행동의 가치 = 지금 받을 보상 + 그 행동 뒤에 도착할 상태들의 가치를 전이 확률로 평균 내고 할인한 것"입니다. 두 식을 서로 대입하면 MDP의 벨만 기대 방정식이 됩니다.
vπ(s)와 2장의 v(s)를 다른 것으로 생각하기 쉬운데, 둘 다 "상태의 가치"입니다. vπ는 계산할 때 정책을 하나 더 고려했을 뿐입니다.
최적 가치와 최적 정책
정책은 수없이 많습니다. 그중 가치를 가장 크게 만드는 정책을 최적 정책 π*라고 합니다.
"π*가 다른 정책보다 낫다"는 말은 확률이 크다는 뜻이 아니라, 모든 상태에서 π*의 가치가 다른 정책의 가치보다 크거나 같다는 뜻입니다.
최적 행동가치함수 q*를 알면 최적 정책은 아주 간단합니다. 각 상태에서 q*가 가장 큰 행동만 확률 1로 고르면 됩니다.
여기서 잠깐 · ∀와 argmax
∀는 "모든"이라는 뜻입니다. ∀π는 "모든 정책에 대해"입니다. argmax는 값을 가장 크게 만드는 입력을 돌려줍니다. 0 ≤ x ≤ 2π에서 argmax sin(x)는 sin 값이 1이 되는 x = π/2입니다. 파이썬의 np.argmax와 같은 개념입니다.
앞으로 자주 나올 용어 네 개
| 용어 | 뜻 |
|---|---|
| 정책 평가 | 지금 정책의 가치함수를 계산해 얼마나 좋은지 보는 것 |
| 정책 제어 | 평가 결과를 보고 더 좋은 쪽으로 정책을 바꾸는 것. 평가와 제어를 번갈아 반복해 최적 정책에 다가갑니다. |
| 모델 기반 | 전이 확률과 보상을 미리 다 아는 환경. 그림으로 그릴 수 있는 길 찾기 예제가 여기에 해당합니다. |
| 모델 프리 | 행동을 넣으면 다음 상태와 보상만 알려 주는 블랙박스 환경. 실제로 풀 문제는 대부분 여기에 속합니다. |
다음 편에서는 모델 기반 문제를 푸는 다이내믹 프로그래밍과, 모델 프리 문제를 푸는 몬테카를로와 TD를 살펴봅니다.