HakuCode na matata

[SAC] Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor 본문

Machine Learning/Reinforcement Learning

[SAC] Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor

@tai_haku 2022. 6. 23. 02:08
반응형

Key Features

  • SAC(Soft Actor-Critic)는 엔트로피 최대화 프레임워크 기반의 Off-policy Actor-Critic 알고리즘
  • SAC는 정책과 가치함수 근사를 기반으로 하는 Soft Policy Iteration알고리즘
  • SAC의 특징은 기존 RL 알고리즘들과 동일하게 보상의 기댓값을 최대화하면서 동시에 정보량이 적은(엔트로피가 높은) 정책을 구성하여 샘플의 다양성을 확보한다는 것

Background

실제 환경 적용에 있어서의 Model-free 알고리즘의 어려움

  • Model-free + On-policy
    • 샘플 효율 저하(갱신 마다 샘플링 과정 필요)
  • Model-free + Off-policy
    • 연속적인 상태 및 행동 공간을 가진 과제에 대해 보이는 높은 샘플 복잡도
  • DDPG
    • 샘플 효율 → Off-Policy로 해결
    • 샘플 복잡도 → Policy Gradient Algorithm기반이라 해결
    • 하지만, 하이퍼파라미터 변화에 대한 민감성 높음(Robustness problem)
    • 또한, 수렴성도 약함(Weak convergence)
  • 이에 따라, 아래의 조건을 만족하는 새 알고리즘 필요
    • 연속공간에 대해 적용 가능한 알고리즘 → PG계열 알고리즘
    • 샘플효율이 좋은 알고리즘 → Off-policy 알고리즘
    • 하이퍼파라미터 민감성 낮음 → Robustness
    • 수렴성질 높음 → Strong convergence

엔트로피 최대화 프레임워크

  • SAC에서는 기존 RL의 목표인 기대보상의 최대화와 더불어 엔트로피 최대화 프레임워크를 사용
  • 이에 대한 내용은 아래 수식을 통해 확인할 수 있음

$$ J(\pi)=\overset{T}{\underset{t=0}{\sum}}\mathbb{E}{(s_t,a_t)\sim\rho\pi}[r(s_t,a_t)+\alpha\mathcal{H}(\pi(\cdot|s_t))] $$

  • 수식
    • 보상과 엔트로피의 합의 기댓값 식을 목적함수로 설정
    • 대괄호 내 1번째 항 = 기존 RL에서 고려하는 ‘보상’
    • 대괄호 내 2번째 항 = 엔트로피 가중치($\alpha$) $\times$ 정책($\pi$) 상 상태($s$)의 엔트로피($\mathcal{H}(\pi(\cdot|s))$)
      • 이때, 엔트로피 가중치($\alpha$)는 $[0,1]$구간을 가짐
        • $if\ \alpha=0$이면 기존 RL 목적함수
        • $if\ \alpha=1$이면 학습 시, Exploratory policy(탐험지향적인 정책)구성
  • 상기 수식에서 시사하는 바는 다음과 같다
    • 정책은 보상의 기대치가 높은 행동을 위주로 탐험을 장려하도록 학습
    • 정책은 최적해에 가까운 행동들에 대한 확률적 최적 정책을 구성할 수 있음

방법

SPI(Soft Policy Iteration)에서 SAC(Soft Actor-Critic)으로

  • SPI는 엔트로피 최대화 프레임워크를 사용한 정책반복알고리즘
  • SPI의 목적함수($1$), Q함수($2$), V함수($3$)는 아래와 같음

$$ \begin{align}&J(\pi)=\overset{T}{\underset{t=0}{\sum}}{(s_t,a_t)\sim\rho\pi}[r(s_t,a_t)+\alpha\mathcal{H}(\pi(\cdot|s))]\\&\mathcal{T}^\pi Q(s_t,a_t)\triangleq r(s_t,a_t)+\gamma\mathbb{E}{s{t+1}\sim p}[V(s_{t+1})]\\&where\ V(s_t)=\mathbb{E}_{a_t\sim \pi}[Q(s_t,a_t)-log\pi(a_t|s_t)]\end{align} $$

  • SPI는 다음의 수식에 따라 정책을 갱신

$$ \pi_{new}=\underset{\pi'\in\Pi}{argminD_{KL}}(\pi'(\cdot|s_t)||\frac{exp(Q^{\pi_{old}}(s_t,\cdot))}{Z^{\pi_{old}}(s_t)}) $$

  • 수식
    • 여기서 $Z$는 정규분포, 이는 다루기 어렵지만 경사계산에 영향을 주지 않기 때문에 무시 가능
    • 상기 수식에 따른 갱신의 결과로 구 정책보다 목적함수의 관점에서 높은 가치를 갖는 새 정책을 얻을 수 있음
  • SPI알고리즘은 Soft Policy Evaluation 과정과 Soft Policy Improvement 과정을 번갈아가며 엔트로피 최대화를 위한 최적 정책을 찾는 알고리즘
  • SPI알고리즘은 확실히 최적 정책으로 수렴함이 보증된 알고리즘이나 2가지 단점이 존재
    1. 요구 연산량 많음
    2. Tabular(테이블 방식의) case에 대해서만 적용 가능
  • 위 2가지 문제를 해결하기 위해 SPI에 Approximation(근사화) 방법을 도입 → SAC
  • SAC는 2가지 네트워크 사용 → Actor & Critic
  • Actor와 Critic은 Stochastic Gradient Descent(이하 SGD) 기반 갱신을 통해 정책, Q함수, V함수로 근사화 됨
  • 학습 과정에서 V함수는 Soft value를 근사하는데 여기에는 추가적인 함수추정기가 필요하지않음
    • 정책, Q함수, V함수 간 상관관계가 존재하기 때문(방정식 3)
    • 하지만, 이들에 대한 분리된 함수추정기를 유지하는 것은 학습 안정화에 도움을 줌
    • Soft V함수는 아래의 방정식과 같이 Residual Error(잔차 에러)를 최소화 하는 방향으로 학습함
    $$ \begin{align*}&J_V(\psi)=\mathbb{E}{s_t\sim \mathcal{D}}[\frac{1}{2}(V\psi(s_t)-\mathbb{E}{a_t\sim \pi\phi}[Q_{\theta}(s_t,a_t)-log\pi_{\phi}(a_t|s_t)])^2]\end{align*} $$
    • 수식
      • $\mathcal{D}$ → 이전에 샘플링된 상태-행동 쌍(즉, 리플레이 메모리 버퍼)의 분포
      • 상기 방정식은 아래와 같은 비편향 추정기로 평가될 수 있음
      $$ \hat{\nabla}{\psi}J_V(\psi)=\nabla\psi V_\psi(s_t)(V_\psi(s_t))-Q_\theta(s_t,a_t)+log\pi_\phi(a_t|s_t)) $$
  • 상기 추정기에서의 행동 $a_t$는 버퍼가 아닌 현재 정책 $\pi$에서 추출
  • Soft Q함수의 파라미터 들은 Soft Bellman Residual Error(소프트 벨만 잔차 에러)를 최소화 하기 위해 아래와 같은 방정식을 기반으로 갱신

$$ \begin{align*}&J_Q(\theta)=\mathbb{E}{(s_t,a_t)\sim\mathcal{D}}[\frac{1}{2}(Q\theta(s_t,a_t)-\hat{Q}(s_t,a_t))^2]\\&with\ \hat{Q}(s_t,a_t)=r(s_t,a_t)+\gamma\mathbb{E}{s{t+1}\sim p}[V_{\bar{\psi}}(s_{t+1})]\end{align*} $$

  • 그리고 이러한 수식은 SGD에 의해 다시금 아래와 같은 수식으로 최적화 될 수 있음

$$ \hat{\nabla}{\theta}J_Q(\theta)=\nabla\theta Q_\theta(a_t,s_t)(Q_\theta(s_t,a_t)-r(s_t,a_t)-\gamma V_{\bar{\psi}}(s_{t+1}) $$

  • 상기한 갱신식은 타겟네트워크 $V_{\bar{\psi}}$를 사용하며, 이때 파라미터 $\bar{\psi}$는 지수적으로 평균이 이동되며 이는 학습을 안정화 시킴
  • 또는, 현재 가중치값과 주기적으로 일치하도록 갱신될 수 있음
  • 결과적으로 정책의 파라미터들은 아래와 같은 KL발산식의 기댓값을 최소화하는 방향으로 갱신

$$ J_\pi(\phi)=\mathbb{E}{s_t\sim\mathcal{D}}[D{KL}(\pi_\phi(\cdot|s_t)||\frac{exp(Q_\theta(s_t,\cdot))}{Z_\theta(s_t)})] $$

  • 상기 식에서 목적함수를 최소화하는 방법에는 몇가지가 존재함
  • 현재 상황에서는 목표 확률밀도함수는 미분가능한 신경망으로 표현된 Q함수
  • 따라서, Reparameterization trick(재 파라미터화 트릭)을 사용하기 수월
  • 또한, 이 과정에서 적은 분산 추정기 얻음
  • 결과적으로 아래와 같이 정책식을 수정할 수 있음

$$ J_\pi(\theta)=\mathbb{E}{s_t\sim\mathcal{D},\epsilon_t\sim\mathcal{N}}[log\pi\phi(f_\phi)(\epsilon_t;s_t|s_t)-Q_\theta(s_t,f_\phi(\epsilon_t;s_t))] $$

  • 수식
    • $a_t=f_\phi(\epsilon_t;s_t)$ → 신경망 변환을 사용하여 재 파라미터화된 정책
    • $\pi_\phi$ → 이 역시, 암묵적으로 $f_\phi$로 정의
    • 기존에 사용한 Partition function $Z$는 연산 간 독립관계를 갖으므로 생략
  • 따라서, 정책경사근사식은 아래와 같음

$$ \begin{align*}&\hat{\nabla}\phi J\pi(\phi)=\nabla_\phi log\pi_\phi(a_t|s_t)+(\nabla_{a_t}log\pi_\phi(a_t|s_t)-\nabla_{a_t}Q(s_t,a_t))\nabla_\phi f_\phi(\epsilon;s_t)\\&where\ a_t\ is\ evaluated\ at\ f_\phi(\epsilon_t;s_t)\end{align*} $$

  • 이 비편향 경사추정은 DDPG 스타일의 정책 경사를 다루기 쉬운 확률적 경사로 확장한 것
  • 추가적으로 Improvement step(개선 단계)에서, 양의 편향을 줄이기 위해 2개의 Q함수를 사용(TD3와 동일한 메커니즘) → 학습속도 개선

알고리즘 의사코드

Sudo code for SAC

반응형
Comments