본문 바로가기

> Reinforcement Learning/> Key Paper

[강화학습 Key Paper] Dueling DQN

본 포스트는 OpenAI에서 공개한 강화학습 교육자료인 Spinning Up의 도움을 받아, 강화학습(Reinforcement Learning, RL)에 대한 기초개념을 정리해보고자 제작한 시리즈의 일환입니다.

1)기초 지식 2)주요 논문, 3)최신 논문 의 순서로 시리즈를 정리하고자 합니다.

Spinning Up에서 정리해놓은 주요 RL 논문 중, 핵심 논문을 추려 리뷰를 진행합니다. 본 포스트를 읽기 전, 해당 논문을 가볍게 읽어보는 것을 추천합니다. 아래 링크에서 더욱 다양한 추천 논문을 찾아볼 수 있습니다.

Key Papers in Deep RL - Spinning Up documentation
What follows is a list of papers in deep RL that are worth reading. This is far from comprehensive, but should provide a useful starting point for someone looking to do research in the field.
https://spinningup.openai.com/en/latest/spinningup/keypapers.html

Dueling DQN

분류: Model-Free RL/Deep Q-Learning/Dueling DQN

이번 포스트에선 지난 포스트에서 살펴본 double DQN에 이어, advantage function을 도입하여 또 한차례 성능을 향상시킨 dueling DQN에 대해 살펴보겠습니다. 본 논문 역시 Google DeepMind에서 쓰인 논문입니다.

Abstract

통상 DQN의 Q network이 해당 state에서의 Q(s,a)Q(s,a)를 바로 표현했다면, dueling DQN은 advantage function과 value function을 따로 구하고, 이들을 합쳐 Q(s,a)Q(s,a)를 구합니다. 두 function estimator가 동시에 존재하며 Q를 추정한다는 점에서 dueling이라고 할 수 있겠네요.

Motivation

Network의 도식도를 먼저 봅시다.

위의 그림은 일반적인 DQN의 Q network를 나타낸 그림입니다. 아시는 것처럼 output은 input으로 들어온 state에 대한 Q function입니다. 아래의 그림은 value function과 advantage function의 두 갈래로 나뉘어진 data stream이 최종적으로 합쳐져(녹색 선) Q function estimation을 계산하는 것을 보여줍니다. Value function은 scalar값을 가지며, 상대값입니다. 즉 이전 상태에서 4였고, 지금 8이라면 이전 상태보다 좋은 state에 있는거구나 라고 해석해야 한다는 것입니다. 이렇게 두 갈래로 나누는 이유가 무엇일까요?

아래의 Fig. 2는 이를 자동차게임의 하나인 Atari Enduro 게임을 통해 직관적으로 보여줍니다.

각각 전방에 장애물이 없는 상황(위)과 있는 상황(아래)에 agent가 total expected return을 높이기 위해 어디에 집중해야할지 value(왼)와 advantage(오른)의 관점에서 바라본 것입니다. Value의 관점에서, 우리는 목적지를 향해 다가가는 것이 중요합니다. 때문에 agent는 지평선 근처를 집중하게 됩니다. 총 누적될 reward와 가장 연관깊은 곳이니까요. Advantage의 관점에선, 당장 전방에 아무런 장애물이 없을 땐 아무런 관심이 없습니다. Action을 딱히 취하지 않아도 reward에 영향이 없으니까요. 하지만 오른쪽 아래 그림처럼 전방에 장애물이 생기게 되면 이를 신경쓰게 됩니다. 위와 같은 아이디어가 본 논문의 핵심 아이디어입니다.

Implementation

그럼 단순하게 value와 advantage를 더하면 끝일까요? 즉 아래 식처럼 advantage의 정의를 이용하면 될까요? (α\alpha, β\beta: parameters of the two streams of fully-connected layers)

Q(s,a;θ,α,β)=V(s;θ,β)+A(s,a;θ,α)Q(s,a;\theta,\alpha,\beta) = V(s;\theta,\beta) + A(s,a;\theta,\alpha)

그게 또 아닙니다. 두 가지 issue가 있습니다.

1. V(s;θ,β)V(s;\theta,\beta)A(s,a;θ,α)A(s,a;\theta,\alpha)가 과연 정확하게 추정된 값이라 확신할 수 있을까요? 2. 우리는 계산된 Q(s,a;θ,α,β)Q(s,a;\theta,\alpha,\beta)를 보고, 이 값이 어느 V와 A에서 유도되었는지 알 길이 없습니다. 이는 성능하락을 야기하며, unidentifiable이라고 표현합니다.

이 identifiability 문제를 해결하기 위해 기준점을 딱 정해놔야겠습니다. 아래와 같이 식을 변경하면 optimal action aa^*을 택했을 때 Q(s,a;θ,α,β)=V(s;θ,β)Q(s,a;\theta,\alpha,\beta) = V(s;\theta,\beta)이 되도록 할 수 있습니다.

Q(s,a;θ,α,β)=V(s;θ,β)+(A(s,a;θ,α)maxaAA(s,a;θ,α))Q(s,a;\theta,\alpha,\beta) = V(s;\theta,\beta) + \left( A(s,a;\theta,\alpha) - \max_{a' \in \left|\mathcal{A}\right|} A(s,a;\theta,\alpha) \right)

또한 a=arg maxaAQ(s,a;θ,α,β)=arg maxaAA(s,a;θ,α)a^* = \argmax_{a'\in\mathcal{A}} Q(s,a';\theta,\alpha,\beta) = \argmax_{a'\in\mathcal{A}} A(s,a';\theta,\alpha)이 되어, 각각의 stream이 value와 advantage를 적절하게 나타냄을 알 수 있죠. 이렇게 되면 계산된 Q(s,a;θ,α,β)Q(s,a;\theta,\alpha,\beta)를 보고 가장 높은 값을 가질 때가 optimal action이며, 그 값이 V임을 파악할 수 있고, identifiability issue를 해결할 수 있습니다.

본문에서는 이외에도 또다른 계산법을 소개합니다.

Q(s,a;θ,α,β)=V(s;θ,β)+(A(s,a;θ,α)1AaA(s,a;θ,α))Q(s,a;\theta,\alpha,\beta) = V(s;\theta,\beta) + \left( A(s,a;\theta,\alpha) - \frac{1}{\left|\mathcal{A}\right|} \sum_{a'} A(s,a';\theta,\alpha) \right)

직전 case처럼 정확히 기준점을 추측할 순 없지만, 최적화과정에서 이득을 봅니다. 본문의 대부분의 실험은 이 방식으로 Q를 계산한 결과입니다.

이 모든 과정들은 Q network 내부에서 일어나는 과정이므로, Q network 외부의 알고리즘엔 전혀 영향을 주지 않습니다. 때문에 기존의 DDQN이나 SARSA같은 알고리즘에 쉽게 적용시킬 수 있다는 크나큰 장점이 있습니다. DDQN에 dueling 기법을 적용시킨 알고리즘을 종종 DDDQN이라고 지칭합니다.

다음 포스트부턴 policy gradient 알고리즘들을 살펴보기 시작하겠습니다.

Reference

[1] R. S. Sutton, A. G. Barto, et al., Introduction to reinforcement learning, vol. 135. MIT press Cambridge, 1998.

[2] OpenAI. Spinning Up, [Online]. Available: https://spinningup.openai.com/

[3] Dueling Network Architectures for Deep Reinforcement Learning, Wang et al, 2015.