연세대 인공지능학회 YAI

[논문 리뷰] Playing Atari with Deep Reinforcement Learning 본문

강화학습 : RL

[논문 리뷰] Playing Atari with Deep Reinforcement Learning

_YAI_ 2023. 3. 4. 14:08

YAI 9기 박찬혁님이 논문구현팀에서 작성한 글입니다.

논문

Playing Atari with Deep Reinforcement Learning

Playing Atari with Deep Reinforcement Learning

 

이번 논문에서는 강화학습을 위한 첫번째 딥러닝 모델인 DQN을 소개한다.

기존의 강화학습과 DNN을 결합시키기에는 몇가지 문제점이 있었다. 보통의 딥러닝 지도학습 task들은 라벨링 된 데이터들이 있었지만 강화학습에서는 이런 데이터들이 거의 없으며 노이즈가 많고 딜레이가 있는 reward를 통해 학습을 진행시켜야한다. 또한, 기존 딥러닝은 데이터간의 연관 관계가 없는 독립 관계라고 가정하고 진행하지만 강화학습의 경우 각 state들이 큰 연관성이 있다.

이 어려움들을 해결하고 강화학습과 딥러닝을 성공적으로 적용시킨 첫 시도가 바로 DQN이다.

Background

이 task에서는 한 agent가 action, observation, reward의 sequence안에서 환경 $\epsilon$와 상호작용하는 상황을 전제로 둔다. agent는 해당 게임에서 정해진 action의 집합 $A={1,\dots,K}$ 에서 선택한 action인 $a_t$를 시간 t마다 선택하여 실행한다. 해당 action은 게임으로 들어가서 상태를 바꾸고 점수도 바꾸게 된다. 하지만 이 내부적인 상태 변화는 agent는 직접 알지 못하고 화면의 픽셀값밖에 보지 못한다. 점수같은 경우는 $r_t$라는 값으로 직접적으로 주어진다. 이때 점수같은 경우 action과 observation이 여러번 지났을 때 reward가 생기게 된다.

따라서 한 순간의 화면인 $x_t$만 보고 전체적인 상황을 이해하는 것은 사람도 힘든 일이기 때문에 여기서는 $s_t =x_1, a_1, x_2, \dots, a_{t-1}, x_t$의 일련의 sequence를 고려한다. t가 유한하다고 가정했을 때 Markov decision process를 사용할 수 있게 된다.

agent의 목표는 미래의 reward를 최대화 할 수 있도록 action들을 선택하는 것이다. 여기서는 agent가 너무 미래의 reward에 큰 영향을 받지 않도록 다음과 같이 reward를 재정의했다.

$$
R_t=\Sigma^T_{t'=t}\gamma^{t'-t}r_{t'}
$$

위 식에서 T는 전체 게임 시간이다.

또한 어떠한 전략을 따랐을 때 특정 sequence를 보고 action을 취하고 얻는 reward의 기댓값인 action-value function을 아래와 같이 정의한다. ($\pi$=strategy)

$$
Q^*(s,a)=max_\pi\mathbb E[R_t|s_t = s, a_t = a, \pi]
$$

Optimal한 action-value function은 Bellman equation을 따른다. 다음 time-step에서의 $s'$에 대한 optimal value인 $ Q^*(\epsilon ',a') $가 가능한 모든 action인 $a'$에 대해 알려져 있을 때 가장 최적의 strategy는 $r+\gamma Q^*(\epsilon',a')$의 기댓값을 최대화하는 $a'$를 선택하는 것이다.

$$
Q^*(s,a)=\mathbb E_{s'~ \epsilon}[r+\gamma\max_{a'}Q^*(s',a')|s,a]
$$

강화학습의 기본적인 아이디어는 이 bellman equation을 반복적으로 업데이트하면서 action-value function을 추정하는 것이다. 업데이트는 아래의 식과 같이 적용된다.

$$
Q_{i+1}(s,a)=\mathbb E_{s'~ \epsilon}[r+\gamma\max_{a'}Q_i(s',a')|s,a]
$$

위 처럼 update를 반복하게 되면 i→$\infty$일때 $Q_i\rightarrow Q^*$로 수렴하게 된다.

하지만 위와 같은 접근방법은 일반화 없이 매 sequence마다 개별적으로 추정되기 때문에 현실적으로 불가능하다. 따라서 아래와 같은 function approximator가 주로 사용된다.

$$
Q(s,a;\theta)\approx Q^*(s,a)
$$

기존 강화학습에서는 위 approximator에 선형 함수를 사용하였지만 여기서는 neural network같은 비선형 함수를 사용한다. $\theta$를 weight로하는 Q-network를 정의하고 아래의 식에서 표현되는 loss를 최소화하는 방식으로 학습된다.

$$
L_i(\theta_i)=\mathbb E_{s,a\sim \rho(.)}[(y_i - Q(s,a;\theta_i))^2]
$$

위 식에서 $y_i$는 $\mathbb E_{s'\sim \epsilon}[r+\gamma\max_{a'}Q_i(s',a')|s,a]$이며 $\rho(s,a)$는 s와 a에 대한 확률분포이다.

일반적인 supervised learning에서는 학습 전에 정해져있는 GT가 학습의 target이지만 여기서는 target이 network weight이다.

Deep Reinforcement Learning

위의 방식을 그대로 학습에 적용하면 학습이 불안정해지는 문제점이 있었다. State는 sequence상에서 연관성이 존재한다. 일반적인 DL의 경우 데이터들이 독립이라고 가정하고 학습을 진행하지만 강화학습은 데이터간의 연관성이 강하기 때문에 policy가 학습되면서 생기는 데이터들의 분포가 일반적인 딥러닝과는 다르게 나타난다.

이를 해결하기 위해 논문에서는 Experience Replay라는 기법을 사용한다. 연속된 샘플끼리는 연관성이 크기 때문에 학습이 느리게 진행될 가능성이 높다(비슷한 결정을 할 가능성이 높아진다?). 따라서 시뮬레이션을 돌리면서 발생하는 agent의 경험 데이터인 $(s,a,r,s')$를 튜플의 형태로 buffer에 저장해두었다가 업데이트를 진행할 때 해당 buffer에서 랜덤하게 minibatch만큼의 샘플을 뽑아 계산하게 된다.

이 방법으로 연속된 샘플들끼리의 연관성에서 발생하는 문제가 해결 될 수 있다.

Discussion

Q. 하지만 위와 같은 접근방법은 일반화 없이 매 sequence마다 개별적으로 추정되기 때문에 현실적으로 불가능하다.

Q. 일반적인 supervised learning에서는 학습 전에 정해져있는 GT가 학습의 target이지만 여기서는 target이 network weight이다.

→ 답이 주어지는게 아니라 reward라는 값에 의존하고 이것도 정답이 아닌 reward가 높아지는 것을 목표로 하고 학습을 진행한다.

Comments