일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 지속적 개발
- 전역 인터프리터 락
- Maximum entropy
- Control variate
- n-step
- Maximazation bias
- 온폴리시
- Python Interpreter Lock
- 오프폴리시
- Interpreter Lock
- 파이썬 인터프리터 락
- Actor-Critic
- Reinforcement Learning
- Soft Actor-Critic
- docker tensorboard
- Few-shot learning
- 강화학습
- 병행성 제어
- Meta Learning
- Off-policy
- Concurrency Control
- 통합 개발
- 도커 텐서보드 연결
- Double learning
- Global Interpreter Lock
- 인터프리터 락
- MAML
- Importance sampling
- Tree backup
- 중요도 샘플링
- Today
- Total
HakuCode na matata
[SAC] Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor 본문
[SAC] Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor
@tai_haku 2022. 6. 23. 02:08Key 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(탐험지향적인 정책)구성
- 이때, 엔트로피 가중치($\alpha$)는 $[0,1]$구간을 가짐
- 상기 수식에서 시사하는 바는 다음과 같다
- 정책은 보상의 기대치가 높은 행동을 위주로 탐험을 장려하도록 학습
- 정책은 최적해에 가까운 행동들에 대한 확률적 최적 정책을 구성할 수 있음
방법
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가지 단점이 존재
- 요구 연산량 많음
- 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(잔차 에러)를 최소화 하는 방향으로 학습함
- 수식
- $\mathcal{D}$ → 이전에 샘플링된 상태-행동 쌍(즉, 리플레이 메모리 버퍼)의 분포
- 상기 방정식은 아래와 같은 비편향 추정기로 평가될 수 있음
- 상기 추정기에서의 행동 $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와 동일한 메커니즘) → 학습속도 개선
알고리즘 의사코드
'Machine Learning > Reinforcement Learning' 카테고리의 다른 글
[TRPO] Trust Region Policy Optimization (0) | 2022.07.07 |
---|---|
하쿠's 강화학습 :: [Ch. VII] n-step Bootstrapping (0) | 2020.10.24 |
하쿠's 강화학습 :: [Ch. VI] Temporal-Difference Learning (0) | 2020.10.13 |
하쿠's 강화학습 :: [Ch. V] Monte Carlo Methods (2) | 2020.10.04 |
하쿠's 강화학습 :: [Ch. IV] Dynamic Programming (0) | 2020.09.27 |