블로그 이미지
Peter Note
Web & LLM FullStacker, Application Architecter, KnowHow Dispenser and Bike Rider

Publication

Category

Recent Post

2018. 7. 13. 16:10 Deep Learning/NN by Sung Kim

Q Network 강좌를 정리한다. 





Q Network 개념


실제 문제를 풀어가기에는 Q Table 구성 사이즈가 너무나 크다. 따라서 Network을 구성해서 푼다. 주어진 입력, 출력을 사용자가 조절하면서 State, Action주어 원하는 Output을 얻어낸다. 적은 table을 사용해서 원하는 결과를 얻어내는 것 



Gym Game에서 출력을 Action 4개로 보면 다음과 같다. 


상태만 주고 모든 가능한 액션을 얻어내자. 앞으로 아래 모델을 사용한다. 



 

비용에 대한 최소화를 공식화 하면 

- W: Weight, 

- y: 실제값

- cost: 비용




목표는 Optimal Q인 Q* 즉, y값을 구한다. Ws는 네트워크가 만들어낸 Q prediction이라 할 수 있다.  




Q hat을 붙이면 hat이 prediction을 의미한다. "시타 = 세타"를 weight 이다. 




이 알고리즘을 문장으로 풀어쓰면

- 초기 weight을 random하게 준다.

- 첫번째 상태를 준다. @(s) == 파이(에스) - one hot을 해준다.

- E-greedy를 사용해 가장 좋은 action을 취한다.

- 결과로 상태랑 reward를 준다.

- 학습을 한다. 


해당 알고리즘은 deep mind의 핵심 알고리즘이다. 코드화 하면



다음으로 학습을 시킨다. 



Yj값으 두개인데, Done이면 Rj이고, 중간 진행은 Rj + rmaxxQ(@=1,a:세타)이다. 

Q Network의 결과는 Q Table 보다 성능이 안좋다. 이를 좀 더 빠르게 할려면?

diverge(다이버즈): 분산되어 결과가 안 좋다의 뜻






DQN 개념 


강화학습의 가장 중요한 알고리즘이다. (강좌) 두가지 큰 문제는 2가지 이다. 



  - 샘플데이터간의 correlation: 샘플이 다양하지 않고 연관성(correlation)이 있다.   

  


  - target이 흔들린다. target은 Y Label 이다. 예) 화살을 쏘자 과녁이 움직이는 경우




DQN의 3가지 솔루션


1) Go deep

네트워크가 깊게 갈 수록 좋다. 


2) Experience replay

action의 state를 buffer에 저장한후 사용한다. D = buffer

 


buffer에서 random하게 가져오면 sample의 correlation을 해결할 수 있다. 



3) non-stationary targets 

타겟이 움직인다. 세타 Weight을 update하면 target도 움직인다. Target의 세타를 그대로 둔다. 두개의 Network에서 첫번째 Network에서 target을 가져와서 두번째 Network에서 사용한다. 




2015년 Deep Mind가 Nature에 연재한 논문 알고리즘






참조


- 김성훈 교수님의 Q Network 강좌

- 김성훈 교수님의 DQN 강좌

'Deep Learning > NN by Sung Kim' 카테고리의 다른 글

[Reinforcement Learning] 강화학습  (0) 2018.07.12
[RNN] Basic & Training 하기  (0) 2018.07.11
[RNN] Recurrent Neural Network 개념  (0) 2018.07.11
[CNN] Class, tf.layers, Ensemble  (0) 2018.07.11
[CNN] MNIST 99% 도전  (0) 2018.07.11
posted by Peter Note