일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 파이썬
- optimizer
- 논문리뷰
- 강화학습
- 머신러닝
- Ai
- opencv
- Segmentation
- 프로그래머스
- Self-supervised
- 논문구현
- 논문 리뷰
- Convolution
- 알고리즘
- 코딩테스트
- 딥러닝
- 인공지능
- 파이토치
- Python
- 논문
- pytorch
- Semantic Segmentation
- Computer Vision
- programmers
- 코드구현
- ViT
- cnn
- 옵티마이저
- transformer
- object detection
- Today
- Total
Attention please
[강화 학습] On-policy vs Off-policy 본문
Temporal Difference
On-policy 와 Off-policy에 대해 들어가기 전 TD(Temporal Difference)에 대해 다시 한번 짚고 넘어가보도록 하겠습니다.
$$Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left( R_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t, a_t) \right)$$
위 수식은 TD를 보여주고 있으며, $\alpha$는 학습률을 나타내며, TD의 가장 핵심이 되는 $ Q(s_{t+1}, a_{t+1}) $ 는 다음 상태-행동의 예측 value값인 TD target이 됩니다.
$$Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left( \underbrace{R_t + \gamma Q(s_{t+1}, a_{t+1})}_{\text{Target (새로운 예측)}} - \underbrace{Q(s_t, a_t)}_{\text{Old prediction}} \right)$$
$$\text{TD Error} = \left( R_t + \gamma Q(s_{t+1}, a_{t+1}) \right) - Q(s_t, a_t)$$
다시 말해 $ Q(s_t, a_t) $는 지금 시점 $t$에서의 예측을 의미하며, $ \left( R_t + \gamma Q(s_{t+1}, a_{t+1}) \right) $는 다음 시점 $ t+1 $에서 얻은 실제 보상과 다음 상태의 예측을 의미합니다. 즉, "현재 예측"과 "한 시점 뒤 예측 + 보상" 의 차이가 바로 시간적 차이, Temporal Difference 인 것이죠.
Target policy & Behavior policy
정책(policy)에는 크게 "Target policy", "Behavior Policy" 두 종류가 존재합니다. 각 policy들은 모두 $ Q(s_t, a_t) $ 수식에서 찾아 볼 수 있죠. 우선 $Q(s_t, a_t)$ 수식은 다음과 같습니다.
$$Q(s_t, a_t) = \int_{s_{t+1}, a_{t+1}} \left( R_t + \gamma Q(s_{t+1}, a_{t+1}) \right) \cdot P(a_{t+1} \mid s_{t+1}) \cdot P(s_{t+1} \mid s_t, a_t) \, ds_{t+1} \, da_{t+1}$$
만약 TD를 통해 학습을 하기 위해서는 TD target을 뽑아야 합니다. TD target 인 $ Q(s_{t+1}, a_{t+1}) $ 를 뽑기 위해서는 $ P(a_{t+1} \mid s_{t+1}) $ 가 필요하죠.
이처럼 target을 뽑기 위한 policy 라 하여 $ P(a_{t+1} \mid s_{t+1}) $를 target policy라 부릅니다.
다른 정책인 behavior policy는 "실제로 환경과 상호작용하면서 transition을 수집할 때 사용하는 정책" 입니다. 결국 target을 뽑기 위해서는 $a_{t+1}$을 알아야 하는데, $(t+1)$의 행동을 알기 위해서는 $(t+1)$의 상태인 $s_{t+1}$을 알아야 하고, 이 환경은 현재 $t$에서의 행동인 $a_t$로부터 알 수 있죠.
즉, 환경으로부터 transition 데이터를 수집하기 위해 사용되는 정책이 behavior policy 이며, 해당 정책인 $P(a_t \mid s_t)$로부터 $a_t$를 얻을 수 있고, 이를 통해 환경의 확률 분포인 $P(s_{t+1} \mid s_t, a_t)$ 를 얻을 수 있게 됩니다.
정리하면, $Q(s_t, a_t)$ 의 각 확률 분포는 다음과 같이 나타낼 수 있습니다.
$$
Q(s_t, a_t) = \int_{s_{t+1}, a_{t+1}} \left( R_t + \gamma Q(s_{t+1}, a_{t+1}) \right) \cdot
\underbrace{P(a_{t+1} \mid s_{t+1})}_{\text{(target policy)}} \cdot
\underbrace{P(s_{t+1} \mid s_t, a_t)}_{\text{(from behavior policy)}} \, ds_{t+1} \, da_{t+1}
$$
여기서 혼동할 수 있는 부분은 "policy는 항상 $P(a \mid s)$의 형태이며, $P(s_{t+1} \mid s_t, a_t)$ 는 policy 가 아닌 단순히 환경일 뿐이라는 것" 입니다. Behavior policy 로부터 $a_t$를 샘플링하고, 이를 통해 $P(s_{t+1} \mid s_t, a_t)$ 을 정의하는 것이죠.
On-policy vs Off-policy
On-policy 와 Off-policy 의 차이는 간단합니다. 단순히 Target policy와 Behavior policy가 동일하면 On-policy 이고, 동일하지 않으면 Off-policy 입니다.
좀 더 예시를 들어 설명하자면, Behavior policy와 Target policy 모두 탐험을 포함하는 $(\epsilon\text{-greedy})$ 이라면, 이는 On-policy 인 것이죠. 즉, 행동 선택도 $(\epsilon\text{-greedy})$ 로 하고, TD target을 구성할 때도 $(\epsilon\text{-greedy})$ 를 사용하게 됩니다.
하지만, 만약 Behavior policy 는 $(\epsilon\text{-greedy})$ 이면서, Target policy는 greedy 하게 항상 최고의 선택만을 뽑게 한다면, 이는 Off-policy 라 할 수 있습니다. 행동은 $(\epsilon\text{-greedy})$ 하게 하면서, 업데이트 할 때는 greedy하게 TD target을 만드는 것이죠.
그렇다면 왜 굳이 Target policy와 Behavior policy를 다르게 가져가는 Off-policy를 사용하는 걸까요?
1. 사람 또는 다른 에이전트의 policy도 학습에 활용 가능
Off-policy의 장점 중 하나는 재사용이 가능하다는 점입니다. 사람이 게임을 플레이하거나, 다른 에이전트가 어떤 정책으로 행동한 데이터를 저장해두면, 나중에 그 데이터를 가지고 다른 정책을 학습할 수 있습니다.
예를 들어, 자율주행을 학습하는 상황에서, 실제 운전자의 주행 데이터를 수집한 후 (behavior policy), 이 데이터를 바탕으로 최적의 자율주행 정책 (Target policy)을 학습할 수 있는 것이죠. 즉, 누가 데이터를 만들었는지에 상관없이, 학습은 우리가 원하는 정책으로 진행할 수 있다는 것입니다.
2. 탐험을 하면서도 optimal policy로 업데이트할 수 있음
학습 초반에는 다양한 행동(탐험)이 필요합니다. 그래서 행동 선택에는 $ \epsilon\text{-greedy} $ 처럼 랜덤성이 섞인 behavior policy를 사용합니다. 하지만 학습은 항상 "가장 좋은 정책" 으로 하고 싶을 때, target policy를 greedy policy 로 선택하는 것이죠.
$$Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left( R_t + \gamma \max_a Q(s_{t+1}, a) - Q(s_t, a_t) \right)$$
위 수식은 Q-learning 에 대한 식입니다. $a_t \sim \epsilon\text{-greedy}$는 탐험을 포함한 행동(behavior policy)이고, $\max_a Q(s_{t+1}, a)$는 최적 정책 기준으로 TD target을 생성(target policy)하는 것입니다.
3. 재평가 (Re-evaluation) 가능
Off-policy 학습에서는 한 번 수집한 데이터(transition)를 반복해서 재사용할 수 있습니다. 즉, 데이터를 수집할 때 사용한 정책(behavior policy)과 학습하고자 하는 정책(target policy)이 달라도 학습이 가능하기 때문입니다.
예를 들어, 카드 게임을 하는 상황을 가정해 봅시다. 특정 상황에서 카드 A를 냈고, 결국 졌습니다. 그 당시에는 카드 A를 내는 것이 최선이라 생각했지만, 지금 다시 보니 그 상황에서는 카드 B를 내는 것이 승산이 있음을 깨닫게 되는 것이죠. 이것이 바로 재평가입니다.
즉, 과거 행동이었던 $a_t$는 예전에 낸 카드 (behavior policy) 이고, 지금 기준의 "가장 좋은 선택"은 $\max_a Q(s_{t+1}, a)$ (target policy) 가 됩니다. 다시 말해, 과거에 이미 게임은 끝났지만, 지금 기준을 바꾸어 다시 평가하고 업데이트할 수 있게 되는 것이죠.
'딥러닝 > Reinforcement Learning' 카테고리의 다른 글
[강화 학습] Q-learning 완전 정복 (1) | 2025.04.19 |
---|---|
[강화 학습] Monte Carlo(MC) & Temporal Difference(TD) (2) | 2025.04.14 |
[강화 학습] 가치 함수(Value Function) 및 벨만 방정식(Bellman Equation) 정의 및 증명 (1) | 2025.04.13 |