Deep Learning

강화학습 on-policy vs off-policy

팁택토 2025. 5. 23. 23:17

강화학습 기법에는 여러가지가 있지만 크게 On-Policy 기법과 Off-Policy 기법으로 구분이 된다. 

일단 지피티에게 설명을 부탁해보자. 

 

강화학습에서 on-policyoff-policy는 에이전트가 행동을 학습할 때 사용하는 정책(policy)의 종류에 따른 구분이에요.


1. On-Policy (온-폴리시)

  • 정의: 에이전트가 현재 학습 중인 정책(행동 전략)을 그대로 따라 행동하며, 그 경험을 사용해 정책을 개선하는 방식이에요.
  • 즉, 에이전트가 행동을 선택할 때 사용하는 정책과 학습에 사용하는 정책이 같음.
  • 대표적인 알고리즘:
    • SARSA (State-Action-Reward-State-Action)
    • Policy Gradient 계열 (REINFORCE, A2C 등)
  • 예시:
    에이전트가 정책 π를 따라 행동하고, π를 바탕으로 수집한 데이터를 사용해 π를 업데이트.

2. Off-Policy (오프-폴리시)

  • 정의: 에이전트가 행동을 선택하는 정책(행동 정책, behavior policy)과 학습에 사용하는 정책(목표 정책, target policy)이 다를 수 있는 방식이에요.
  • 즉, 에이전트가 어떤 정책을 따라 행동하든, 다른 정책을 배우고 개선할 수 있음.
  • 대표적인 알고리즘:
    • Q-learning
    • Deep Q-Network (DQN)
    • Importance Sampling을 사용하는 다양한 off-policy 강화학습 방법
  • 예시:
    에이전트가 탐험적 행동을 위해 ε-greedy 정책으로 행동을 하고, 학습할 때는 최적 정책을 따르도록 Q-value를 업데이트.

흠... 일단 On-Policy는 학습할때 사용하는 정책을 그대로 따라서하고, 그 경험을 사용한다고 하고, Off-Policy는 행동을 선택하는 정책과 학습에 사용하는 정책이 다를 수 있다고 한다. On-Policy 방식으로는 SARSA, A2C가 있고, Off-Policy 방식으로는 Q-Learning, DQN 등이 있다고 한다. 

 

그런데 위의 설명만으로는 뭔가 부족한 것 같다. 초보자에게는 정책이라는게 뭔지도 두리뭉실한 것 같고.. 

여기서 한번 더 물어봐야 한다. '정책' 이라는 것이 뭔지. 그리고 '정책'과 함께 중요하게 나오는 단어가 '행동' 이기도 하니 행동도 함께 물어보자. 

📌 정책(Policy)이란?

정책이란, 현재 상태(state)에서 어떤 행동(action)을 할지 결정하는 전략이에요.

수학적으로는 다음과 같이 표현해요:

  • 확률적 정책 (stochastic policy)
    π(a∣s)\pi(a|s) : 상태 ss에서 행동 aa를 선택할 확률
    → 예: 현재 속도와 위치가 이렇다면, 좌회전할 확률 70%, 직진할 확률 30%
  • 결정적 정책 (deterministic policy)
    μ(s)\mu(s) : 상태 ss에서 항상 선택하는 행동
    → 예: 현재 속도와 위치가 이렇다면, 무조건 가속 1.0

📌 정책은 어떤 모습일까?

  • 테이블 형태로 구현할 수도 있고 (작은 문제)
  • 딥러닝 모델 (신경망)로 표현할 수도 있어요 (복잡한 환경)

📌 행동(Action)이란?

행동은 에이전트가 특정 상태에서 실제로 선택하는 하나의 값이에요.

예를 들어,

  • 자동차 주행이라면
    → 가속, 감속, 좌회전, 우회전
  • 바둑판 게임이라면
    → 어느 칸에 돌 놓기

행동은 정책에 따라 결정되는 구체적인 선택이에요.

 

위의 설명에 따르면, '정책'(Policy)은 '행동'을 결정할 때 사용하는 전략이라고 한다. 그리고 정책의 종류에는 확률적 정책과 결정적 정책이 있다고 한다. '행동'(Action)은 실제로 에이전트가 선택하는 하나의 행동값이라고 한다. 

 

오히려 아래 설명이 더 이해가 잘 가는 것 같다. 

📌 정책과 행동의 관계


정책 어떤 상태에서 어떤 행동을 할지 정하는 전략, 확률 분포 또는 결정 함수
행동 정책에 따라 실제로 수행한 선택값
 

비유

  • 정책: "오늘 뭐 먹을까?"를 결정하는 기준 (예: 한식 먹을 확률 50%, 중식 30%, 일식 20%)
  • 행동: 오늘 실제로 선택한 '짜장면'

정책이란 '오늘 점심에 뭘 먹을까' 라는 질문에 결정하는 방법으로 어제 먹은 것을 피하고, 한식을 좋아하니 50%, 중식 30% 일식 20%의 확률로 선택을 하자.. 라는 정책이 있고, 

행동이란 위의 정책을 가지고 실제로 선택한 '짜장면'이 선택된 행동이라는 것이다. 

 

상태, 정책, 행동에 대한 또다른 예제는 아래와 같다. 

카레이싱 환경에서 현재 '상태'는 속도 60에 오른쪽 방향으로 주행중 일때, '정책'으로는 속도 60이상일 때는 70% 확률로 감속, 30%확률로 유지일 때, 이번에 선택한 '행동'은 감속을 선택한다. 

 
상태 정책 행동
속도: 60, 방향: 오른쪽 속도가 60 이상이면 70% 확률로 감속, 30% 확률로 유지 이번엔 '감속' 선택

 

강화학습의 목표는 이 정책을 점점 더 좋은 방향으로 학습해서, 장기적으로 높은 보상을 얻는 행동을 많이 하도록 바꾸는 것임.

그래서 행동 = 정책(state) 이고
우리가 하는 건 정책을 점점 더 좋아지게 학습하는 것이라는 것. 

 

그럼 정책, 행동에 대해서 좀 이해가 갔으면, 다시 위로 올라가서 On-Policy와 Off-Policy는 무엇을 말하는지 다시 보자. 

📌 다시 보는 정책(policy)과 행동(action)

  • 정책: 어떤 상태에서 어떤 행동을 할지 정하는 전략
    → $\pi(a|s)$
  • 행동: 정책에 따라 실제로 선택된 값

그리고 강화학습의 목표는 좋은 정책을 학습하는 것

📌 그럼 on-policy와 off-policy란?

이건 데이터를 모을 때 쓰는 정책과 학습하려는 정책이 같은지 다른지에 따라 나뉘어요.

📌 On-Policy

데이터를 모을 때 사용하는 정책
학습하려는 정책같은 경우

  • 즉, 현재 학습 중인 정책 $\pi$ 으로 행동을 선택하고
    그 행동 경험으로 바로 그 정책 $\pi$ 를 학습

📌 Off-Policy

데이터를 모을 때 사용하는 정책
학습하려는 정책다른 경우

  • 즉, 행동할 때는 탐험 위주의 정책(behavior policy, $\beta$) 으로 데이터를 모으고
    그 데이터를 가지고 다른 목표 정책(target policy, $\pi$) 를 학습

이때, 탐험적인 행동을 하면서도 좋은 정책을 학습할 수 있게 importance sampling 같은 기법을 쓰기도 해요.

 

즉, 한번 더 정리를 해보면

강화학습의 목표는 더 높은 reward를 얻기 위해, 좋은 정책을 학습하는 것이다. 정책이란 행동을 선택하는 전략으로, 좋은 정책이란 더 높은 reward를 얻을 수 있는 행동을 선택하는 정책이다. 

좋은 정책을 학습하기 위해서, 데이터를 모으고, 모은 데이터로부터 정책을 업데이트 하는데... 

그때 데이터를 모을 때 사용한 정책과 학습하려는 정책이 같은 경우를 On-Policy라고 하고, 

데이터를 모을 때 사용한 정책과 학습하려는 정책이 다른 경우를 Off-Policy라고 한다. 

 

📌 차이점 정리

구분데이터 수집 정책학습 대상 정책특징
On-policy 학습 중인 정책 $\pi$ 학습 중인 정책 $\pi$ 매번 최신 정책으로 데이터 수집, 안정적이지만 데이터 효율이 낮음
Off-policy 탐험용 정책 $\beta$ 목표 정책 $\pi$ 과거 데이터, 다른 정책 데이터 재사용 가능, 데이터 효율 좋음

📌 예시로 쉽게 설명

🎮 예: 자동차 게임에서

  • On-policy:
    → 지금 학습 중인 정책으로 차를 몰아보고, 그 경험으로 바로 지금 정책을 수정
  • Off-policy:
    → 옛날에 다른 운전자가 했던 리플레이 데이터나, 무작위로 몰아본 데이터도 활용해서 최적의 정책을 학습

흠.. 그냥 단순히 생각할 때, 다른 운전자가 리플레이 했던 것도 사용할 수 있으면, 내가 모르는 더 높은 기술? 정책?을 배울 수 있어서 더 좋을 것 같다. 이것은 Off-policy 방식에 해당하는 것 같고. 

지금 사용하는 정책이 이상해서 즉시즉시 수정해가며 업데이트 하는 기능이 필요하다면 On-policy 방식에 해당하는 것 같다. 

 

그러면 현재는 주로 어떤 기법을 쓰는지도 알아보자. 

 

요즘 강화학습 분야에서는 off-policy 기법이 더 널리, 그리고 많이 사용되는 편이에요.

그 이유를 간단히 정리해볼게요:


Off-policy가 더 많이 쓰이는 이유

  1. 데이터 효율성 (Sample Efficiency)
    • Off-policy는 과거에 수집된 데이터나 다른 정책에서 얻은 경험도 재사용할 수 있어서, 학습에 필요한 데이터를 더 효율적으로 쓸 수 있어요.
    • 반면, on-policy는 항상 최신 정책으로 행동하고 그 경험만 써야 해서 데이터가 더 많이 필요해요.
  2. 복잡한 환경과 딥러닝 결합에 유리
    • Deep Q-Network (DQN) 같은 off-policy 기법은 딥러닝과 결합해 성공적으로 복잡한 문제에 적용됐어요.
    • Atari 게임, 로봇 제어 등 실제 문제에서 많이 사용됩니다.
  3. 정책 탐색과 활용의 분리
    • 행동 정책과 학습 정책을 분리해 탐색(exploration)과 최적 정책 학습을 독립적으로 조절 가능해요.

On-policy도 여전히 쓰임

  • Policy Gradient 계열(예: A2C, PPO)은 on-policy인데, 안정적인 학습과 직접 정책 최적화에 강점이 있어 로봇 제어나 연속행동 제어에 많이 씁니다.
  • 최근엔 PPO 같은 알고리즘이 효율성과 안정성 면에서 많이 사랑받고 있어요.