본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Inverse reinforcement learning; 역강화 학습
전문가의 행동을 관찰해 그 행동을 가장 잘 설명하는 보상 함수를 거꾸로 추정하는 방법

역강화 학습(inverse reinforcement learning, IRL)은 강화 학습의 방향을 뒤집은 문제다. 강화 학습이 "보상 함수가 주어졌을 때 최적 정책은 무엇인가"를 묻는다면, 역강화 학습은 "전문가가 이렇게 행동했다면 그는 어떤 보상을 최대화하고 있었는가"를 묻는다. 환경 모델(또는 시뮬레이터)과 전문가 시연은 있지만 보상 함수가 없을 때 쓴다. 역강화 학습으로 얻은 보상을 다시 강화 학습에 넣어 정책을 얻는 것은 모방 학습의 한 방식이며, 이를 견습 학습(apprenticeship learning)이라고도 부른다.

보상을 직접 배우는 이유는 보상이 정책보다 과제를 더 간결하고 옮기기 쉽게 표현하기 때문이다. 운전의 목표를 "안전거리를 지키고, 연석에서 떨어지고, 적당한 속도로, 차선을 너무 자주 바꾸지 않는다" 같은 요소의 가중 합으로 보면, 사람은 운전은 잘해도 그 가중치를 직접 적기 어렵다.[1] 시연에서 이 가중치를 찾으면, 환경이 바뀌어도 그 보상으로 새 정책을 학습할 수 있다. 행동을 그대로 베끼는 행동 복제와 달리 공변량 이동 문제도 덜하다.

문제 정의와 모호성

편집 원본 편집

보상이 없는 MDP (S,A,P,γ)와 전문가 정책 πE가 만든 궤적들 {τi}가 주어진다. 목표는 πE가 최적(또는 거의 최적)이 되는 보상 함수 R을 찾는 것이다.

이 문제는 근본적으로 답이 하나로 정해지지 않는다(ill-posed). 모든 보상이 0인 R≡0에서는 모든 정책이 최적이므로 어떤 시연이든 "설명"한다. 보상에 양수를 곱하거나 퍼텐셜 기반 보상 성형 R′(s,a,s′)=R(s,a,s′)+γΦ(s′)−Φ(s)를 해도 최적 정책은 그대로다. 그래서 역강화 학습 알고리즘들은 여러 후보 중 하나를 고르는 기준을 덧붙인다는 점에서 갈린다.

2000년 앤드루 응과 스튜어트 러셀은 유한 상태 MDP에서 전문가 정책이 최적이 되는 조건을 선형 제약으로 쓰고, 전문가 정책과 다른 정책의 가치 차이를 최대로 벌리는 보상을 선형 계획법으로 찾는 알고리즘을 제시했다.[2]

특징 기대값 일치

편집 원본 편집

아빌과 응(2004)은 보상이 알려진 특징 ϕ(s)의 선형 결합 R(s)=w⊤ϕ(s)라고 가정했다. 그러면 정책의 가치는 할인된 특징 기대값(feature expectation) μ(π)=𝔼[∑tγtϕ(st)∣π]로 정해진다.

V(π)=w⊤μ(π)

학습한 정책의 특징 기대값이 전문가와 ‖μ(π)−μE‖≤ϵ만큼 가까우면, ‖w‖1≤1인 어떤 진짜 보상에 대해서도 성능 차이가 ϵ 이하다. 이 관찰에서 출발해 "현재 정책들과 전문가의 차이를 가장 크게 만드는 w를 찾고, 그 보상으로 강화 학습을 하고, 새 정책을 후보에 추가"하는 반복 알고리즘을 만들었다. 실험은 격자 세계와 고속도로 운전 시뮬레이션이었다.[1] 다만 특징 기대값이 같은 정책은 여러 개일 수 있어, 어느 정책(또는 정책들의 어떤 혼합)을 고를지가 여전히 모호하다.

최대 엔트로피 역강화 학습

편집 원본 편집

지바트 등(AAAI 2008)은 이 모호성을 최대 엔트로피 원리로 풀었다. 특징 기대값을 전문가와 맞추는 궤적 분포 중 엔트로피가 가장 큰, 즉 그 외에는 아무것도 가정하지 않는 분포를 고른다.[3] 결정론적 MDP에서 그 해는 궤적의 보상에 지수적으로 비례하는 분포다.

P(τ∣θ)=1Z(θ)exp⁡(θ⊤fτ),fτ=∑st∈τϕ(st)

보상이 같은 궤적은 같은 확률을 받고, 보상이 높은 궤적일수록 지수적으로 선호된다. 전문가가 완벽하지 않고 잡음이 섞인 시연을 해도 자연스럽게 모델링된다. 시연의 로그 우도를 최대화하면 기울기가 깔끔하게 나온다.

∇θℒ(θ)=1M∑ifτi⏟전문가 특징 기대값−∑τP(τ∣θ)fτ⏟모델 특징 기대값=f~−∑sDsϕ(s)

Ds는 현재 보상에서의 최적(최대 엔트로피) 정책을 따를 때 상태 s의 기대 방문 횟수다. 계산은 두 단계다.

  • 역방향 계산: 보상 r=Φθ로 소프트 가치 반복을 해 확률적 정책 π(a∣s)∝exp⁡(Q(s,a))를 구한다. 벨만 방정식의 max를 log-sum-exp로 바꾼 것이다.
  • 순방향 계산: 시작 상태 분포에서 그 정책을 따라 시점별 상태 방문 빈도를 전파해 더한다.

논문은 이 방법을 피츠버그 택시 기사 25명이 12주 동안 모은 10만 마일 넘는 GPS 주행 기록에 적용해 기사들의 경로 선호(도로 종류, 회전 비용)를 학습하고, 경로와 목적지 예측에 썼다.[3]

다음은 5×5 격자에서 상태별 보상(원핫 특징)을 복원하는 최소 구현이다. 넘파이와 사이파이만 쓴다.

import numpy as np
from scipy.special import logsumexp

def maxent_irl(P, features, demos, horizon, lr=0.1, iters=200):
    """P: (S, A, S) 전이 확률, features: (S, d), demos: 상태 인덱스 궤적 목록(길이 horizon)"""
    S, A, _ = P.shape
    f_expert = np.mean([features[traj].sum(0) for traj in demos], axis=0)   # 전문가 특징 기대값
    p0 = np.bincount([traj[0] for traj in demos], minlength=S) / len(demos)
    theta = np.zeros(features.shape[1])
    for _ in range(iters):
        r = features @ theta
        # 1) 역방향: 소프트 가치 반복으로 확률적 정책 pi(a|s) ∝ exp(Q(s,a)) 계산
        V = np.zeros(S); policies = []
        for _ in range(horizon):
            Q = r[:, None] + P @ V                  # (S, A)
            V = logsumexp(Q, axis=1)                # max 대신 log-sum-exp
            policies.append(np.exp(Q - V[:, None]))
        policies.reverse()                          # policies[t]: 남은 시간이 horizon-t인 정책
        # 2) 순방향: 그 정책으로 시점별 상태 방문 빈도 계산
        d, D = p0.copy(), np.zeros(S)
        for t in range(horizon):
            D += d
            d = np.einsum("s,sa,sat->t", d, policies[t], P)
        # 3) 기울기 = 전문가 특징 기대값 - 모델 특징 기대값
        theta += lr * (f_expert - features.T @ D)
    return features @ theta

# 5x5 격자, 행동 4개(상하좌우), 오른쪽 아래 칸(24)이 목표
n = 5; S, A = n * n, 4
P = np.zeros((S, A, S))
for s in range(S):
    i, j = divmod(s, n)
    for a, (di, dj) in enumerate([(-1, 0), (1, 0), (0, -1), (0, 1)]):
        i2, j2 = min(max(i + di, 0), n - 1), min(max(j + dj, 0), n - 1)
        P[s, a, i2 * n + j2] = 1.0
demo1 = [0, 1, 2, 3, 4, 9, 14, 19, 24, 24]        # 목표까지 가서 머무는 시연 두 개
demo2 = [0, 5, 10, 15, 20, 21, 22, 23, 24, 24]
demos = [demo1, demo2]
print(np.round(maxent_irl(P, np.eye(S), demos, horizon=10).reshape(n, n), 2))

로컬에서 실행하면 목표 칸의 보상이 약 6.0으로 가장 높고, 시연이 지나간 가장자리 칸이 그다음, 시연이 피한 안쪽 칸들이 음수로 나온다. 보상의 절대값은 상수 이동만큼 정해지지 않으므로 상대적인 크기만 의미가 있다.

이후 보상을 신경망으로 근사하는 심층 최대 엔트로피 역강화 학습, 상태 공간 전체를 계산할 수 없을 때 표본으로 분배 함수를 추정하는 방법(guided cost learning) 등으로 확장되었다.[4]

적대적 방법: GAIL과 AIRL

편집 원본 편집

고전 역강화 학습은 바깥 반복마다 강화 학습 문제를 끝까지 풀어야 해 비싸다. GAIL(generative adversarial imitation learning)은 보상을 명시적으로 복원하는 단계를 건너뛰고 시연에서 정책을 바로 뽑는다.[5] 호와 에르몬은 "최대 엔트로피 역강화 학습 후 강화 학습"을 합성하면 학습자 정책의 상태·행동 점유 측도(occupancy measure)를 전문가의 것과 맞추는 문제가 된다는 것을 보이고, 그 거리를 GAN의 판별기로 재는 방법을 제안했다.

판별기 Dψ(s,a)가 "전문가 데이터일 확률"을 출력한다고 하면 목표는

minπmaxψ 𝔼πE[log⁡Dψ(s,a)]+𝔼π[log⁡(1−Dψ(s,a))]−λH(π)

이다. 판별기는 전문가 쌍과 학습자 쌍을 구별하도록 학습하고, 정책은 판별기를 속이도록, 즉 r(s,a)=−log⁡(1−Dψ(s,a)) 같은 보상을 최대화하도록 강화 학습한다. 원 논문은 정책 갱신에 TRPO를 썼고, 고차원 연속 제어 과제에서 기존 모델 프리 모방 학습 방법보다 좋은 성능을 보고했다.[5]

GAIL의 판별기는 학습이 끝나면 정책과 균형을 이뤄 쓸모 있는 보상이 아니다. AIRL(adversarial inverse reinforcement learning)은 판별기를 D=exp⁡f(s,a,s′)exp⁡f(s,a,s′)+π(a∣s) 꼴로 제한하고 f를 보상 항과 퍼텐셜 성형 항으로 나눠, 환경 동역학이 바뀌어도 쓸 수 있는 보상을 복원하도록 했다.[6]

방법 연도 보상 표현 모호성 해소 기준 내부 루프 보상 복원
응·러셀 2000 표 또는 선형 가치 차이(마진) 최대화 선형 계획법 함
견습 학습(아빌·응) 2004 특징 선형 특징 기대값 일치 매 반복 강화 학습 함(정책 혼합 출력)
최대 엔트로피 IRL 2008 특징 선형(이후 신경망) 최대 엔트로피 소프트 가치 반복 함
GAIL 2016 판별기(보상 아님) 점유 측도 일치 + 엔트로피 정책 경사(TRPO) 안 함
AIRL 2017 신경망 적대적 + 구조 제약 정책 경사 함, 동역학 변화에 강함

응용과 관련 분야

편집 원본 편집
  • 운전·경로 예측: 최대 엔트로피 IRL의 택시 경로 예측, 자율주행에서 사람 운전자 행동 모델링.
  • 로봇: 사람 시연에서 과제의 의도를 보상으로 뽑아 다른 로봇이나 환경으로 옮긴다.
  • 선호 기반 보상 학습: 시연 대신 사람이 두 행동 중 어느 쪽이 나은지 비교 판단한 데이터로 보상 함수를 학습하는 방법이 2017년 크리스티아노 등에서 나왔다.[7] 사람의 판단에서 보상을 추정한다는 점에서 역강화 학습과 같은 계열이며, RLHF의 보상 모델이 이 방식이다.
  • 인공지능 정렬: 사람의 행동에서 사람이 원하는 것을 추론해야 한다는 관점에서 IRL과 그 변형인 협력적 역강화 학습(CIRL)이 정렬 연구의 이론 틀로 논의된다.[8]
  • 보상 모호성은 완전히 사라지지 않는다. 같은 시연을 설명하는 보상이 여러 개면, 다른 환경으로 옮겼을 때 서로 다른 행동을 낳을 수 있다.
  • 전문가가 최적이거나 볼츠만 합리적이라는 가정이 필요하다. 사람의 체계적 편향(근시안, 실수)은 잘못된 보상으로 해석된다.
  • 내부 루프에서 강화 학습을 반복해야 해 계산이 비싸다.
  • 적대적 방법은 GAN처럼 학습이 불안정하고 하이퍼파라미터에 민감하다.
  • imitation 라이브러리: Stable-Baselines3 기반 GAIL, AIRL, 행동 복제, DAgger 구현.
  1. ↑ 1.0 1.1 Pieter Abbeel, Andrew Y. Ng, 〈Apprenticeship Learning via Inverse Reinforcement Learning〉, ICML 2004. 논문
  2. ↑ Andrew Y. Ng, Stuart Russell, 〈Algorithms for Inverse Reinforcement Learning〉, ICML 2000. 논문
  3. ↑ 3.0 3.1 Brian D. Ziebart, Andrew Maas, J. Andrew Bagnell, Anind K. Dey, 〈Maximum Entropy Inverse Reinforcement Learning〉, AAAI 2008. 논문
  4. ↑ Chelsea Finn, Sergey Levine, Pieter Abbeel, 〈Guided Cost Learning: Deep Inverse Optimal Control via Policy Optimization〉, ICML 2016. arXiv:1603.00448
  5. ↑ 5.0 5.1 Jonathan Ho, Stefano Ermon, 〈Generative Adversarial Imitation Learning〉, NIPS 2016. arXiv:1606.03476
  6. ↑ Justin Fu, Katie Luo, Sergey Levine, 〈Learning Robust Rewards with Adversarial Inverse Reinforcement Learning〉, ICLR 2018. arXiv:1710.11248
  7. ↑ Paul Christiano 외, 〈Deep reinforcement learning from human preferences〉, NIPS 2017. arXiv:1706.03741
  8. ↑ Dylan Hadfield-Menell, Anca Dragan, Pieter Abbeel, Stuart Russell, 〈Cooperative Inverse Reinforcement Learning〉, NIPS 2016. arXiv:1606.03137