강화 학습/바닥부터 배우는 강화 학습

바닥부터 배우는 강화 학습 | 08. 가치 기반 에이전트

with-RL 2023. 1. 21. 20:59

'바닥부터 배우는 강화 학습' 8장에는 가치 기반 에이전트를 학습하는 방법에 대해서 설명하고 있습니다. 아래 내용은 공부하면서 핵심 내용을 정리한 것입니다.

참고자료

  • 도서: 바닥부터 배우는 강화 학습 / 8장 가치 기반 에이전트

 

  • 이번 챕터에서 다룰 문제
    모델 프리
    상태 공간 (state space)과 액션 공간(action space)이 매우 커서 테이블에 담지 못할 상황
  • 강화 학습에 뉴럴넷을 접목시키는 접근법 2가지
    함수 $v_{\pi}(s)$나 $q_{\pi}(s)$를 뉴럴넷으로 표현하는 방식
    정책 함수 $\pi(a|s)$를 뉴럴넷으로 표현하는 방식

  • 가치 기반(value-based): 가치 함수에 근거하여 액션을 선택
    모델-프리 상황에서는 $v(s)$만 가지고 액션을 정할 수 없기 때문에 액션-가치 함수 $q(s, a)$ 사용
  • 정책 기반(policy-based): 정책 함수 $\pi(a|s)$를 보고 직접 액션을 선택
  • 액터-크리틱(actor-critic): 가치 함수와 정책 함수를 모두 사용
    액터: "행동하는 녀석" 정책 $\pi$를 뜻 함
    크리틱:  "비평가" 가치 함수 $v(s)$ 또는 $q(s, a)$를 뜻 함

8.1 밸류 네트워크의 학습

  • 정책 $\pi$가 고정되어 있을 때 뉴럴넷을 이용하여 $\pi$의 가치 함수 $v_{\pi}(s)$ 학습하는 방법
  • 밸류 네트워크(value netowrk): 뉴럴넷으로 이루어진 가치 함수 $v_{\theta}(s)$
  • 손실함수: $L(\theta)=(v_{true}(s) - v_{\theta}(s))^2$
    존재하는 모든 상태 $s$에 대해서 $L(\theta)$ 계산이 어려움
  • 기댓값 손실함수: $L(\theta)=\mathbb{E} \left [ (v_{true}(s) - v_{\theta}(s))^2 \right ]$
  • 그라디언트: $\nabla_{\theta} L(\theta)=- \mathbb{E} \left [ (v_{true}(s) - v_{\theta}(s)) \nabla_{\theta} v_{\theta}(s) \right ]$

$$\begin{equation}
\begin{split}
\theta' &= \theta - \alpha \nabla_{\theta}L(\theta) \\
&= \theta + \alpha (v_{true}(s) - v_{\theta}(s)) \nabla_{\theta}v_{\theta}(s)
\end{split}
\end{equation}$$

  • 위 식으로 $\theta$ 업데이트
  • 실제 상황에서는 실제 가치 함수인 $v_{true}(s)$가 없음. 몬테카를로 / TD 학습방법 사용 가능

 첫 번째 대안: 몬테카를로 리턴

$$V(s_t) \gets V(s_t) + \alpha(G_t - V(s_t))$$

  • 몬테카를로 방식을 이용해 테이블의 벨류값을 업데이트하는 수식

$$L(\theta)=\mathbb{E} \left [ (G_t - v_{\theta}(s))^2 \right ]$$

  • 손실 함수의 정답 $v_{true}(s)$ 자리에 $G_t$를 대입

$$\theta' = \theta + \alpha (G_t - v_{\theta}(s)) \nabla_{\theta}v_{\theta}(s)$$

  • 동일한 방식으로 $\theta$를 업데이트

 두 번째 대안: TD 타깃

$$L(\theta)=\mathbb{E} \left [ (r_{t+1} + \gamma v_{\theta}(s_{t+1}) - v_{\theta}(s))^2 \right ]$$

  • 손실 함수의 정답 $v_{true}(s)$ 자리에 $r_{t+1} + \gamma v_{\theta}(s_{t+1})$를 대입

$$\theta' = \theta + \alpha (r_{t+1} + \gamma v_{\theta}(s_{t+1}) - v_{\theta}(s)) \nabla_{\theta}v_{\theta}(s)$$

  • 동일한 방식으로 $\theta$를 업데이트
  • 위 수식에서 $v_{\theta}(s_{t+1})$을 상수로 취급해야 안정적인 학습 가능

8.2 딥 Q러닝

  • 가치 기반 에이전트는 명시적 정책(explicit policy)이 없음.
  • 액션-가치함수 $q(s, a)$를 이용. 내재된 정책(implicit policy)

이론적 배경 - Q러닝

$$\begin{equation}
\begin{split}
Q_*(s, a) &= \mathbb{E}_{s'} \left [ r + \gamma \underset{a'}{\mathrm{max}}Q_*(s', a') \right ] \\
Q(s, a) \gets Q(s, a) &+ \alpha (r + \gamma \underset{a'}{\mathrm{max}}Q(s', a') - Q(s, a))
\end{split}
\end{equation}$$

  • 벨만 최적 방정식과 테이블 업데이트 수식

$$L(\theta) = \mathbb{E} \left [ (r + \gamma \underset{a'}{\mathrm{max}} Q_{\theta}(s', a') - Q_{\theta}(s, a))^2 \right ]$$

  • 벨만 최적 방정식과 테이블 업데이트 수식을 뉴럴넷으로 확장

$$\theta' = \theta + \alpha \left ( r + \gamma \underset{a'}{\mathrm{max}} Q_{\theta}(s', a') - Q_{\theta}(s, a) \right ) \nabla_{\theta}Q_{\theta}(s, a)$$

  • 위 식을 이용하여 $\theta$를 업데이트해 나가면 $Q_{\theta}(s, a)$는 점점 최적의 액션-가치함수 $Q_{*}(s, a)$에 가까워짐
  • 기댓값 연산자를 없애기 위해 여러 개의 샘플을 뽑아서 평균을 이용해 업데이트함. 이처럼 복수의 데이터를 모아 놓은 것을 미니 배치(mini-batch)라 함
  • 미니 배치 사이즈(mini-batch size): 미니 배치를 구성할 데이터 개수

 

딥 Q러닝 pseudo code

  • $Q_{\theta}$의 파라미터 $\theta$를 초기화
  • 에이전트의 상태 $s$를 초기화 $(s \gets s_0)$
  • 에피소드가 끝날 때까지 다음을 반복
    $Q_{\theta}$에 대한 $\epsilon$ - greedy를 이용하여 액션 $a$를 선택
    $a$를 실행하여 $r$과 $s'$을 관측
    $s'$에서 $Q_{\theta}$에 대한 greedy를 이용하여 액션 $a'$을 선택
    $\theta$ 업데이트: $\theta \gets \theta + \alpha (r + \gamma Q_{\theta}(s', a') - Q_{\theta}(s, a))\nabla_{\theta}Q_{\theta}(s, a)$
    $s \gets s'$

 

  • Q러닝은 off-policy 학습
    실행할 액션을 선택하는 행동 정책: $\epsilon$ - greedy $Q_{\theta}$
    학습 대상이 되는 타깃 정책: greedy $Q_{\theta}$

 익스피어런스 리플레이어와 타깃 네트워크

익스피리언스 리플레이(Experience Replay)

  • "겪었던 경험을 재사용하면 더 좋지 않을까?" 하는 아이디어에서 출발
  • 하나의 상태 전이(transition) $e_t$는 $(s_t, a_t, r_t, s_{t+1})$로 표현 가능
    "상태 $s_t$에서 액션 $a_t$를 했더니 보상 $r_t$을 받고 다음 상태 $s_{t+1}$에 도착하였다"는 뜻
  • 리플레이 버퍼(replay buffer)
    가장 최근에 발생한 데이터 n개를 버퍼에 저장
    새로운 데이터가 하나 버퍼에 들어오면 가장 오래된 데이터를 하나 제거
    학습할 때는 버퍼에서 임의로 데이터를 뽑아서 사용. (예, 32개씩 미니 배치 단위로 학습)
    각각의 데이터 사이 상관성(correalation)이 작아서 더 효율적으로 학습 가능
    off-policy 알고리즘에만 사용할 수 있음

 

별도의 타깃 네트워크(Target Network)

  • 하나의 네트워크 $\theta$만 사용할 경우 $\theta_i$를 업데이트하여 $\theta_{i+1}$이 된 경우 정답도 함께 변경됨
    $R + \gamma \underset{A'}{\mathrm{max}} Q_{\theta_i} (S', A') \to R + \gamma \underset{A'}{\mathrm{max}} Q_{\theta_{i+1}} (S', A')$
  • 정답지가 자주 변하는 것은 학습의 안정성을 매우 떨어 뜨림

DQN 구현

  • 이 부분은 구현에 대한 코드가 설명되어 있습니다.