본문 바로가기

딥러닝/강화학습(RL)

Target, Behavior, On, Off policy 를 구분해보자.


Target, Behavior, On, Off policy 를 구분해보자. 

 

에이전트는 환경의 상태 $s$ 에 대해서 행동 $a$ 를 선택합니다. 특성 시간 $t$ 에서 행동을 결정하는 Policy $\pi_t (a|s)$ 가 주어졌을 때, 이는 확률값일수도 있고, 무작위성을 포함한 epsilon greedy 일수도 있습니다. 시간이 지남에 따라서 에이전트는 환경에서 학습을 진행하여 더 나은 policy $\pi_t$ 를 얻게 되기에, 업데이트가 되는 sequence $\pi_1, \pi_2, \cdots, \pi_t$ 를 고려해봅시다. 만일 누군가에게 이 많은 policy 중에 하나를 고르라고 한다면, 아마 대부분의 사람들은 가장 마지막 policy $\pi_t$ 를 고르는데,  $\pi _t$ 가 가장 많은 환경에 대한 학습을 진행하였기에, 제대로 학습이 되었다면 더 많은 보상을 얻는 행동을 유도하기 때문입니다. 

Target Policy and Behavior Policy

$\pi_t$ 를 현재 가지고 있는 policy 라고 해봅시다. policy를 평가하기 위해서 가장 많이 사용하는 방법은 policy로부터 얻게 될 value function $Q^{\pi_t}(s,a)$ 값을 이용하는 거죠. 더 좋은 policy 라면 이 값이 더욱 높아지게 됩니다. Q-value 값을 평가하는데 있어서 한 가지 걸림돌은, 내가 지금 행동하는 policy와 이를 평가하고 사용하는 policy가 다르다는 것으로,  과거의 time step $s < t$ 에 대해서 $\pi_s$ 로 얻은 샘플에 대해서 Q-value값을 업데이트하는데, $\pi_t \ne \pi_s$ 이므로 과거의 정보를 유발한 policy $\pi_s$ 와 현재의 policy $\pi_t$ 가 다르다는 치명적인 단점을 가지게 됩니다. 

 

따라서 이를 제대로 분석하기 위해서 강화학습 이론에서는 현재의 policy $\pi_t$ 와 과거의 policy $\pi_s$ 에 대해서 다음과 같이 이름을 붙였습니다.

 

  1. Target Policy $\pi_t$: 현재 내가 가지고 있는 policy
  2. Behavior Policy $\pi_b$: 과거 샘플을 생성하는데 사용했던 policy

이름이 Target 인 이유는 우리가 실제로 평가하고 싶은 policy이기 때문에 타겟 policy이며,  Behavior policy는 기존에 우리가 행동했던 policy이기 때문에 behavior 라는 이름이 붙었습니다.



On Policy and Off Policy

이렇게 target과 behavior policy 를 구분하고 나면 강화학습을 나누는 대표적인 구분인 on-policy 와 off-policy에 대한 이해를 할 수 있습니다. 

on-policy algorithm

  • behavior policy $\pi_b$ 와 개선이 수행될 target policy $\pi$ 가 같거나 비슷해야 하는 알고리즘
  • low sample efficiency
  • A2C, TRPO, PPO

off-policy algorithm

  • behavior policy $\pi_b$ 와 업데이트가 수행될 target policy $\pi$ 가 같지 않아도 되는 알고리즘
  • replay buffer를 사용한 high efficiency
  • DQN, DDPG, SAC
  • offline-data로부터 적절한 policy를 만드는 것을 목표로 한다. 단점은 새로운 policy를 평가하기 어렵다. 

 

게임으로 비유하자면 on-policy를 게임을 계속 진행하면서 학습을 합니다. 따라서 게임을 굉장히 많이 플레이 해야 합니다. off-policy를 게임을 잠시 멈추고 이전에 플레이한 것을 바탕으로 학습을 진행합니다. 최종적인 목표는 새롭게 만날 게임에서 더 높은 보상을 얻는 것이므on-policy로 하던 off-policy로 하던 더 높은 보상을 얻는 게 좋은 방식입니다. 


related article

https://ai.googleblog.com/2020/04/off-policy-estimation-for-infinite.html 

 

피드백은 언제나 환영입니다. 😁