A.I/RL by Sung Kim

Lecture 7 : DQN

궁선이 2019. 1. 28. 21:21

이 내용은 Sung Kim 교수님의 모두를 위한 RL 강좌를 정리한 내용입니다.


https://youtu.be/S1Y9eys2bdg


----------------------------------------------------------------------------------------------------------------------

이전 Lecture 6 에서 Q-Network의 문제점으로


1. Correlations between samples

2. Non-stationary targets 


두 가지를 말하며 Q-Network는 Optimal Q에 수렴하지 않는다고 했습니다.


그러나 구글 DeepMind 팀에서 이 문제를 해결하였고, 해결한 알고리즘의 이름이 바로 Deep Q-Network 입니다.


문제점을 설명하고 해결법을 설명하도록 하겠습니다.



문제점


1. Correlations between samples


Q-Network는 학습을 진행하면서 Input 데이터를 입력받을때 아래 CartPole 예제와 같이 비슷한 데이터를 연속으로 받습니다.


비슷한 데이터들은 아래 그림처럼 비슷한 위치에 몰려있어서 정상적인 학습을 방해합니다.




2. Non-stationary targets


Q-Network 에서 prediction과 target은 모두 하나의 네트워크를 공유합니다. 하나의 네트워크에서 predicton, target 의 값이 구해진다는 의미입니다.

만약에 아래 수식에서 Y prediction 이 업데이트 된다면, Y target의 값또한 움직입니다.



예를들어 여러분이 화살로 과녁을 맞추어야 합니다. 그러나 과녁이 나무에 가려서 여러분이 옆으로 움직였습니다.

그런데 가만히 있어야 할 과녁이 같이 움직이더니 나무에 다시 가려져 버렸습니다. 그래서 다시 여러분이 움직였더니 과녁이 또다시 움직입니다.


target과 prediction이 같이 움직이는 문제로인해 학습이 제대로 진행되지 않습니다.



해결법


1. Go deep


신경망의 층을 깊게합니다.




2. Capture and replay


Correlation between samples 의 해결법 입니다.

연속해서 데이터가 들어오는대데이터를 사용하면 비슷한 데이터들을 학습하게 되니, 차라리 데이터를 처음부터 끝까지 전부다 쌓아 놓은 뒤 그 안에서 랜덤하게 뽑자는게 Capture and replay의 아이디어 입니다. 


1) agent가 State S에서  Action A를 실행합니다.

2) Environment가 반환하는 Reward R과 State S'  묶어 (S, A, R, S') 의 데이터를 만듭니다.

3) 만들어진 데이터를 바로 학습에 사용하지 않고 버퍼에 저장합니다.

4) 1~3 단계를 n번 반복하여 버퍼에 데이터를 축적합니다.

5) 버퍼에 축적된 데이터들 중에서 랜덤하게 데이터를 뽑아서 학습을 시킵니다.



이렇게 데이터를 랜덤하게 뽑는다면 다음 그림처럼 전체 데이터의 분포와 비슷하게 데이터들이 뽑히게 됩니다.




3. Separate networks: create a target network


Non-stationary targets의 해결법 입니다.

Prediction과 target이 같은 네트워크를 사용해서 문제가 일어난다면, target용 네트워크를 하나 더 만들어서 target이 사용하게 해주자는게 아이디어 입니다.


1) Prediction 은 Prediction용 네트워크에서 업데이트를 진행합니다.

2) Target은 Target용 네트워크에서 Target값을 가져옵니다.

3) 계속 학습을 진행하면서 Prediction의 네트워크를 업데이트 합니다.

4) n-step 마다 Prediction 네트워크를 Target 네트워크에 복사합니다.

5) 다시 1번 부터 반복합니다.





전체 알고리즘







강좌에 나오는 코드는 다음 Github에 구현해 놓았습니다.

https://github.com/whitesoil/ReinforceLearningZeroToAll


DQN paper

https://www.nature.com/articles/nature14236


DQN source code

https://sites.google.com/a/deepmind.com/dqn/