[딥러닝] Deep Q Network(DQN) 논문 번역
업데이트:
Deep Q Network(DQN) 논문 번역
Playing Atari with Deep Reinforcement Learning
0. Abstract
우리는 강화학습을 통해서 고차원 센서로부터 직접 정책(policy)을 컨트롤함으로써 성공적으로 딥러닝 모델을 학습시켰다. 여기서 말하는 딥러닝 모델은 CNN을 의미하는데 이는 Q learning으로 학습 시킨 것이다. 이러한 모델을 학습 시킬 때 인풋은 각 픽셀(raw pixel)이 되고 아웃풋은 미래 보상에 대한 value function이다. 우리는 이러한 방법으로 아타리 게임 2600개에 대한 학습 환경으로부터 학습 알고리즘이나 아키텍쳐 변화없이 학습시켰다.
1.Introduction
비전이나 음성 데이터에서 고차원 센서 데이터로부터 나오는 데이터를 에이전트를 컨트롤함으로써 학습시키는 것은 강화학습 분야에서 오랜 기간동안 도전적인 과제였습니다. 이러한 도메인에서 가장 성공적인 강화학습 적용은 수작업으로 만든 피처를 linear value function이나 policy representations와 결합시키는 것이었습니다. 당연하게도 이런 시스템에서의 학습 결과는 feature representation의 퀄리티에 의존적이었습니다.
최근에와서는 raw 센서 데이터로부터 high-level 피처를 추출하는 것이 가능했고, 이는 컴퓨터 비전이나 음성 인식 분야에서 큰 발전을 이루어냈습니다. 이러한 방법들은 CNN을 포함하는다양한 신경망 아키텍처를 활용했습니다. 이 말은 기존에 사용했던 다양한 기술들을 강화학습에도 동일하게 사용할 수 있다는 뜻입니다.
그러나 딥러닝적인 관점으로 보면 강화학습은 아직 챌린징한 부분이 많이 있습니다. 첫번째 어려운 점은, 딥러닝을 학습시키기 위해서는 엄청나게 많은 수의 라벨링된 데이터가 필요합니다. 반면 강화학습 알고리즘에서는 보상(reward)에 의해 학습되어야하는데 이때 보상이란 스칼라값을 의미합니다. 강화학습에서 액션(action)과 보상(reward) 사이에는 딜레이가 존재하는데 이 딜레이는 매우 길어질수도 있어서 학습시 매우 큰 부담이 될 수 있습니다.
두번째 어려운 점은 딥러닝 알고리즘에서는 데이터들의 독립성을 가정합니다. 그러나 강화학습에서는 대부분 상태들이 높은 상관관계를 보여주는 시퀀스입니다. 게다가 강화학습에서는 새로운 행동에 대해 데이터 분포가 바뀌어 버립는데, 이는 기반이 되는 분포를 가정하는 방법 자체를 사용하기 어렵게 만듭니다.
이 논문은 CNN이 앞서 언급한 챌린징한 어려움들을 극복해서 성공적인 강화학습이 가능하다는 것을 보여줍니다. 해당 신경망은 variant of Q-learning으로 학습하는데, 이는 stochastic gradient descent를 통해 가중치를 업데이트하는 방향으로 진행합니다. 앞서 언급했던 문제점들 중 상관관계가 높은 데이터라는 점과 non-stationary 분포라는 문제점을 완화시키기 위해, experience replay mechanism을 사용할 것인데, 이는 previous transitons를 랜덤하게 샘플링함으로써 많은 과거 행동들에 대한 학습 분포를 smooth하게 만듭니다.
우리는 이러한 접근 방법으로 아케이드 학습 환경(ALE)에서 아타리 게임 2600개에 대해 적용할 것입니다. 아타리 게임 2600의 데이터는 고차원 비주얼 인풋 데이터를 가지고 있는데 210x160 RGB video at 60Hz의 사양을 나타냅니다. 그리고 각 게임은 인간 플레이어가 클리어하기 어려운 다양한 태스크로 구성되어 있습니다. 우리의 목적은 가능한한 많은 게임을 성공적으로 학습하는 single neural network agent를 만드는 것입니다. 해당 네트워크에게 게임에 대한 어떠한 정보를 제공하지 않으며, 수작업으로 만든 비주얼 피처같은 정보는 전혀 주어지지 않습니다. 즉, 신경망은 인간의 플레이로부터 나오는 비디오 인풋, 보상, 최종 시그널, 가능한 행동으로부터만 학습됩니다. 게다가 학습에 진행되는 네트워크 아키텍쳐나 모든 하이퍼파라미터는 게임 내내 상수로 취급됩니다. 지금까지 네트워크는 기존의 전문가 인간 플레이어를 능가하는 성능을 보여줬습니다.
2. Background
우리가 학습 대상으로 여기는 테스크는 한 에이전트는 환경 $\varepsilon$와 상호작용한다고 생각하겠습니다. 이때 환경 $\varepsilon$이라는 것은 아타리 에뮬레이터, 액션 시퀀스(sequence of actions), 관측(observation), 보상(reward)로 구성됩니다. 각 타임 스텝(time-step)에 대해 에이전트는 취할 수 있는 액션 $A=\{ 1, \cdots, K \}$ 중 하나인 액션 $a_t$를 선택합니다. 해당 액션은 에뮬레이터를 통해 내부 상태(internal state)와 게임 스코어(game score)를 변동시킵니다. $\varepsilon$는 stochastic 합니다. 에뮬레이터의 내부 상태는 에이전트에 의해 관측되지 않습니다. 대신에, 에뮬레이터로부터 나오는 이미지 $x_t \in R^d$를 통해 관측할 수 있는데, 이때 $x_t \in R^d$란 현재 스크린에 나타나는 로우 픽셀 벡터를 의미합니다. 게다가 이후 보상 $r_t$를 받게 되는데 이는 게임 점수를 변화시킵니다. 정리하면 게임 스코어는 이전의 액션 시퀀스(prior sequence of actions)와 관측(observation)에 의해 결정됩니다. 어떤 액션에 대한 피드백은 수천 타임스텝이 지나고나서야 받을 수 있습니다.
에이전트는 오직 현재 스크린 이미지만 관측하기 때문에 전체의 부분적으로만 관측 가능하며 수많은 에뮬레이터 상태는 인식할수 없을 정도로 소외됩니다. 즉, 연재 스크린 $x_t$만 가지고서는 현재 상황을 완벽하게 이해하는 것은 불가능합니다. 그러므로 우리는 $s_t = x_1, a_1, x_2, …, a_{t-1}, x_t$와 같은 액션 시퀀스와 관측치를 고려해서 게임 전략을 학습해야합니다. 에뮬레이터에서의 모든 시퀀스는 유한한 타임 스텝에 대해 종료된다고 가정합니다. 이러한 형식주의는 유한 Markov decision process(MDP)를 발전시킬 수 있는데, 이 때 MDP는 distinct state에 대한 시퀀스를 의미합니다. 결과적으로 각 시점 $t$에 대해 완전한 시퀀스 $s_t$를 이용해 MDP에 대한 standard 강화학습 방법을 적용시킬 수 있습니다.
에이전트의 목표는 액션을 선택함으로써 미래 보상을 최대화 시키는 방향으로 에뮬레이터와 상호작용하는 것입니다. 이때 미래 보상은 타임스텝 당 $\gamma$만큼 discount된다는 가정이 필요합니다. 따라서 시점 $t$에 대해 discount된 미래 보상은 다음과 같이 정의할 수 있습니다.
$R_t = \sum\limits_{t^\prime=t}^{T}\gamma^{t^{\prime} - t} r_{t^{\prime}}$
위 식에서 $T$는 게임이 종료되기 까지 걸리는 전체 시간을 의미합니다. 그리고 이제 최적화된 액션 value 함수(optimal action-value function) $Q^{*}(s,a)$를 정의하는데, 이 함수는 maximum expected return을 달성하는 함수입니다. 즉, 기대 리턴값을 최대화 시키는 함수인 것입니다. 이것이 가능하려면 어떤 액션-관측 시퀀스 $s$를 보고 어떤 전략을 선택함으로써 어떤 액션 $a$를 취하는 것으로 달성할 수 있습니다. 이를 수식으로 나타내면 다음과 같습니다.
$Q^*(s,a) = max_\pi E[R_t | s_t = s, a_t=a, \pi ]$
위 식에서 $\pi$는 액션 시퀀스와 매핑되는 정책을 의미합니다.
위와 같은 optimal action-value function은 Bellman equation이라는 규칙을 따릅니다. 이것이 의미하는 바는 다음과 같습니다. 만약 최적값 $Q^{*}(s^{\prime}, a^{\prime})$가 주어진 시퀀스 $s^\prime$에서 다음 타임 스텝에 대해 선택할 수 있는 모든 액션 $a^{\prime}$들 중 선택된 최적값이라면 최적의 전략은 $r + \gamma Q^{*}(s^\prime, a^\prime)$을 최대화 시키는 행동 $a^{\prime}$을 선택하는 것입니다. 이를 수식으로 나타내면 다음과 같습니다.
$Q^{*}(s, a) = E_{s^\prime \sim \varepsilon}[r + \gamma Q^{*}(s^\prime, a^\prime) | s,a]$
수많은 강화학습 알고리즘에는 베이스 아이디어가 깔려있는데 그것은 Bellman equation을 업데이터 방식으로 채택함으로써 $Q_{i+1}(s, a) = E_{s^\prime \sim \varepsilon}[r + \gamma Q^{*}(s^\prime, a^\prime) | s,a ]$을 반복적으로 업데이트 함으로써 action-value fucntion을 추정하는 것입니다. 이러한 value iteration 알고리즘을 통해 optimal action-value function은 $i \rightarrow \infty$로 감에 따라 $Q_i \rightarrow Q^*$로 수렴합니다. 실제로는 이러한 접근 방식이 터무니 없다고 생각할 수 있는데 그 이유는 action-value function은 일반화 없이 각 시퀀스가 모두 따로따로 추정되기 떄문입니다. 그 대신에 action-value function을 추정하는데 다음과 같은 근사치를 사용할 수 있습니다.
$Q(s,a; \theta) \approx Q^{*}(s,a)$
강화학습 분야에서는 이 근사치를 일반적인 linear function approximator로 사용하는데, 간혹가다가 딥러닝과 같은 non linear function approximator가 사용되기도 합니다. 가중치 $\theta$를 적용한 Q-network로서 신경망 함수를 활용한 approximator를 사용할 수 있습니다. Q-network는 iteration $i$에 대해 다음과 같은 손실함수 $L_i(\theta_i)$ 시퀀스를 최소화 시키는 방향으로 학습할 수 있습니다.
$L_i(\theta_i) = E_{s,a\sim \rho()}[(y_i - Q(s,a;\theta_i))^2]$
위 식에서 $y_i = E_{s^\prime \sim \varepsilon}[r + \gamma max_{a^{\prime}}Q^{*}(s^\prime, a^\prime) | \theta_{i-1}]$은 $i$번째 iteration에 대한 타겟을 의미하며, $\rho(s,a)$는 시퀀스 $s$와 액션 $a$에 대한 확률 분포를 의미하는데 우리는 이 분포를 behaviour distribution이라고 부르겠습니다. 이전 iteration으로부터의 파라미터 $\theta_{i-1}$는 손실함수 $L_i(\theta_{i})$를 최적화 시키는 과정에서 고정되어 있습니다. 이때 주의할 점은 타겟은 신경망의 가중치에 달려있다는 점에 주의해야합니다. 이 사실은 타겟은 지도학습에 사용되기 전, 즉, 학습 시작전에 고정되어 있다는 기존 사실과 반대 됩니다. 손실 함수를 가중치에 대해 미분하면 다음과 같은 그레디언트를 구할 수 있습니다.
$\nabla_{\theta_i}L_{i}(\theta_i) = E_{s,a \sim \rho();s^{\prime}\sim \varepsilon}[(r+\gamma max_{a^\prime}Q(s^{\prime}, a^{\prime} ; \theta_{i-1})-Q(s,a; \theta_i))\nabla_{\theta_i}Q(s,a;\theta_i)]$
위와 같은 그레디언트에서 전체 기대값을 계산하기 보다는 stochastic gradient descent 방법을 활용해서 손실함수를 최적화 합니다. 만약 가중치가 매 타임스텝 마다 업데이트 된다면 단 하나의 샘플에 대해 behaviour distribution $\rho$와 에뮬레이터 $\varepsilon$각각에 대한 기대값이 변화합니다. 그 후에 우리에게 익숙한 Q-learning 알고리즘에 다다를수있습니다.
이 알고리즘은 모델에 대해 자유롭다는(model-free) 사실을 기억하세요. 이것은 강화학습 테스크를 에뮬레이터 $\varepsilon$으로부터 나온 샘플을 통해 해결할 수 있는데, 중요한 것은 명확한 $\varepsilon$에 대한 구성없이도 가능하다는 사실입니다. 그리고 이것은 off-policy하다는 성질도 기억해주세요. 이러한 방식의 학습은 각각의 state space의 적절한 탐험을 통해 behaviour distribution을 따르는 동안, $a = max_a Q(s,a; \theta)$에 대해 탐욕적 전략을 통해 학습합니다. 실질적으로 behaviour distribution은 종종 $\epsilon$-greedy 전탁을 통해 선택되는데, 이는 확률 $1-\epsilon$과 랜덤 액션을 선택할 확률 $\epsilon$을 통해 정해집니다.
3. Related Work
강화학습 스토리중 가장 잘 알려진 것은 TD gammon일 것입니다. 이것은 주사위 놀이를 하는 프로그램인데, 강화학습을 통한 셀프 플레이를 통해 슈퍼 휴먼 레벨 까지 도달했습니다. TD gammon을 학습할때는 Q learning과 비슷한 model-free 강화학습 알고리즘을 활용했습니다. 그리고 value function을 근사시킬 때는 히든 레이어 1층 짜리 멀티 레이어 퍼셉트론을 활용했습니다. 하지만 이 방법을 그대로 사용해서 체스에 적용했을 때는 성공적이지 않았습니다. 이를 통해 TD gamma에 사용한 접근 방법이 매우 특이한 케이스라는 믿음이 널리 퍼졌습니다. 왜냐하면 주사위를 굴릴때의 확률성이 state space를 탐험하는데 도움을 주고 value function을 smooth 하게 만들어주는데 도움을 주었기 때문입니다.
게다가 비선형 함수 근사를 통한 Q learning을 사용한 model-free 강화학습이나 off-policy learning을 혼합하는 방법이 Q-network를 발산하게 만든다는 사실이 밝혀졌습니다. 그 후에는 비선형이 아닌 선형 함수 근사를 활용한 강화학습이 수렴을 보장하는데 더 좋은 방법이라고 알려집니다.
최근에는 다시 딥러닝과 강화학습을 혼합시키는 방법이 부활했습니다. 딥러닝은 환경 $\varepsilon$을 추정하는데 사용되었고, Bolzmann 머신은 value function이나 정책을 추정하는데 사용되었습니다. 게다가 Q learning이 발산하는 문제는 gradient temporal-difference methods로 부분적으로 다루어졌습니다. 이러한 방법들은 비선형 함수 근사를 통한 fixed 정책을 통해 평가하거나 혹은 제한된 Q learning variant를 활용한 선형 함수 근사를 활용한 control policy를 학습할때와 같은 상황에서 수렴한다고 입증이 되었습니다. 그러나 이러한 방법들은 아직 비선형 컨트롤로 이어지지는 못했습니다.
…(생략, 그 이후에도 열심히 연구했다는 내용)
4. Deep Reinforcement Learning
최근 딥러닝에서 컴퓨터 비전과 음성 인식 분야에서 엄청난 발전이 있었는데, 그것은 아주 큰 트레이닝 데이터에 대해 효율적으로 학습을 이루어 낸 것입니다. 로우 데이터에 대해 가장 성공적인 접근 방법은 stochastic gradient descent 방법을 기반으로한 lightweight 업데이트 방식을 사용한 것이었습니다. 딥러닝을 할 때 충분한 데이터를 제공함으로써 수작업으로 직접만든 피처를 사용하는 것보다 더 나은 학습 결과를 보였습니다. 이러한 성공은 강화학습에도 적용할 수 있겠다는 동기부여가 되었습니다. 우리의 목적은 stochastic gradient updates를 활용해 RGB 이미지와 효율적으로 학습데이터를 처리하는 방식으로 작동하는 강화학습과 딥러닝을 연결시키는 것입니다.
TD Gammon 아키텍처는 접근법의 스타팅 포인트를 제공합니다. 이 구조는 신경망의 파라미터를 업데이트 시키는데, 이때 신경망은 value function을 추정를 추정하고, 직접적으로 환경과 상호작용하는 알고리즘을 활용해 $s_t, a_t, r_t, s_{t+1}, a_{t+1}$과 같은 경험으로 부터의 on-policy 샘플을 뽑습니다. 이러한 접근 방법들은 20년 전의 인간 고수와 같은 퍼포먼스를 발휘했는데, 20년이 지나면서 하드웨어가 발전하고 딥러닝이 발전한 지금 강화학습알고리즘과 딥러닝을 합친다는 생각에 어쩌면 당연히 의문점이 있을지도 모릅니다.
TD Gammon과 유사한 온라인 접근 방법들과는 반대로, 우리는 experience replay라고 알려진 테크닉을 사용할 것입니다. 이 방법은 각 타임스텝에 대해 에이전트의 경험을 저장합니다. 이때 각 시점에서의 에이전트의 경험은 $e_t = (s_t, a_t, r_t, s_{t+1})$이라고 정의하고, 이 경험들로 이루어진 데이터셋은 $D = e_1, …, e_N$이라고 정의하겠습니다. 그리고 그리고 수많은 에피소드들로부터 replay memory를 수집합니다. 알고리즘의 반복문 내부가 반복되는 동안, 우리는 Q-learning 업데이트를 적용하거나 미니배치를 업데이트하거나, 혹은 저장된 샘플로부터 랜덤하게 경험을 추출합니다. 이를 수식으로 표현하면 $e \sim D$와 같습니다. experience replay가 수행된 후에 에이전트는 $\epsilon$-greedy 정책을 따르는 액션을 선택하고 실행합니다. 임의의 길이를 가진 인풋을 신경망에 사용하는 것은 어려운 일이므로, 대신에 우리가 사용하는 Q-function은 고정된 길이의 인풋을 가진 함수 $\phi$라고 하겠습니다. 이렇게 정의한 알고리즘을 deep Q-learning이라고 부르겠습니다. 이 알고리즘의 로직을 정리하면 다음과 같습니다.
Algorithm. Deep Q learning with Experience Replay
- 우선 초기화 replay memory 초기화가 필요한데, replay memory $D$를 공간 $N$을 가지도록 초기화 합니다.
- action-value function $Q$를 랜덤 가중치를 줘서 초기화 합니다.
- for episode = (1, $M$), 에피소드 1부터 $M$까지 반복문을 수행합니다.
- 시퀀스 $s_1 = \{x_1\}$과 preprocessed sequenced $\phi_1 = \phi(s_1)$을 초기화 합니다.
- for $t=1,T$, 타임스텝 $t$에 대해 반복문을 수행합니다.
- $\epsilon$ 확률로 액션 $a_t$를 선택합니다.
- 그 밖의 $a_t = max_a Q^{*}(\phi(s_t), a ; \theta)$를 선택합니다.
- 에뮬레이터 내부에서 액션 $a_t$를 실행하고 보상 $r_t$와 이미지 $x_{t+1}$을 관측합니다.
- 그리고나서 $s_{t+1} = s_t, a_t, x_{t+1}$과 $\phi_{t+1} = \phi(s_{t+1})$을 설정합니다.
- transition $(\phi_t, a_t, r_t, \phi_{t+1})$을 $D$에 저장합니다.
- $D$로부터의 트랜지션 $(\phi_j, a_j, r_j, \phi_{j+1})$의 미니배치를 샘플링합니다.
- 타겟 $y_j$를 셋팅하는데, $terminal \phi_{j+1}$에 대해서는 $y_j=r_j$라고 설정하고, $non terminal \phi_{j+1}$에 대해서는 $y_j=r_j + \gamma max_{a^{\prime}}Q(\phi_{j+1}, a^{\prime}; \theta)$라고 설정합니다.
- 앞서 언급한 방정식 3에 따라 $(y_j - Q(\phi_j, a_j ; \theta))^2$에 대한 그레디언트 디센트 단계를 수행합니다.
- 반복문을 종료합니다.
- 반복문을 종료합니다.
이러한 접근법은 몇가지 장점이 있습니다. 첫번째 장점은, 각 경험 스텝마다 잠재적으로 많은 가중치 업데이트를 사용합니다. 그리고 이는 더 큰 데이터를 효과적으로 다룰수 있게 합니다.
두번째 장점은, 연속적인 샘플링으로부터 학습을 바로하는 것은 비효율 적입니다. 왜냐하면 샘플 데이터 간 상관관계가 높게 나타나기 때문이죠. 따라서 샘플링할 때 연속된 데이터가 아니라 randomizing해서 상관관계를 부수고, 업데이트시 분산을 줄일 수 있습니다.
세번째 장점은, on-policy 학습시, 현재 파라미터가 다음에 학습될 파라미터가 되는 데이터 샘플을 결정합니다. 예를 들어, 만약 최대화시키는 액션이 왼쪽으로 움직이는 것이라면, 학습 데이터 또한 왼쪽 부분에서 샘플링된다는 뜻입니다. 만약 최대화 액션이 반대로 가면 당연히 학습 분포 또한 오른쪽으로 스위치 됩니다. 이말은 원치않는 피드백 루프가 발생했을때나 파라미터가 멍청한 로컬 미니멈에 스턱이 걸리거나 아니면 발산해버리는 상황을 다루기 쉽다는 의미입니다. experience replay를 사용함으로써 behavior distribution이 이전 상태에 의해 평균으로 수렴하고 부드러운 학습이 진행됨에 따라 파라미터의 소실이나 폭발을 막습니다. experience replay로 학습함에 따라 Q-learning의 선택으로 동기부여를 할수 있는 off-policy를 학습하는 것은 필수적입니다.
실질적으로 우리가 사용하는 알고리즘의 목적은 마지막 $N$ experience tuple을 replay memory에 저장하고 업데이트시 $D$로부터 균일한 확률로 샘플링하는 것입니다. 이러한 접근 방법은 어떤 측면에서는 제한적으로 보일 수 있습니다. 왜냐하면 메모리 버퍼의 크기가 $N$으로 고정되어 있기 때문에, 중요한 transition과 그렇지 않은 것을 차별화하지 않고 항상 최근 trainsition을 덮어쓰기 떄문입니다. 이와 유사하게, 샘플에 대해 동일한 확률로 샘플링하는 방법인 유니폼 샘플링은 replay momory에 저장되어 있는 모든 transition의 중요도를 동일하게 본다는 의미입니다. 더 철학적으로 샘플링 전략을 짜자면 transition들 마다 가중치를 다르게 주는 방법도 생각해볼 수 있겠습니다.
4.1. Preprocessing and Model Architecture
raw 아타리 프레임으로 작업을 한다면 우리는 210x160 픽셀 이미지와 128가지 색깔을 사용하는 데이터를 다루게 될 것입니다. 그리고 전처리 과정으로 인풋 차원을 줄이는 작업을 할 수 있습니다. raw 프레임은 처음에 RGB값을 gray-scale로 변환하고 이미지 크기도 줄여서 110x84 크기의 이미지로 만듭니다. 그 후 이미지의 일부를 잘라서 84x84 이미지로 만드는데 이 이미지는 플레이영역에 해당합니다. 이 단계가 중요한 이유는 우리는 GPU를 활용해 2D convolution을 진행하는데 이때 정사각형 형태의 인풋 데이터가 좋기 때문입니다. 본 논문에서의 실험은, 알고리즘 1로부터의 $\phi$ 함수를 이러한 전처리 과정에 적용시켜 Q-function의 인풋 데이터를 만듭니다.
신경망을 활용해 $Q$를 파라미터라이징 할 수 있는 몇몇 방법들이 존재합니다. $Q$는 그들의 $Q$-value를 통해 지난 액션 히스토리와 스칼라 추정치(reward)를 맵핑하므로 지난 히스토리와 액션이 신경망의 인풋 데이터로 활용될 수 있습니다. 이러한 아키텍처의 단점은 각 액션의 $Q$-value 대해 분리된 forward pass를 요구한다는 것입니다. 그리고 이것이 문제가 되는 이유는 액션의 수 만큼 비용과 스케일이 선형적으로 증가하기 때문입니다.
우리는 이 방법 대신에 각 가능한 액션들에 대해 분리된 아웃풋 유닛이 존재하고, state representation이 인풋이되는 신경망을 사용하는 아키텍처를 하용하겠습니다. 즉, 우리의 아웃풋은 input state에 대한 개별 액션으로부터 예측된 $Q$-value에 대응됩니다. 이러한 아키텍처를 활용하는 것의 장점은 단 하나의 forward pass로 구성된 신경망으로 주어진 state에 대해 모든 가능한 액션의 $Q$-value를 계산할 수 있는 능력입니다.
Architecture
Layer type | Details | Activation |
---|---|---|
Input | 전처리를 거친 (84x84x4) 인풋 데이터 | |
Convolution | 16(8x8) 필터, 스트라이드 4 | ReLu |
Convolution | 32(4x4) 필터, 스트라이드 2 | ReLu |
Dense | 256 hidden units | ReLu |
Dense(output) | 엑션당 하나의 아웃풋 발생(predicted Q-value) | Linear |
자, 이번에는 7개의 아타리 게임에 사용된 실제 아키텍처를 알아보겠습니다. 신경망에 투입되는 인풋은 함수 $\phi$에 의해 생성된 84x84x4 이미지 입니다. 그리고 첫번째 히든 레이어는 16(8x8) 필터를 사용하고 stride 4가 input data에 적용되었으며 rectifier nonlinearity가 적용되었습니다. 두번째 히든 레이어는 32(4x4)의 구조를 가지고 stride 2, rectifier nonlinearity를 가집니다. 마지막 히든 레이어는 fully-connected되었으며 256개의 rectifier units로 구성되어 있습니다. 아웃풋 레이어는 fully-connected된 linear layer이며 하나의 행동에 대한 single output으로 구성됩니다. 우리가 고려한 아타리게임에서는 타당한 액션의 수가 4가지에서 18가지로 다양합니다. 그리고 학습은 앞서 언급한 Deep Q-Networks(DQN)으로 진행합니다.
5. Experiments
지금까지 우리는 7개의 아타리 게임에 대해 실험을 해보았는데 7가지 게임 제목은 다음과 같습니다. Beam Rider, Breakout, Enduro, Pong, Qbert Seaquest, Space Invader. 우리는 7가지 게임에 대해 종류에 상관없이 동일한 신경망 구조를 사용했고 동일한 학습 알고리즘과 하이퍼 파라미터 세팅을 사용했습니다. 즉, 이 말이 뭐냐면 특정 게임에만 해당하는 특정 정보를 사용하지 않았다는 뜻입니다. 우리가 수정되지 않는 게임에 대해 에이전트가 플레이한 결과에 대해 평가할때, 학습과정에서 사용되는 보상 구조를 한번 수정합니다. 왜냐하면 스코어의 스케일이 게임에 따라 너무 다르기 때문입니다. 스코어는 긍정적일때는 1점, 부정적일때는 -1점을 주고 바뀌지 않는 경우에는 0점을 줍니다. 이렇게 보상 형태는 에러 발생 범위를 줄여주고 다양한 게임에 대해 동일한 학습율을 적용할 수 있게 해줍니다. 이는 또한 에이전트의 퍼포먼스에도 영향을 주는데 그 이유는 보상 규모의 차이가 없기 때문입니다.
이번 실험에서 우리는 사이즈 32 짜리의 미니배치로 RMSProp 알고리즘을 사용했습니다. 학습하는 동안의 behavior policy는 $\epsilon$-greedy를 사용하는데 이때 $\epsilon$은 1 부터 0.1 까지 점차 낮추는데 이 과정은 처음 백만 프레임에 대해 적용되고 그 후에는 0.1로 고정됩니다.
또한 아타리 게임에 대해 우리는 simple frame-skipping 기술을 사용합니다. 더 정확히는 에이전트는 모든 프레임을 보고 행동을 선택하는게 아니라 매 k번째 프레임을 보고 행동을 선택합니다. 그리고 가장 최근 행동은 skipped 된 프레임에 대해서는 반복됩니다. 에뮬레이터를 한 스텝에 대해 실행하는 것은 액션을 선택하는 것보다 적은 계산량이 요구되므로 같은 시간동안 에이전트는 k번 더 많은 게임을 플레이할 수 있게 됩니다. 우리는 Space Invaders라는 게임을 제외하면 모두 $k=4$를 적용했습니다. Space Invaders라는 게임에는 $k=3$을 적용했습니다. 그외 나머지 세팅은 7가지 게임 모두 동일합니다.
5.1. Traning and Stability
지도학습에서는 트레이닝 데이터와 validation 데이터를 평가함에 따라 모델의 퍼포먼스를 쉽게 추적할 수 있습니다. 그러나! 강화학습에서는 학습되는동안 정확히 평가하는 것이 어렵습니다. 이것은 평가 측정 방법(evaluation metric) 때문인데, 앞서 언급된 평가 방법을 가지고 학습이 진행되는 동안 한 에피소드나 여러 게임을 통해 얻은 보상을 평균내는등 간헐적으로 평가가 진행됩니다. 전체 보상에 대해 평균을 구하는 방식(average total reward)은 noise가 많이 발생합니다. 왜냐하면 정책의 가중치가 적게 변하는 경우가 정책이 방문하는 state의 분포를 크게 변화시킬 수 있기 때문입니다. 그림 2에서의 가장 왼쪽 2개의 플랏은 average total reward가 학습되는 동안 어떻게 변하는지 보여줍니다. 두개의 평균 보상 플랏은 변동이 크고 학습 알고리즘에 따라서도 꾸준히 개선되지 않습니다. 반면 다른 알고리즘을 사용했을 때는 안정적인 구도를 보여주는 장면도 있는데, 이는 그 당시 state로 부터의 정책에 대해 discounted reward를 추정하는 방법을 통해 action-value function $Q$를 추정할 때 좋은 결과를 보여줍니다. 우리는 학습 시작 전 랜덤 정책을 실행함으로써 고정된 state 집합을 모으고 해당 state에 대해 $Q$를 최대화하는 평균치를 추적합니다. 그림 2에서 가장 오른쪽에 있는 플랏은 average predicted $Q$가 계속 증가할 뿐만 아니라 변동폭도 작은 것을 볼 수 있습니다. 이것이 의미하는 바는 이론적인 보장이 조금 부족할지라도 우리가 사용한 방법은 강화학습에 거대한 신경망을 적용시키고 stochastic gradient descent 방법을 안정적으로 사용할 수 있다는 것을 의미합니다.
5.2. Visualizing the Value Function
그림 3은 Seaquest라는 게임에서 학습된 value function을 시각화한 것을 보여줍니다. 그림은 적이 나타났을때 점프하는 동작이 예측값으로 실행되는 것을 보여줍니다(point A). 그리고 에이전트는 torpedo를 적에게 발사하고 torpedo에 대한 예측값이 최고를 찍은 것을 보여줍니다(point B). 마지막으로 적이 사라졌을 때 value가 낮아지는 것을 볼 수 있습니다(point C) 그림3은 복잡한 상황이 발생했을 때 어떻게 학습하는 지는 보여줍니다.
개요 | B.Rider | Breakout | Enduro | Pong | Qbert | Seaquest | S.Invaders |
---|---|---|---|---|---|---|---|
Random | 354 | 1.2 | 0 | -20.4 | 157 | 110 | 179 |
Sarsa | 996 | 5.2 | 129 | -19 | 614 | 665 | 271 |
Contingency | 1743 | 6 | 159 | -17 | 960 | 723 | 268 |
DQN | 4092 | 168 | 470 | 20 | 1952 | 1705 | 581 |
Human | 7456 | 31 | 368 | -3 | 18900 | 28010 | 3690 |
에이전트가 학습한 후에 우리는 인간 전문가의 플레이 점수와 랜덤으로 정책을 선택해서 행동한 액션을 통한 점수를 기록했습니다. 인간이 플레이한 점수는 중앙값을 사용했습니다.
5.3. Main Evaluation
우리는 실험 결과를 비교했는데 Sarsa가 의미하는 것은 Sarsa 알고리즘을 사용했다는 의미이며, 이 과정에서 손으로 직접 만든 피처를 적용했습니다. Contingency는 Sarsa와 거의 비슷한 접근 방법을 보이지만 에이전트 컨트롤 하에서 학습된 스크린의 일부분을 피처로 사용합니다. 위 두가지 방법은 풀려고 하는 문제에 대해 사전지식을 얼마나 알고 적용하느냐가 중요합니다.
6. Conclusion
이 논문은 강화학습에서의 새로운 딥러닝 모형을 소개하고 인풋데이터로 raw 픽셀을 활용해 아타리 2600 컴퓨터 게임을 마스터하는 능력을 보여줍니다. 또한 온라인 $Q$-learning의variant를 소개하는데 이는 확률적 미니배치와 experience replay modmory를 결합해 강화학습에서 딥러닝 학습을 쉽게 도와줍니다. 우리의 접근 방법은 총 7가지 게임중 6가지 게임에서 좋은 결과를 보여주었고 이 과정에서 아키텍처의 하이퍼파라미터 수정 없이 이루어졌습니다.