본문 바로가기
머신러닝, 딥러닝/Reinforcement Learning

DQN

by 행뱁 2022. 3. 12.

Q-network diverges

Q-network는 좋은 알고리즘이지만, 그다지 결과가 좋지 않다. (수렴하지 않음)

Google Deepmind에서 그를 고쳐 만들어 낸 것이 DQN이다.

 

2 Problems

기존 Q-network가 좋은 성과를 낼 수 없던 이유는 다음의 두 가지이다.

1) Correlation between samples

- action을 취하면서 environment가 조금씩 바뀌기 때문에 유사함

= sample들이 비슷함 (상관관계가 있음)

- 전체적 경향성을 보여줄 수 있는 data들이 아니라 유사한 (붙어있는) data들로 학습을 시키면 제대로 학습되지 않음

 

2) Non-stationary targets

- 즉, "target이 움직임"

- pred값을 target값에 가까이 하기 위해 θ값을 조정하는데, 동시에 target도 바뀌게 됨

- pred값과 target값이 같은 θ값을 공유했기 때문 (같은 네트워크를 사용)

- 화살을 쏘자마자 과녁을 움직인 격

 

3 Solutions

0) Go deep

- 여러 hidden layer를 둘 수록 여러 가지 상태를 담아낼 수 있음

 

1) Experience Replay ← Correlation between samples

- action을 취하고 reward, next_state를 받아오는 loop에서 학습을 시키지 않고,

- state, action, reward, next_state의 묶음을 buffer에 저장해두었다가 일정한 시간이 지나면 random하게 sample을 꺼내어 학습을 시킴 (Minibatch_작은 집단)

- 그러면 전체적 경향성을 보여줄 수 있는 data들을 뽑아낼 수 있음

 

2) Separate networks: create a target network ← Non-stationary targets

- pred값과 target값이 서로 다른 θ값을 가짐

- target값의 θ'은 두고 pred값의 θ만 update시키다가, 일정한 시간이 지나면 copy함 (θ' = θ)

- 네트워크를 서로 분리시켜 target값이 흔들리는 상황을 막음

 

 

Reference: Sung Kim 모두를 위한 RL강좌 정리

작성일: 2018. 11. 12.

댓글