DQN : Deep Q-Learning

Q-Network의 발산

강화학습을 NN으로 풀고자 하는 Q-Network는 수렴하지 않아서 잘 사용되지 않았다.
구글의 딥마인드가 DQN이라는 알고리즘을 제시해서 사용되기 시작했다.

Correlation Between Samples

Sample간에 Correlation을 갖고 있으면 prediction이 잘 안됨

Non-Stationary Target

학습의 결과에 따라서 Label이 같이 바뀌기 때문에 학습이 잘 안됨. θ\theta가 parameter니까...
minθtT[Q^(st,atθ)(rt+γmaxaQ^(st+1,aθ))]2min_{\theta}\sum_t^T[\hat Q(s_t,a_t|\theta)-(r_t+\gamma\max_{a'}\hat Q(s_{t+1},a'|\theta))]^2

DQN's Three Solution

1. Go Deep

Deep Neural Network를 사용한다.

2. Experience Relay

Action을 취한 것을 학습시키지 말고 (ϕt,at,rt,ϕt+1)(\phi_t, a_t, r_t, \phi_{t+1})DD에 저장하고, 학습 시킬때는 이 저장된 값들에서 Minibatch를 꺼내서 학습한다.

3. Separate Target Network

minθtT[Q(st,atθ)(rt+γmaxaQ^(st+1,aθˉ))]2min_{\theta}\sum_t^T[ Q(s_t,a_t|\theta)-(r_t+\gamma\max_{a'}\hat Q(s_{t+1},a'|\bar\theta))]^2
Q^\hat Q를 네트워크 하나에 두고 이를 고정시킨다.
학습을 할때 θ\theta에 대해 QQ를 학습 시키고,
일정 epoch이 지난 뒤 Q^=Q\hat Q = Q로 복사한다.
개똑똑하다...