DQN (Deep Q-Network): Q-learning에 Deep Learning을 더하다
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의 핵심 구조는 아주 단순하게 말하면 이것이다:
\[\text{input: } s \quad \longrightarrow \quad \text{Neural Network} \quad \longrightarrow \quad Q(s,a_1), Q(s,a_2), ...\]state를 Neural Network에 넣으면 각 action의 Q-value가 출력된다
예를 들어 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$ 로 업데이트하여 고정된 표적을 보고 학습하게 한다.
댓글남기기