앞선 글에서 Markov Decision Process(이하 MDP)에 대해 설명하면서 상태, 행동, 전이 확률, 보상 함수, 할인율 까지 정의하면 MDP가 만들어진다 하였습니다.
그렇다면 이 MDP를 가지고 에이전트는 어떤 식으로 보상을 얻기 위해 행동할까요? 랜덤하게 행동할 수도 있고, 매 상태마다 계산을 통해 기댓값이 높은 방향으로 움직이게 만들 수도 있을 것입니다.
이번 글에서는 이런 행동 전략을 설계하기 위한 정책(Policy)에 대해 정리해 보겠습니다.
정책(Policy)
정책이란?
"이 상태에서 나는 어떤 행동을 할 것인가?"
정책은 에이전트의 행동 규칙입니다. 각 상태에서 어떤 행동을 선택할지 정해놓은 것이 바로 정책이며, \(\pi\)로 표기합니다.
예시로 제가 축구에서 페널티킥을 차야하는 상황에서 오른쪽 상단으로 찰 때 득점률이 가장 좋아 오른쪽 상단으로 주로 찹니다. 이것이 저의 정책입니다.
즉 위의 위의 "이 상태에서 나는 어떤 행동을 할 것인가?"와 매칭시켜 보자면
이 상태는 페널티킥을 차야하는 상황이 될 것이고 어떤 행동은 "오른쪽 상단으로 찬다"가 될 것입니다. 그러므로 "페널티킥을 찰 때 우측 상단을 찬다."가 저의 정책이 되는것 입니다. 지난 글에서 다루었던 Frozen Lake를 예시로 설명하자면 MDP가 게임판이라면 정책은 그 게임판 위에서의 전략입니다.
위의 예시가 되려 혼동을 주었을수도 있습니다만 결국 하고자 하는말은 정책은 상태를 입력으로 받아서 행동을 출력하는 함수입니다. 이 함수의 형태에 따라 결정적 정책과 확률적 정책으로 나뉘게 되며 아래 각각의 정책에 대해 설명하겠습니다.
결정적 정책(Deterministic Policy)
결정적 정책은 각 상태마다 행동이 결정되어 있는것을 의미합니다.
$$\mu(s) = a$$
\(\mu\)는 상태 \(s\)를 입력으로 받아 행동 \(a\) 하나를 출력하는 함수입니다. 확률적 정책을 \(\pi\)로 표기하는 것과 구분하여, 결정적 정책은 \(\mu\)로 표기하는 것이 일반적입니다. 같은 상태에서는 몇 번을 물어봐도 항상 같은 답이 나옵니다.
예를 들어 "비가 오면 우산을 챙겨간다" 처럼 "비가 오는" 상태에서는 "우산을 챙긴다"라는 행동이 이미 결정되어 있습니다.
반대로 "비가 오면 우산을 챙길 수도 있고, 우비를 입는다"는 확률적 정책입니다. "비가 오는" 상태에서 취할 수 있는 행동이 "우산을 챙긴다"와 "우비를 입는다"의 2가지 행동 중 1가지를 선택해야하기 때문이죠
결정적 정책은 직관적이고 이해하기 쉽지만 한계가 명확합니다. 정책이 이미 고정되어 있기 때문에 다른 행동을 시도해 볼 여지가 거의 없습니다. 페널티킥이라는 상태에서 항상 오른쪽으로만 슈팅하는 선수를 떠올려 보겠습니다. 골키퍼가 이 패턴을 학습하고 나면, 오른쪽만 잘 막아도 공격을 쉽게 방어할 수 있습니다.
이처럼 상대가 우리의 정책을 관찰하고 대응할 수 있는 환경같은 적대적 환경에서는 너무 예측 가능한 결정적 정책은 취약해질 수 있습니다.
확률적 정책(Stochastic Policy)
확률적 정책은 각 상태에서 행동을 확률 분포로 선택합니다.
$$\pi(a \mid s) = P(A_t = a \mid S_t = s)$$
이 수식은 "상태 \(s\)에 있을 때 행동 \(a\)를 선택할 확률"을 의미합니다. 결정적 정책이 "이 상태에서 무엇을 할 것인가"에 대해 하나의 답을 내놓는다면, 확률적 정책은 "각 행동을 얼마나 자주 선택할 것인가"를 확률로 정합니다. 확률이므로 당연히 모든 행동에 대한 확률의 합은 1이어야 합니다.
$$\sum_{a \in \mathcal{A}} \pi(a \mid s) = 1 \quad \text{(모든 상태 } s \text{에서)}$$
"비가 오면 70% 확률로 우산을 챙기고, 30% 확률로 우비를 입는다."라는 정책이 있을때 각 확률은
- \(\pi(우산 | 비) = 0.7\)
- \(\pi(우비 | 비) = 0.3\)
로 정의되며 결정적 정책과 다르게 같은 “비가 오는” 상태라도, 매번 항상 같은 행동이 나오는 것이 아니라 이 확률에 따라 우산 또는 우비 중 하나가 선택됩니다.
그러나 실제로는 결정적 정책과 확률적 정책은 잘 구분하지 않습니다. 이유는 결정적 정책은 확률적 정책의 특수한 경우이기 때문입니다. 하나의 행동에 확률 1을 부여하고 나머지에 0을 부여하면 결정적 정책이 됩니다.
$$\pi(a \mid s) = \begin{cases} 1 & \text{if } a = \mu(s) \\ 0 & \text{otherwise} \end{cases}$$
따라서 확률적 정책이 더 일반적인 형태이고, 결정적 정책은 그 안에 포함되는 관계입니다. 강화학습의 수식에서 \(\pi(a \mid s)\) 형태로 통일해서 쓰는 이유도 여기에 있습니다. 결정적이든 확률적이든 같은 표기로 다룰 수 있기 때문입니다.
탐험(Exploration)과 탐사(Exploitation)
위의 예시 처럼 비가 올때 70% 확률로 우산을 챙기는게 좋고 30% 확률로 우비를 입는게 좋은건 에이전트가 어떻게 알 수 있을까요? 바로 그것을 설명하기 위해 탐험과 탐사에 대한 이해가 필요합니다
좋은 정책을 만들기 위해서는 환경에 대한 충분한 정보가 필요합니다. 그리고 그 정보를 얻기 위해서는 에이전트가 직접 행동을 해 봐야 합니다. 이 길이 좋은 길인지 아닌지를 판단하려면 직접 그 길을 걸어봐야 아는것 처럼 말이죠. 이때 우리는 내가 이미 아는 길로 갈 것인지 아니면 새로운 길로 가 볼 것인지 결정해야합니다.
탐사 - "아는 길로 가자"
지금까지의 경험을 바탕으로 현재 가장 보상이 높다고 판단되는 행동을 선택하는 것입니다. 그런데 우리가 늘 아는 길로만 가면 목적지까지 도착하는데 어느 정도 보장이 되겠지만 더 좋은 길을 발견할 기회를 잃게 됩니다.
탐험 - "모르는 길로 가 보자"
정보를 수집하기 위해 현재의 판단과는 상관없이 새로운 행동을 시도하는 것입니다.
콜럼버스가 동양에 가기 위해 이미 검증된 육로만 고집했다면, 아메리카 대륙은 그의 이름과 함께 역사에 남지 않았을지도 모릅니다. 하지만 그는 새로운 길인 바닷길을 탐험했고 그 과정에서 우연히 더 큰 보상인 신대륙을 발견했습니다. 이 처럼 탐험을 통해 우리가 아는 길보다 더 좋은 경로나 더 큰 보상을 우연히 발견할 수 도 있습니다.
Trade off
탐험만 너무 많이 하면 에이전트는 여기저기 돌아다니기만 할 뿐 값이 잘 수렴하지 않고 행동이 중구난방이 됩니다. 반대로 탐사만 지나치게 강조하면 현재 알고 있는 길에만 머물면서 더 나은 가능성을 스스로 닫아버리게 됩니다. 그래서 좋은 정책을 설계할 때는 탐험과 탐사의 균형이 매우 중요합니다.
\(\epsilon-Greedy\) 정책
위에서 탐험과 탐사의 균형이 중요성을 강조하였는데 이를 위해 강화학습에서 가장 널리 쓰이는 전략인 \(\epsilon\)-Greedy에 대해 소개하겠습니다. 직관적으로 먼저 설명하자면 "대부분은 현재 최선이라고 판단되는 행동을 하되, 가끔은 무작위로 행동한다."라는 철학에서 나온 정책입니다.
Greedy부터 이해하기
\(\epsilon\)-Greedy를 이해하려면 먼저 Greedy가 무엇인지 알아야 합니다. Greedy(탐욕적) 알고리즘은 CS에서 익숙한 개념입니다. 매 순간 눈앞에 보이는 최선의 선택만 하는 것이죠. 거스름돈 문제에서 가장 큰 동전부터 쓰는 것, 최단 경로에서 당장 가장 가까운 노드를 고르는 것이 모두 Greedy입니다.
강화학습에서의 Greedy도 같습니다. 각 행동이 얼마나 좋은지를 나타내는 점수 \(Q(s, a)\)가 있을 때, 그 점수가 가장 높은 행동만 선택하는 것이 Greedy 정책입니다.
(\(Q(s, a)\)는 "상태 \(s\)에서 행동 \(a\)를 했을 때 기대할 수 있는 가치"를 나타내는 행동 가치 함수인데, 자세한 내용은 다음 글에서 다루겠습니다.)
$$\pi(s) = \arg\max_a Q(s, a)$$
위에서 설명한 탐사가 바로 이 Greedy 정책입니다. 아는 길 중 가장 좋은 길만 고르는 것이죠. 당연히 탐험이 전혀 없으므로 위에서 말한 Trade off 문제가 그대로 발생합니다.
\(\epsilon\)이 하는 일
\(\epsilon\)-Greedy는 이 Greedy 정책에 \(\epsilon\)만큼의 무작위성을 주입한 것입니다. \(\epsilon\)(입실론)은 0과 1 사이의 값으로 \(\epsilon\)만큼만 랜덤하게 움직이고 나머지는 Greedy하게 움직이겠다.를 결정하는 파라미터입니다. 수식으로 쓰면 다음과 같습니다.
$$\pi(s) = \begin{cases} \arg\max_a Q(s, a) & \text{확률 } 1 - \epsilon \\ \text{random action} & \text{확률 } \epsilon \end{cases}$$
\(\epsilon - Decay\)
앞에서 \(\epsilon\)-Greedy 정책을 "\(\epsilon\)만큼만 랜덤하게 나머지는 Greedy하게" 행동하는 방식이라고 정의했습니다. 여기서 \(\epsilon\) - Decay는 \(\epsilon\)값을 학습이 진행됨에 따라 점진적으로 줄여나가는 전력입니다.
초반에는 환경에 대한 정보가 거의 없기 때문에 \(\epsilon\)을 크게 두고 다양한 행동을 시도하면서 경험을 쌓고 어느정도 환경에 대한 정보를 학습하였을 때 \(\epsilon\)을 작게 줄여서 학습한 정책을 따르게 하는 방식입니다.
즉, 시간에 따라 \(\epsilon\)이 다음처럼 움직이게 만드는 겁니다.
$$\epsilon_0 \approx 1.0 \;\to\; \epsilon_1 \;\to\; \cdots \;\to\; \epsilon_T \approx 0$$
처음에는 거의 랜덤 정책에 가까웠다가, 학습이 진행되면서 점점 "거의 Greedy" 정책에 가까워지는 흐름입니다.
왜 \(\epsilon\)을 줄여야 할까?
\(\epsilon\)-Greedy에서 \(\epsilon\)은 "얼마나 자주 모르는 행동을 시도할 것인가"를 결정합니다. \(\epsilon\)이 너무 크게 유지되면 학습이 꽤 진행된 뒤에도 계속 랜덤한 행동이 많이 섞여 들어와서, 이미 충분히 좋은 정책이 있는데도 성능이 들쭉날쭉해집니다. \(\epsilon\)이 너무 일찍 작아지거나 0에 가까우면 아직 환경에 대한 이해가 부족한 상태에서 탐험이 멈춰 버려 "지금까지 우연히 잘됐던 행동"에만 매달리다가 지역 최적해에 빠질 수 있습니다.
그래서 실전에서는 "초반에는 높게, 후반으로 갈수록 낮게"라는 방향성으로 \(\epsilon\)을 조절하는 것이 일반적이고, 이것을 통칭해서 \(\epsilon\)-Decay라고 부릅니다.
Softmax Policy
\(\epsilon\) - Greedy는 Q값이 가장 높은 행동들을 제외한 나머지 행동들을 모두 동일한 확률로 선택한다는 문제가 있습니다. 예를 들어 아래와 같이 어떤 상태에서 4가지 Action Space이 있고 각각의 Q값이 다음과 같다고 가정하겠습니다.
| 행동 | Q값 |
|---|---|
| A | 0.9 |
| B | 0.7 |
| C | 0.2 |
| D | 0.0 |
\(\epsilon\)-Greedy는 A를 최선으로 보고 \((1-\epsilon)\)의 확률로 선택합니다. 그런데 탐험이 발생하면 B, C, D를 동일한 확률로 고릅니다. Q값이 0.7인 B와 0.0인 D를 똑같이 취급하는 것이죠. 차선인 B는 자주 시도하고 최악인 D는 덜 시도하는 것이 더 합리적일 것입니다. 이러한 문제를 해결하기위해 나온것이 바로 Softmax 정책입니다.
Softmax 정책은 Q값이 높은 행동일수록 선택 확률이 높고, 낮을수록 확률이 낮아지도록 확률 분포를 만듭니다.
$$\pi(a \mid s) = ({e^{Q(s,a) / \tau}}) \div ({\sum_{a'} e^{Q(s,a') / \tau}})$$
분자의 \(e^{Q(s,a)/\tau}\)는 Q값을 지수 함수에 넣은 것입니다. Q값이 클수록 \(e\)의 지수가 커지므로 값이 급격히 증가합니다. 분모는 모든 행동에 대한 분자의 합으로, 전체 확률의 합이 1이 되도록 정규화하는 역할입니다.
온도 파라미터 \(\tau\)
여기서 \(\tau\)(타우)는 온도(temperature) 파라미터로, Q값의 차이를 얼마나 민감하게 반영할지를 결정합니다. 위의 Q값 예시(A=0.9, B=0.7, C=0.2, D=0.0)에 \(\tau\)를 달리 적용해 봅시다.
$$\tau = 1.0$$ (보통 온도)
\(e^{0.9}, e^{0.7}, e^{0.2}, e^{0.0}\)을 구해서 정규화하면,
| 행동 | Q값 | \(e^{Q/\tau}\) | 선택 확률 |
|---|---|---|---|
| A | 0.9 | 2.460 | 0.381 |
| B | 0.7 | 2.014 | 0.312 |
| C | 0.2 | 1.221 | 0.189 |
| D | 0.0 | 1.000 | 0.155 |
Q값이 높은 A, B가 높은 확률을 갖지만, C, D도 어느 정도 선택될 여지가 있습니다.
$$\tau \to 0$$ (매우 낮은 온도)
\(Q/\tau\)의 값이 극단적으로 벌어지면서, Q값이 가장 높은 행동의 확률이 1에 수렴합니다. 사실상 Greedy 정책과 같아집니다.
$$\tau \to \infty$$ (매우 높은 온도)
\(Q/\tau \approx 0\)이 되면서 모든 \(e^{Q/\tau} \approx 1\)이 됩니다. 모든 행동의 확률이 균등해지므로 사실상 랜덤 정책과 같아집니다.
\(\epsilon\)-Greedy와의 차이
\(\epsilon\)-Greedy는 "최선의 행동 vs 나머지 전부"라는 이분법적 구조입니다. 탐험이 발생하면 Q값과 무관하게 균등하게 뽑습니다. 소프트맥스는 Q값에 따라 연속적인 확률 분포를 만들기 때문에, Q값이 비슷한 행동들 사이에서는 골고루 시도하면서도 확실히 나쁜 행동은 자연스럽게 덜 선택합니다.
다만 \(\tau\)를 어떻게 설정하느냐에 따라 성능이 크게 달라질 수 있고, \(\epsilon\)-Decay처럼 \(\tau\)도 학습 과정에서 점차 줄여나가는 전략을 함께 사용하는 경우가 많습니다.
'Reinforcement Learning' 카테고리의 다른 글
| Temporal-Difference(TD) (0) | 2026.04.21 |
|---|---|
| Optimal Value Function을 찾기 위한 Monte Carlo 방법 (0) | 2026.04.19 |
| [번외] 강화학습을 위한 기초 수학 - Expectation (0) | 2026.04.19 |
| Value Function(가치 함수) 이해하기 (0) | 2026.04.19 |
| 강화학습(Reinforcement Learning)의 기초 Markov Decision Process(MDP) 이해하기 (0) | 2026.04.19 |