DQN vs DDQN

이두현·2022년 3월 3일
0

논문과 구현 코드를 읽으며 혼동이 왔던 부분 비교 정리

DQN과 DDQN 차이는 target action value를 정하는데 있다.
DQN경우 target value y는
r+γmaxaQ(s,a;θt)r+\gamma max_aQ(s',a';\theta_t) 이다.

이를 DDQN과 비교하기 위해 동치인 식으로 표현하면
r+γQ(s,argmaxaQ(s,a;θt);θt)r+\gamma Q(s',argmax_aQ(s',a;\theta_t);\theta_t) 와 같이 나타낼 수 있다.
(같은 Q를 최대로 만드는 a를 뽑는 과정을 나타낸 식이기 때문에)

하지만 action 선정 parameter 와 Q 계산(evaluation) parameter가 동일한 경우에 대한 문제 제기를 통해 DDQN 방식이 선보여졌으며 DDQN은 아래와 같은 target value를 지향한다.
r+γQ(s,argmaxaQ(s,a;θt);θt1)r+\gamma Q(s',argmax_aQ(s',a;\theta_t);\theta_{t-1})
(Double Q-learning 과는 또 다름에 주의)

구현 관점

먼저 target_net 의 경우 t-1 시점의 parameter를 소유한 network, policy_net은 현재시점인 t 시점의 parameter를 소유한 network 임을 알아두자

DQN의 경우 target value는 r+γmaxaQ(s,a;θt1)r+\gamma max_aQ(s',a';\theta_{t-1}) , 맞춰가려는 비교 대상은 Q(s,a;θt)Q(s,a;\theta_t) 임을 상기하자
이 둘의 L2 norm 을 최소화 하는 것이 loss function이며 둘의 parameter 시점이 다른 이유는 매 timestep 마다 이 값이 같다면 target 이 계속 변해 크게 flunctuation이 일어날 것이기 때문이다.

DQN은 target value를 target_net 에서 추출하고 현재 Q를 policy_net에서 계산한다.

DDQN의 경우 target value는 r+γQ(s,argmaxaQ(s,a;θt);θt1)r+\gamma Q(s',argmax_aQ(s',a;\theta_t);\theta_{t-1}) 이므로 action 선택 시 policy_net에서, 이를 통해 Q를 평가할 때는 target_net을 통해 계산해야 함을 알 수 있다. 또한 이 값에 가까워지려는 비교대상은 Q(s,a;θt)Q(s,a;\theta_t)이므로 이 또한 policy_net에서 와야함을 알 수 있다.

정리하자면 둘의 차이는 DDQN의 action 선택은 policy_net에서 이뤄지고 DQN은 target_net 에서 이뤄진다는 점이고 나머지는 최대한 동일하게 응용한다고 논문에도 명시되어 있다.

profile
0100101

0개의 댓글