본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Offline reinforcement learning; 오프라인 강화 학습
환경과 새로 상호작용하지 않고, 이미 모아 둔 고정 데이터셋만으로 정책을 학습하는 강화 학습

오프라인 강화 학습(offline reinforcement learning)은 다른 정책(사람, 기존 제어기, 이전 학습 에이전트 등)이 미리 모아 둔 전이 데이터셋 𝒟={(s,a,r,s′)}만으로 정책을 학습하고, 학습 중에는 환경과 전혀 상호작용하지 않는 강화 학습이다. 예전에는 배치 강화 학습(batch reinforcement learning)이라고 불렀다. 의료, 자율주행, 로봇, 추천처럼 시행착오가 위험하거나 비싸지만 운영 기록은 많이 쌓인 분야에서, 대규모 데이터로 의사결정 정책을 만들려는 목적으로 연구된다.[1]

행동 복제도 고정 데이터만 쓰지만 데이터의 행동을 그대로 따라 할 뿐이다. 오프라인 강화 학습은 데이터에 붙은 보상을 써서 데이터를 만든 정책보다 나은 정책을 찾으려 한다. 여러 궤적의 좋은 부분을 이어 붙여(stitching) 데이터에 한 번도 통째로 나온 적 없는 더 좋은 경로를 만드는 것이 대표적인 이점이다.

설정 데이터 수집 학습 중 상호작용 예
온 폴리시 현재 정책이 매번 새로 수집 계속 REINFORCE, A2C, PPO
오프 폴리시 과거 정책들의 데이터를 리플레이 버퍼에 쌓되 계속 추가 계속 DQN, SAC, TD3
오프라인 고정된 데이터셋, 추가 없음 없음 BCQ, CQL, IQL, Decision Transformer
오프라인 후 온라인 오프라인으로 사전 학습 후 짧게 상호작용하며 미세조정 일부 IQL, Cal-QL

핵심 문제: 분포 이동과 외삽 오차

편집 원본 편집

오프 폴리시 알고리즘은 원리상 다른 정책의 데이터로 학습할 수 있으니, DQN이나 SAC를 고정 데이터에 그냥 돌리면 될 것 같다. 실제로는 잘 안 된다. 후지모토 등(2018)은 DQN·DDPG 같은 오프 폴리시 방법이 고정 데이터에서 실패하는 원인을 외삽 오차(extrapolation error)로 설명했다. 데이터에 거의 또는 전혀 없는 행동의 가치를 신경망이 근거 없이 추정하고, 그 값이 학습을 망가뜨린다는 것이다.[2]

Q-러닝의 타깃을 보면 이유가 드러난다.

y=r+γmaxa′Q(s′,a′)

max는 데이터에 없는 행동 a′까지 포함해 가장 큰 Q를 고른다. 그 행동의 Q는 한 번도 실제 보상으로 교정된 적이 없으므로 무작위 오차를 가지는데, max는 하필 위로 틀린 값을 골라낸다. 온라인 학습이라면 에이전트가 그 행동을 실제로 해 보고 과대평가를 바로잡지만, 오프라인에서는 바로잡을 기회가 없다. 과대평가된 값은 부트스트래핑으로 다른 상태에 번지고, 정책은 그 허상의 행동을 고르게 되어 학습한 정책의 상태·행동 분포가 데이터 분포에서 점점 멀어진다. 이를 분포 이동(distributional shift)이라 한다.[1]

그래서 오프라인 강화 학습 알고리즘의 공통 과제는 "데이터를 만든 행동 정책 πβ보다 나아지되, 데이터가 뒷받침하지 않는 행동으로는 너무 멀리 가지 않는 것"이다.

계열 아이디어 대표 방법 특징
정책 제약 학습 정책을 행동 정책 근처로 묶음 BCQ, BEAR,[3] TD3+BC 행동 정책 추정이 필요하거나 BC 항 추가. 데이터가 나쁘면 개선 폭 제한
가치 정규화(보수적 추정) 데이터 밖 행동의 Q를 낮게 학습 CQL 정책의 가치에 대한 하한을 학습. 정규화 세기 α에 민감
표본 내 학습 데이터 밖 행동을 아예 평가하지 않음 IQL, AWR 계열[4] 안정적, 구현 단순, 온라인 미세조정에 유리
불확실성 기반 앙상블 분산이 큰 행동에 벌점 SAC-N, EDAC[5] 앙상블 비용
모델 기반 학습한 환경 모델로 가상 데이터를 만들되 모델 불확실성에 벌점 MOPO,[6] MOReL[7] 데이터가 적을 때 유리, 모델 오차 위험
시퀀스 모델링 강화 학습을 조건부 시퀀스 생성으로 바꿈 Decision Transformer 가치 함수·부트스트래핑 없음

정책 제약: BCQ와 TD3+BC

편집 원본 편집

BCQ(batch-constrained Q-learning)는 행동 공간 전체가 아니라 데이터에 나올 법한 행동 중에서만 max를 고른다. 변분 오토인코더로 데이터의 행동 분포를 학습해 후보 행동을 생성하고, 작은 교란 신경망으로 조정한 뒤 Q가 가장 큰 것을 고른다.[2] 연속 제어에서 임의의 고정 데이터로 효과적으로 학습한 첫 심층 강화 학습 알고리즘으로 제시되었다.

TD3+BC는 훨씬 단순하다. 온라인 알고리즘 TD3의 액터 손실에 행동 복제 항 하나를 더하고 상태를 정규화하는 것만으로 당시 최신 방법들과 비슷한 성능을 냈고, 계산 시간은 절반 이하로 줄었다고 보고했다.[8]

π=arg⁡maxπ 𝔼(s,a)∼𝒟[λQ(s,π(s))−(π(s)−a)2]

가치 정규화: CQL

편집 원본 편집

CQL(conservative Q-learning)은 Q 함수 자체를 보수적으로 학습한다. 정책이 고를 만한 행동의 Q는 밀어 내리고, 데이터에 있는 행동의 Q는 끌어 올리는 정규화 항을 벨만 오차에 더한다. 그 결과 학습한 Q의 정책 기대값이 실제 가치의 하한이 된다. 기존 딥 Q 학습이나 액터-크리틱에 몇 줄만 더해 붙일 수 있고, 이산·연속 제어 과제에서 기존 오프라인 방법보다 최종 이득이 2~5배 높은 경우가 많았다고 보고했다.[9]

자주 쓰는 CQL(H) 변형의 목표는 다음과 같다.

minQ α𝔼s∼𝒟[log⁡∑aexp⁡Q(s,a)−𝔼a∼𝒟[Q(s,a)]]+12𝔼(s,a,s′)∼𝒟[(Q(s,a)−ℬ^πQ¯(s,a))2]

첫 항의 log-sum-exp는 모든 행동의 Q 중 큰 값들을 부드럽게 골라 낮추고, 데이터 행동의 Q는 빼서(즉 올려서) 균형을 맞춘다. 이산 행동 DQN에 붙이면 다음과 같다.

import torch
import torch.nn.functional as F

def cql_dqn_loss(q_net, target_net, batch, gamma=0.99, alpha=1.0):
    """이산 행동 CQL(H): DQN 손실 + 보수적 정규화항"""
    s, a, r, s2, done = batch
    q_all = q_net(s)                                    # (B, A)
    q_data = q_all.gather(1, a[:, None]).squeeze(1)     # 데이터에 있는 행동의 Q
    with torch.no_grad():
        target = r + gamma * (1 - done) * target_net(s2).max(1).values
    td_loss = F.mse_loss(q_data, target)
    # logsumexp_a Q(s,a)는 모든 행동의 Q를 밀어 내리고, Q(s,a_data)는 끌어 올린다
    conservative = (torch.logsumexp(q_all, dim=1) - q_data).mean()
    return td_loss + alpha * conservative

연속 행동에서는 log-sum-exp를 정확히 계산할 수 없어, 균등 분포와 현재 정책에서 뽑은 행동들로 중요도 샘플링해 근사한다. α가 너무 크면 행동 복제에 가까워지고, 너무 작으면 과대평가가 돌아온다.

표본 내 학습: IQL

편집 원본 편집

IQL(implicit Q-learning)은 데이터 밖 행동을 한 번도 평가하지 않는다. 타깃의 maxa′Q(s′,a′)를 쓰지 않고, 데이터에 있는 행동들만으로 "이 상태에서 데이터 안의 좋은 행동이 낼 수 있는 가치"를 기대값 회귀(expectile regression)로 추정한다.[10]

LV(ψ)=𝔼(s,a)∼𝒟[L2τ(Qθ¯(s,a)−Vψ(s))],L2τ(u)=|τ−𝟙(u<0)|u2

LQ(θ)=𝔼(s,a,s′)∼𝒟[(r+γVψ(s′)−Qθ(s,a))2]

τ=0.5이면 평균(행동 정책의 가치)이고, τ→1이면 데이터에 있는 행동 중 최대에 가까워진다. 정책은 마지막에 어드밴티지 가중 행동 복제로 뽑는다.

Lπ(ϕ)=−𝔼(s,a)∼𝒟[exp⁡(β(Qθ¯(s,a)−Vψ(s)))log⁡πϕ(a∣s)]

def expectile_loss(diff, tau=0.7):
    """IQL의 가치 학습: diff = Q(s,a) - V(s). tau>0.5면 V가 Q 분포의 위쪽을 따라간다"""
    weight = torch.where(diff > 0, tau, 1 - tau)
    return (weight * diff.pow(2)).mean()

def iql_losses(q_net, v_net, target_q, policy, batch, gamma=0.99, tau=0.7, beta=3.0):
    s, a, r, s2, done = batch                           # 연속 행동, a: (B, act_dim)
    with torch.no_grad():
        q_t = target_q(s, a)
    v = v_net(s)
    v_loss = expectile_loss(q_t - v, tau)               # 1) 데이터 행동만으로 V 학습
    with torch.no_grad():
        q_target = r + gamma * (1 - done) * v_net(s2)   # 다음 상태의 행동을 고르지 않는다
    q_loss = F.mse_loss(q_net(s, a), q_target)          # 2) Q 학습
    with torch.no_grad():
        w = torch.exp(beta * (q_t - v)).clamp(max=100.0)
    pi_loss = -(w * policy.log_prob(s, a)).mean()       # 3) 어드밴티지 가중 행동 복제
    return v_loss, q_loss, pi_loss

두 코드 조각은 임의 텐서로 형태와 실행을 로컬에서 확인했다. IQL 논문은 D4RL에서 당시 최고 수준 성능을 보고했고, 오프라인으로 초기화한 뒤 온라인 상호작용으로 미세조정할 때도 강하다고 했다.[10]

시퀀스 모델링: Decision Transformer

편집 원본 편집

Decision Transformer는 가치 함수도 정책 경사도 쓰지 않는다. 궤적을 (남은 목표 이득, 상태, 행동)의 토큰 열로 펼치고, 인과 마스크를 건 트랜스포머가 다음 행동을 예측하도록 지도 학습한다.[11]

τ=(R^1,s1,a1,R^2,s2,a2,…),R^t=∑t′=tTrt′

R^t는 그 시점부터 끝까지 받을 보상의 합(return-to-go)이다. 실행할 때는 첫 토큰에 원하는 목표 이득(예: 데이터의 최고 점수)을 넣고, 행동을 하나 할 때마다 받은 보상만큼 빼 가며 다음 행동을 생성한다. 논문은 아타리, OpenAI Gym, Key-to-Door 과제에서 당시 최고 수준 모델 프리 오프라인 방법과 같거나 나은 성능을 보고했다.[11] 허깅 페이스 Transformers에 DecisionTransformerModel로 구현되어 있다.

부트스트래핑이 없어 치명적 삼요소에서 자유롭고 대형 시퀀스 모델의 규모 확장을 그대로 쓸 수 있다. 반면 본질적으로 이득 조건부 지도 학습이라, 최적 정책을 찾으려면 동적 계획법 기반 방법보다 강한 가정이 필요하고 반례 MDP와 D4RL 실험에서 그 한계가 드러난다는 분석이 있다.[12] 환경이 확률적이면 운 좋게 높은 이득을 얻은 궤적의 행동을 따라 하는 문제도 있다.

벤치마크와 도구

편집 원본 편집
  • D4RL(2020): 오프라인 강화 학습 표준 벤치마크. 부분 학습된 에이전트 데이터만이 아니라 손으로 짠 제어기, 사람 시연, 다중 과제, 여러 정책을 섞은 데이터처럼 실제 응용에 가까운 성질의 데이터셋을 제공한다. MuJoCo 이동 과제(halfcheetah, hopper, walker2d의 random·medium·medium-replay·medium-expert 등), AntMaze, Adroit 손 조작 등이 있다.[13]
  • Minari: 파라마 재단이 관리하는 오프라인 강화 학습 데이터셋 API로, D4RL 데이터셋도 D4RL/ 이름공간으로 제공한다.[14]
  • d3rlpy: 오프라인 강화 학습 알고리즘 라이브러리. BC, BCQ, BEAR, CQL, IQL, AWAC, TD3+BC, Decision Transformer 등의 설정 클래스(d3rlpy.algos.CQLConfig 등)를 제공한다.[15]

실무 고려 사항

편집 원본 편집
  • 오프라인 정책 평가가 어렵다: 학습한 정책을 환경에서 돌려 볼 수 없으니, 좋은 정책인지 판단하는 것 자체가 문제다. 중요도 샘플링, 적합 Q 평가(FQE) 같은 오프 폴리시 평가(OPE) 방법을 쓰지만 분산이나 편향이 크다. 벤치마크에서는 시뮬레이터로 정책을 돌려 보며 하이퍼파라미터를 고를 수 있지만, 진짜 오프라인 설정에서는 그럴 수 없다.
  • 데이터 품질과 범위: 전문가 데이터만 있으면 행동 복제가 이미 강하고, 무작위 데이터만 있으면 좋은 행동이 없다. 오프라인 강화 학습의 이득은 다양한 품질이 섞인 데이터에서 가장 크다.
  • 보상 라벨: 로그에 보상이 없으면 사후에 붙여야 한다. 보상 설계가 잘못되면 보상 해킹과 같은 문제가 오프라인에서도 생긴다.
  • 오프라인 후 온라인: 실제 배치에서는 오프라인 사전 학습 후 제한된 온라인 미세조정을 하기도 하는데, CQL처럼 지나치게 보수적인 Q는 온라인 전환 초기에 성능이 떨어질 수 있다. IQL과 Cal-QL 같은 방법이 이를 다룬다.[16]

언어 모델과의 관계

편집 원본 편집

대형 언어 모델의 선호 학습에서 DPO처럼 미리 모은 선호 데이터로만 학습하는 방법은, 학습 중 새 응답을 생성하지 않는다는 점에서 오프라인 설정에 해당한다. 반면 PPO·GRPO 기반 RLHF는 학습 중 정책이 직접 응답을 생성하는 온라인 방법이다. 고정 데이터로만 학습하면 정책이 데이터 밖으로 나갔을 때 보상 추정을 믿을 수 없다는 오프라인 강화 학습의 문제의식이 언어 모델의 온라인·오프라인 정렬 방법 비교에서도 그대로 나타난다.

  1. ↑ 1.0 1.1 Sergey Levine, Aviral Kumar, George Tucker, Justin Fu, 〈Offline Reinforcement Learning: Tutorial, Review, and Perspectives on Open Problems〉, 2020. arXiv:2005.01643
  2. ↑ 2.0 2.1 Scott Fujimoto, David Meger, Doina Precup, 〈Off-Policy Deep Reinforcement Learning without Exploration〉, ICML 2019. arXiv:1812.02900
  3. ↑ Aviral Kumar 외, 〈Stabilizing Off-Policy Q-Learning via Bootstrapping Error Reduction〉, NeurIPS 2019. arXiv:1906.00949
  4. ↑ Xue Bin Peng 외, 〈Advantage-Weighted Regression: Simple and Scalable Off-Policy Reinforcement Learning〉, 2019. arXiv:1910.00177
  5. ↑ Gaon An 외, 〈Uncertainty-Based Offline Reinforcement Learning with Diversified Q-Ensemble〉, NeurIPS 2021. arXiv:2110.01548
  6. ↑ Tianhe Yu 외, 〈MOPO: Model-based Offline Policy Optimization〉, NeurIPS 2020. arXiv:2005.13239
  7. ↑ Rahul Kidambi 외, 〈MOReL: Model-Based Offline Reinforcement Learning〉, NeurIPS 2020. arXiv:2005.05951
  8. ↑ Scott Fujimoto, Shixiang Shane Gu, 〈A Minimalist Approach to Offline Reinforcement Learning〉, NeurIPS 2021. arXiv:2106.06860
  9. ↑ Aviral Kumar, Aurick Zhou, George Tucker, Sergey Levine, 〈Conservative Q-Learning for Offline Reinforcement Learning〉, NeurIPS 2020. arXiv:2006.04779
  10. ↑ 10.0 10.1 Ilya Kostrikov, Ashvin Nair, Sergey Levine, 〈Offline Reinforcement Learning with Implicit Q-Learning〉, ICLR 2022. arXiv:2110.06169
  11. ↑ 11.0 11.1 Lili Chen 외, 〈Decision Transformer: Reinforcement Learning via Sequence Modeling〉, NeurIPS 2021. arXiv:2106.01345
  12. ↑ David Brandfonbrener 외, 〈When does return-conditioned supervised learning work for offline reinforcement learning?〉, NeurIPS 2022. arXiv:2206.01079
  13. ↑ Justin Fu, Aviral Kumar, Ofir Nachum, George Tucker, Sergey Levine, 〈D4RL: Datasets for Deep Data-Driven Reinforcement Learning〉, 2020. arXiv:2004.07219
  14. ↑ Farama Foundation, Minari
  15. ↑ d3rlpy 문서, Algorithms
  16. ↑ Mitsuhiko Nakamoto 외, 〈Cal-QL: Calibrated Offline RL Pre-Training for Efficient Online Fine-Tuning〉, NeurIPS 2023. arXiv:2303.05479