[시즌RL].Lecture 7 - DQN

* 이 글은 홍콩과기대 김성훈 교수님의 무료 동영상 강좌 "모두를 위한 머신러닝과 딥러닝 강의"를 보고 요점을 정리한 글 입니다.

DQN

대부분의 Reinforcement Learning을 적용시키는 부분은 카메라를 통해 입력받은 화면을 사용하기 때문에 Q-Table로는 표현하기가 매우 어렵습니다. 이러한 이유 때문에 Q-Table을 대체할 것을 선택하였고 대안인 Neural Network를 사용한 방법을 Q-Network라고 합니다.

 

Q-Network의 알고리즘은 매우 훌륭하지만 실질적으로 실행시켜보면 잘 돌아가지 않습니다. 그 이유는 2가지 요인 때문인데 첫번째 요인은 Sample Data들 간의 연관성을 고려해야 한다는 점이고 두번째 요인은 예측한 값을 비교해야하는 값이 안정되어 있지 않다는 점 입니다.

 

이 2가지 요인들 때문에 오랫동안 큰 발전이 없었던 Q-Network를 Google의 DeepMind가 해결하였고 이 해결한 방법을 적용한 Q-Network를 DQN이라고 합니다.

 

Q-Network의 문제점

위에서 설명한 대로 Q-Network의 문제점은 "Sample Data들 간의 연관성"와 "비교해야하는 값(Target)의 불안정성"입니다.

 

어떠한 State에서 Action을 취한뒤 얻는 다음 State는 이전 State와 굉장히 유사합니다. 만약 일반적인 Q-Learning의 알고리즘을 실행시켜본다면 연속된 유사한 State들을 사용해서 학습이 진행되기 때문에 전혀 이상한 방향으로 학습이 될 가능성이 높습니다. 이러한 이유 때문에 Sample Data들이 유사하기 때문에 발생하는 연관성을 고려해야만 합니다.

 

다음으로 Q-Network의 학습을 수식으로 표현하면  Equation (1)과 같습니다.

 

$$ \min_\theta \sum_{t=0}^T [\hat{Q}(s_t, a_t|\theta) - (r_t + \gamma \max_{a'} \hat{Q}(s_{t+1}, a'|\theta))]^2 $$ (1)

 

위의 수식에서 볼 수 있드시 수식에서 사용되는 현재 State에서의 Q값과 비교해야할 Target값에서 사용되는 다음 State에서의 Q 값은 같은 를 사용합니다. 이 말은 동일한 Neural Network를 사용해서 학습을 한다는 의미입니다. 예측값과 Target값의 차이의 제곱을 더하는 Cost Function을 학습을 반복하면서 줄여나가야 합니다. 하지만 학습을 하면서 바뀐 Neural Network가 다음 State의 값에도 영향을 끼치게 되면서 예측값을 비교해야 할 Target값 또한 바뀌게 됩니다. 이러한 이유 때문에 학습이 잘 되지 않습니다.

 

DQN의 해결 방법

DQN에서는 위에서 언급한 Q-Network의 2가지 문제점을 3가지 방법을 적용시킴으로서 해결하였습니다. 이 3가지 방법은 아래와 같습니다.

 

- Neural Network를 Deep하게 만든다.
- 경험했던 것을 가져와서 학습한다.(Experience Replay)
- 네트워크를 분리한다.(Separate Networks)

 

첫번째 방법인 Neural Network를 Deep하게 만드는 것은 좋은 학습을 하기 위한 가장 일반적인 방법들 중 하나입니다. Q-Network에서도 깊이를 깊게 만든다면 충분히 학습의 효과를 증가 시킬 수 있을 것 입니다.

 

두번째 방법인 경험했던 것을 가져와서 학습한다는 방법은 Q-Network의 문제점인 Sample Data들 간의 연관성 문제를 해결하기 위한 방법입니다. 이 방법을 간단히 설명하면 State에서 선택 가능한 모든 Action들에 대하여 선택하였을 때 Reward와 다음 State에 대한 정보를 모두 Buffer에 저장한 후 저장한 것들 중 Random하게 Data를 선택하여 학습하는데 사용하는 방법입니다. 여러개의 Data를 학습한 뒤 각각의 결과들을 모두 수렴하여 가장 좋은 하나의 결과를 만든다면 Data들 간의 연관성 문제를 충분히 해결할 수 있을 것입니다.

 

 마지막으로 세번째 방법인 네트워크를 분리하는 방법은 Target값의 불안정성을 해결하기 위한 방법입니다. Q-Network의 수식에서도 확인 가능하듯이 예측값과 Target값 모두 1개의 Neural Network를 사용하기 때문에 발생하는 이 문제점은 네트워크를 2개를 사용함으로써 해결이 가능합니다. 먼저 현재 State에서 사용되는 Neural Network만을 변화시키면서 학습을 해준 뒤 다음 State에서 사용되는 Neural Network를 현재 State에서 사용되는 것과 동일하게 바꾸어 줍니다. 이 방법을 사용하면 Target값의 불안정성 문제를 해결할 수 있을 것입니다. 새로운 수식으로 표현하면 Equation (2)와 같습니다.

 

$$ \min_\theta \sum_{t=0}^T [\hat{Q}(s_t, a_t|\theta) - (r_t + \gamma \max_{a'} \hat{Q}(s_{t+1}, a'|\bar{\theta}))]^2 $$ (2)