본문 바로가기
Deep Learning

[모두RL-⑥] DQN

by 룰루셩 2022. 3. 7.

2022.03.07 - [Deep Learning/RL] - [모두RL-⑤] Q-Network에 이어서 김성훈 교수님의 모두를 위한 RL강좌 lecture 7을 듣고 작성하였다.

 


 

이번 강의에서는 CartPole이라는 게임으로 진행이 된다. 

카트(cart)가 있고 카트에는 막대기(pole)이 연결되어있다. 

카트를 오른쪽(+1) 왼쪽(-1)으로 움직여서(action) 막대기가 넘어지지 않도록 하는 게임이다. 


 

 

앞의 게시물에서 완성한 Q-network는 unstable하다.

 

이유

1. Correlations between samples

2. Non-stationary targets

 

 

 

1. Correlations between samples

위의 그림처럼 전체의 데이터를 모두 보지 않고, 몇 개의 인접한 sample만 골라서 본다면 모든 데이터로 예측하는 것과는 완전히 다르게 예측하게 될 것이다. 이것이 sample들 간의 correlation 때문이다. 

 

이 문제가 Q-network에서는 어떻게 나타난다는 것인지 보자.

 

5번 루프를 돌아 학습한다고 하자. 

각각의 루프에서 받아오는 환경들은 상당히 유사할 것이다.

어떤 action을 취할 때 환경이 조금씩 조금씩 바뀐다. 그래서 받아오는 데이터들이 굉장히 유사하고 연관성이 많다.(correlation)

 

2. Non-stationary targets

target이 움직인다.

Qpred = Q^(st,at|θ)

target = rt+γmaxaQ^(st+1,a|θ)

Qpred와 target이 같은 θ를 사용한다. 이는 같은 network를 학습시킨다는 뜻이다.

우리의 Qpred를 업데이트 시키면 target도 같이 업데이트 된다.

 

 

 

위의 문제들을 해결하기 위한 DQN의 솔루션은 다음과 같다.

 

1. Go deep

2. Capture and replay

   - correlation between samples

3. Separate networks: create a target network

   - Non-stationary targets

 

 

1. Go deep

여러 layer 사용

 

 

2. Experience replay

action을 취하는 루프를 돌면서 이 액션을 통해 상태(s)를 받아오게 된다.

이때, 학습하지 않고 저장한다. (buffer라는 데에 저장!)

수만 장을 저장하고 일정한 시간이 지나면 여기서 랜덤하게 몇 개 가져와서 학습을 시킨다.

랜덤하게 가져오면, 전체의 데이터 분포 비슷해질 것이다.

 

3. Separate target network

Qpred만 업데이트하도록 한다.

 

1) 네트워크를 복사한다. 

2) θ만 업데이트한다.

3) 어느정도 시간이 지난 다음에 (C 스텝마다) Q^=Q 복사한다.

 

 

 

이러한 방법을 써서 DQN으로 CartPole 게임을 학습시키면 빠른 epoch 내에 막대기가 안넘어지고 유지된다.

'Deep Learning' 카테고리의 다른 글

[XAI] SHAP  (0) 2022.03.28
[XAI] LIME  (1) 2022.03.22
[모두RL-⑤] Q-Network  (0) 2022.03.07
[모두RL-④] Stochastic (non-deterministic)  (0) 2022.03.07
[모두RL-③] E&E과 discounted future reward  (0) 2022.03.07