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에 연재한 논문 알고리즘
참조
'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 |