Udacity Deep RL Nanodegree — Value Based Methods

커리큘럼 2 정리. 커리큘럼 2는 DQN 간단히 배우고 바로 프로젝트로 넘어간다.

Image for post
Image for post
빡세다..

Deep Reinforcement Learning

Deep RL에서 Q Table 대신 신경망으로 최적의 action-value function q를 나타내는 Deep Q-Networks(DQN)을 배운다. 하지만 이는 굉장히 불안정하다(관련논문) — 예측결과가 진동(Oscillation)하거나 발산(Diverse)한다는 뜻

따라서 이를 다루기 위해 두가지 주요 개념에 대해서 배운다.

  1. Experience Replay
  2. Fixed Q-Targets

Experience Replay

학습 경험을 저장해놓고 remind하며 학습. 이전까지의 학습은 한 번 학습하면 그 경험은 버려짐. 그걸 저장해놓고 여러번 학습하는 방법 — 문제 다시 풀기

주의사항: sequence correlation이 있을 수 있으므로 shuffle해야함 — replay buffer에 순서대로 저장되면 이를 다시 replay하는 과정에서 그 순서가 학습에 반영되고 순서간의 correlation이 생긴다고 함. 따라서 이를 sampling할 때 섞어서 sequence correlation을 제거해야함.

Fixed Q-Targets

매 step마다 가중치를 갱신하는 특성상 학습이 안정되지 않음. 매 step마다 가중치를 갱신하지 않고, target value를 계산하는 weight는 C step(일정 스탭)마다 갱신하는 방식을 통해 안정적인 학습을 함. ← 아래에서 추가설명

Deep Q-Learning Network(DQN)은 state가 입력으로 주어지고 결과로 각 action의 value(reward)예측한다. 이 때 내가 선택한 action의 value가 실제로 주어진 reward와 최대한 같도록 학습해야 한다.

하지만 실제 학습에서는 아래처럼 되어야하며

이번 step에서 action을 하면 얻는 보상 + 미래에 내가 얻을 보상의 합 
= 모델이 예측한 이번 step에서 action을 하면 얻는 보상

이중 미래의 보상을 Q-Learning 방식으로 얻으면 아래 그림이 되는데

딥Q러닝의 개선점 : 듀링더블DQN, 우선시된 경험의 재현 그리고 고정된 ...
https://blog.naver.com/PostView.nhn?blogId=itank000&logNo=221565475308&from=search&redirect=Log&widgetTypeCall=true&directAccess=false
  • Q Target = 우리의 모델이 예측해야하는 값
  • r(s, a) = 실제 reward
  • gamma * max(Q(s`, a)) = 우리 모델로 예측하는 미래보상(??)

문제는 미래의 보상을 얻을 때도 우리의 학습중인 예측 모델을 사용하게 된다는 것이다.

  1. 실제 reward를 제대로 맞추도록 학습해야하는데
  2. 실제 reward에 맞춰 모델을 학습하면
  3. 실제 reward도 바뀐다
  4. 실제 reward에는 모델로 얻은 미래의 보상가치가 포함되있기때문(…)

이걸 아래 그림처럼 나타내는데, 당근을 먹으려고 앞발을 내딛으면 당근이 움직여서 영영 먹지 못하는…

Image for post
Image for post

따라서 reward를 계산할 때 쓰는 모델은 따로 만든다. reward를 예측하는 모델과 동일한 아키텍처를 갖되, 가중치는 고정하고 정해진 일정 step마다 갱신한다(예측 모델의 가중치로 바꾼다). 그러면 reward는 일정 step까지는 고정되고 보다 안정적인 학습이 가능하다.

DQN Improvements

DQN에서 몇가지 발전된 기법을 소개

Double DQN(DDQN)

Q Target을 계산하고 action을 선택할 때 과연 이게 최선이라고 확신할 수 있을까? 학습 초기에는 당연히 불완전할 것이고 이는 학습을 잘못된 방향으로 이끌 수 있다. 때문에 next Q Target(미래의 보상)을 계산할 때, 이를 평가하는 파라미터 theta prime를 추가로 넣어서, 불안한 Q Value의 값이 지나치게 커지지 않도록 한다. 논문

위 포스트에 예제 코드가 있음.

기존 DQN에서 next Q target은 fixed된 거로 게산했으나. 위 예제에서는 online network(학습하려는 모델)로 next action을 알아내고, target network(fixed)로 알아낸 next action의 next reward를 가져와서 q update에 사용한다.

Prioritized Experience Replay

더 중요한 experience는 더 자주 꺼내서 학습시키는 방법이다. 더 중요한지 판단하는 기준은 TD Error의 절대값으로 한다. 즉 더 못맞춘 상황을 더 자주 학습한다. 하지만 이럴 경우 특정 experience에 편향될 수 있으므로 이 경우 가중치를 갱신할 때 값을 줘서 조금 덜 갱신되게한다. 논문

Dueling Network Architecture

Q Value를 계산하는 기존 방식과는 다르게, state-value라는 scalar 값 하나와, advantage(사실상 action)를 만들어낸 뒤 이 둘을 합쳐서 Q Value를 계산한다. 높은 V(가치)를 갖는 Q값은 커지고, 낮은 V를 갖는 Q값은 낮춰서 낮은 V는 최대한 덜 선택받도록 유도한다. 논문

Image for post
Image for post

예제 코드들을 보니까 별다른 추가 수식없이 신경망만 저렇게 나눠서 구성하는 것 같다.

마지막에는 이것저것 다른 extension들이 있으나 Google DeepMind가 공개한 Rainbow라는 모델이 state-of-the-art를 기록했다고 나온다.

리뷰

용어가 헷갈림 ㅠ,, Q Target, Q Target Next,,,, Online Model, Target Network,,,

References

Written by

2020.12.8 ~ 2022.6.9 군복무중 Serving in the South Korean Military Service

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store