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 = $\hat{Q}(s_t,a_t|\theta)$
target = $r_t+\gamma \max_{a'} \hat{Q}(s_{t+1},a'|\theta)$
Qpred와 target이 같은 $\theta$를 사용한다. 이는 같은 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) $\theta$만 업데이트한다.
3) 어느정도 시간이 지난 다음에 (C 스텝마다) $\hat{Q}=Q$ 복사한다.
이러한 방법을 써서 DQN으로 CartPole 게임을 학습시키면 빠른 epoch 내에 막대기가 안넘어지고 유지된다.
'Deep Learning > RL' 카테고리의 다른 글
[모두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 |
[모두RL-②] Dummy Q-Learning (table) (0) | 2022.03.06 |
[모두RL-①] 강화학습 소개 (0) | 2022.03.04 |
댓글