Attention please

[강화 학습] On-policy vs Off-policy 본문

딥러닝/Reinforcement Learning

[강화 학습] On-policy vs Off-policy

Seongmin.C 2025. 4. 15. 02:23
728x90
반응형

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) 가 됩니다. 다시 말해, 과거에 이미 게임은 끝났지만, 지금 기준을 바꾸어 다시 평가하고 업데이트할 수 있게 되는 것이죠. 

728x90
반응형
Comments