1 분 소요

Q-table이 터져버릴 때,
우리는 Deep Learning을 불러야 한다.


1. Q-learning의 한계부터 다시 보자

기본 Q-learning은 다음 구조를 가진다.

$Q(s, a)$

문제는 이 Q값을 보관하기 위해 Q-table이 필요하다는 것이다.

예시:

  • state가 100 × 100 → 10,000
  • action이 4개라면
    → Q-table 크기: 10,000 × 4 = 40,000

여기까진 괜찮다. 하지만 현실 문제는?

  • state가 이미지 (84×84×3)
  • 경우의 수 ≈ 무한대(continuous)
  • 모든 state를 table에 저장 ❌

즉,

Q-table은 large / continuous state-space에서 사용할 수 없다.

이때 등장하는 해결책이 바로:

\[Q(s, a) \approx Q(s, a; \theta)\]

Q를 table이 아니라
Neural Network (parameter $\theta$) 로 근사하는 것

이것이 바로 DQN (Deep Q-Network) 이다.


2. DQN의 핵심 아이디어

DQN의 핵심 구조는 아주 단순하게 말하면 이것이다:

state를 Neural Network에 넣으면 각 action의 Q-value가 출력된다

\[\text{input: } s \quad \longrightarrow \quad \text{Neural Network} \quad \longrightarrow \quad Q(s,a_1), Q(s,a_2), ...\]

예를 들어 action이 4개라면 출력은:

\[\begin{bmatrix} Q(s, up) \ Q(s, down) \ Q(s, left) \ Q(s, right) \end{bmatrix}\]

이 중에서 선택:

\[a = \arg\max_a Q(s,a)\]

즉, 구조는 여전히 greedy하지만
Q-table 대신 Neural Network가 판단 기준이 된다.


3. DQN의 학습 목표 (Loss function)

Q-learning의 update 식:

\[Q(s,a) \leftarrow r + \gamma \max_{a'} Q(s', a')\]

DQN에서는 이를 target으로 사용한다.

\[y = r + \gamma \max_{a'} Q(s', a'; \theta)\]

그리고 neural network의 예측값:

\[\hat{y} = Q(s, a; \theta)\]

Loss는 다음과 같이 정의한다.

\[L(\theta) = (y - \hat{y})^2\]

즉:

현재 Q 값과, 미래 기반 target Q 값의 차이를 줄이도록 학습한다.

이건 결국 일반적인 supervised learning 구조다:

RL 관점 Deep Learning 관점
target $r + \gamma \max Q(s’,a’)$
prediction $Q(s,a;\theta)$
loss MSE

4. Experience Replay

DQN에는 Q-learning에 없는 매우 중요한 개념이 들어간다.

Problem

연속된 state는 서로 너무 비슷하다. 이렇게 학습하면 neural network가 편향(bias)을 갖게 된다.

Solution → Experience Replay

경험을 $(s, a, r, s’)$ 형태로 Replay Buffer에 쌓아두고 무작위로 샘플링해서 학습한다.

이렇게 하면:

  • 데이터 상관관계 감소
  • 학습 안정성 증가
  • sample 효율 증가

5. Target Network

또 다른 문제: 우리가 참조하는 Q값도 계속 변하면 학습이 불안정해진다.

그래서 DQN은 Target Network를 따로 둔다.

  • Online Network → $Q(s,a;\theta)$
  • Target Network → $Q(s,a;\theta^-)$

일정 주기마다 $\theta^- \leftarrow \theta$ 로 업데이트하여 고정된 표적을 보고 학습하게 한다.

댓글남기기