| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 머신러닝
- TTS
- 전국국밥
- 강화학습 기초
- React
- 사이드프로젝트
- 데이터분석
- python
- DeepMind
- 음성합성
- 앱개발
- Instagrame clone
- ReactNative
- App
- TeachagleMachine
- expo
- Ros
- 논문리뷰
- 클론코딩
- coding
- pandas
- 딥러닝
- Ai
- 카트폴
- FirebaseV9
- 강화학습
- JavaScript
- clone coding
- selenium
- Reinforcement Learning
- Today
- Total
qcoding
[AI논문리뷰-강화학습] DQN - 픽셀만 보고 Atari 49개 게임을 인간 수준으로 플레이한 딥강화학습의 시작 본문
[AI논문리뷰-강화학습] DQN - 픽셀만 보고 Atari 49개 게임을 인간 수준으로 플레이한 딥강화학습의 시작
Qcoding 2026. 5. 1. 13:59📄 한 문단 요약
DQN(Deep Q-Network)은 DeepMind가 2015년 Nature에 발표한 딥강화학습 알고리즘으로, 원시 픽셀 입력만으로 Atari 2600 게임 49개를 학습해 그 중 29개에서 인간 플레이어 수준을 초과한 최초의 시스템이다. 핵심 기여는 두 가지다. 첫째, Experience Replay: 에이전트의 경험 (s, a, r, s')을 100만 개 규모의 버퍼에 저장하고 무작위 미니배치로 샘플링해 데이터 간 상관관계를 제거한다. 둘째, Target Network: Q값 목표를 계산하는 별도의 네트워크를 10,000 스텝마다 동기화하여 학습 안정성을 확보한다. 입력은 84×84 그레이스케일 프레임 4장을 스택한 텐서이며, 3개의 CNN 레이어와 512유닛 FC 레이어를 거쳐 각 행동별 Q값을 출력한다. 이 논문은 이후 Double DQN, Dueling DQN, Rainbow DQN, AlphaGo 등 현대 딥강화학습 연구의 토대가 된다.
이 논문은 무엇을 해결하려고 했나?
강화학습의 오랜 목표는 에이전트가 환경과 상호작용하며 스스로 최적 행동을 학습하는 것이다. 하지만 2015년 이전까지 이 목표는 제한된 범위에서만 달성되었다. 테이블 기반 Q-learning은 상태 공간이 작을 때만 동작하고, 선형 함수 근사는 사람이 직접 특징(feature)을 설계해야 했다.
이 논문이 답하려는 질문은 하나였다. "하나의 알고리즘이 사람의 특징 설계 없이 원시 픽셀 입력만으로 다양한 게임을 인간 수준으로 플레이할 수 있는가?"
Atari 2600 게임은 이 질문에 완벽한 테스트베드다. 각 게임은 서로 다른 시각적 패턴, 행동 공간, 보상 구조를 가지며 공통 인터페이스(픽셀 화면 + 조이스틱)만 공유한다. 하나의 신경망이 Breakout, Pong, Space Invaders를 모두 플레이할 수 있다면, 이것은 진정한 일반 학습(general-purpose learning)의 증거가 된다.
배경지식과 핵심 키워드
핵심 개념 카드
|
Q-Learning과 벨만 방정식
행동-가치 함수 Q(s,a)는 상태 s에서 행동 a를 취한 후 최적 정책을 따를 때 기대되는 누적 보상이다. 벨만 최적 방정식: Q*(s,a) = E[r + γ·max_a' Q*(s',a')]로 표현된다. 할인율 γ=0.99를 사용해 먼 미래 보상을 현재 가치로 환산한다.
DQN에서 이 방정식의 우변이 학습 목표(target)가 되며, 좌변인 현재 Q값을 신경망으로 근사한다. 테이블로 Q값을 저장하면 Atari처럼 상태 공간이 무한대에 가까운 환경에는 전혀 적용할 수 없다. 신경망 근사가 필수인 이유다. |
ε-Greedy 탐험 전략
확률 ε로 무작위 행동, 확률 1-ε로 현재 Q값이 최대인 행동을 선택한다. 학습 초기에는 탐험(exploration)을 우선해야 다양한 경험을 수집할 수 있다.
DQN에서는 ε을 1.0에서 시작해 처음 100만 프레임에 걸쳐 선형으로 0.1까지 감소시킨다. 이후 테스트 시에는 ε=0.05를 사용한다. ε이 너무 작으면 조기에 수렴해 최적 정책을 놓친다(exploitation 편향). ε이 너무 크면 학습이 느리다. 이 스케줄링이 성능에 크게 영향을 미친다. |
|
Experience Replay (경험 재생)
에이전트가 경험한 전환 튜플 (s_t, a_t, r_t, s_{t+1})을 크기 N=100만 개의 고정 크기 버퍼 D에 저장한다. 학습 시에는 D에서 무작위로 32개 미니배치를 샘플링한다.
연속된 시간 단계 경험들은 강한 상관관계를 가진다. 이것을 그대로 학습하면 신경망이 특정 패턴에 과도하게 적응해 발산한다. 무작위 샘플링이 이 상관관계를 끊는다. 동일 경험이 평균 50회 재사용된다(버퍼 100만 / 배치 32 × 총 학습). 이것은 샘플 효율성을 크게 높이며 오프라인 지도학습과 유사한 IID 조건을 만든다. |
Target Network (목표 네트워크)
Q값 학습 목표(target) y_j = r + γ·max_a' Q(s', a'; θ⁻)를 계산하는 별도 네트워크를 유지한다. θ⁻는 C=10,000 스텝마다 메인 네트워크 θ로 복사되고 그 사이에는 고정된다.
타겟 네트워크 없이 θ로 직접 타겟을 계산하면, 파라미터 업데이트가 타겟 자체를 변화시켜 학습이 불안정해진다. 마치 움직이는 과녁을 맞히려는 것과 같다. 실험에서 타겟 네트워크를 제거하면 대부분의 게임에서 Q값이 발산하거나 성능이 급락한다. 이 기법은 DQN의 두 핵심 기여 중 하나다. |
|
Convolutional Neural Network (CNN)
공간적으로 공유된 필터를 슬라이딩하며 지역 패턴을 추출한다. 이 논문의 CNN은 3개 합성곱 레이어로 84×84×4 입력에서 시각적 특징을 자동 추출한다.
DQN에서 CNN은 Q함수 근사기의 핵심이다. 손으로 설계한 특징 없이 픽셀에서 직접 게임에 유용한 표현(공의 위치, 방향, 속도)을 학습한다. 3번째 Conv 레이어 이후 feature map을 flatten하면 3136개 값이 되고, 이것이 512유닛 FC 레이어를 거쳐 최종 Q값으로 변환된다. |
프레임 전처리와 스택
원본 210×160 RGB 프레임을 그레이스케일로 변환하고 84×84로 리사이즈한다. 연속된 4프레임을 채널 축으로 쌓아 84×84×4 텐서를 만든다.
게임에서 공의 방향과 속도는 단일 프레임만으로 알 수 없다(부분 관측성). 4프레임 스택이 이 시간 정보를 제공한다. 사실상 이것이 POMDP를 MDP로 근사하는 장치다. 추가로 프레임 스킵(frame skip) 4를 적용한다. 에이전트는 4프레임마다 행동을 결정하고, 결정된 행동을 중간 3프레임에도 반복 적용한다. 이것은 학습 속도와 반응성 사이의 균형점이다. |
|
Reward Clipping (보상 클리핑)
게임마다 점수 스케일이 다르다. Pong은 ±1이고 Breakout은 1~7, Seaquest는 0~20이다. 이것을 그대로 사용하면 게임별로 학습률을 다르게 조정해야 한다.
DQN에서는 모든 보상을 clip(r, -1, +1)으로 강제 변환한다. 양의 보상은 모두 +1, 음의 보상은 -1, 없으면 0이 된다. 클리핑은 다양한 게임에 동일한 하이퍼파라미터를 사용할 수 있게 한다는 장점이 있지만, Seaquest처럼 보상 크기가 중요한 게임에서는 정보 손실이 발생한다. 이것은 논문이 인정하는 한계다. |
RMSProp 최적화
각 파라미터의 기울기 제곱의 지수이동평균으로 학습률을 적응적으로 조정하는 최적화 알고리즘이다. 학습률 α=0.00025, decay=0.99, ε=0.01을 사용한다.
강화학습의 손실 지형은 지도학습보다 훨씬 비정상적(non-stationary)이고 들쭉날쭉하다. SGD나 Adam보다 RMSProp이 당시 실험에서 더 안정적임이 확인되었다. 미니배치 크기 32는 비교적 작다. GPU 메모리보다 학습 안정성을 우선한 선택으로, 큰 배치는 당시 실험에서 오히려 성능을 저하시켰다. |
|
마르코프 결정 과정 (MDP)
강화학습의 수학적 기반. 상태 S, 행동 A, 전이 확률 P(s'|s,a), 보상 R(s,a,s'), 할인율 γ로 구성된다. 현재 상태만으로 최적 결정을 내릴 수 있다는 마르코프 가정을 전제한다.
Atari 게임은 엄밀히 말해 부분 관측 MDP(POMDP)다. 단일 프레임으로는 속도 등 은닉 상태를 알 수 없다. DQN은 4프레임 스택으로 이것을 근사적으로 해결한다. 에피소드 종료 조건: 게임 오버 또는 최대 타임스텝(게임별 상이) 도달. 종료 상태에서는 y_j = r_j (부트스트래핑 없음)로 처리된다. |
Huber Loss (클리핑된 MSE)
|δ| ≤ 1이면 (1/2)δ², |δ| > 1이면 |δ| - 1/2인 손실 함수다. 오차가 클 때 기울기를 1로 제한해 대형 오차에 의한 파라미터 폭발(exploding gradient)을 방지한다.
Q값 학습에서 초기에는 추정값과 목표값 차이가 매우 크다. MSE를 그대로 쓰면 기울기가 폭발적으로 커진다. Huber Loss가 이를 자연스럽게 clip한다. 논문에서는 error clipping이라고 표현하지만, 이것은 Huber Loss 적용과 수학적으로 동일하다. 이후 딥강화학습 구현에서 표준으로 채택된다. |
핵심 인사이트
Experience Replay와 Target Network는 각자 독립적으로 서로 다른 불안정성을 해결한다. Replay가 IID 조건을 만족시켜 데이터 상관관계를 제거하고, Target Network가 이동하는 목표값 문제를 안정화한다. 두 기법이 함께 작동할 때 비로소 신경망 Q-learning이 대규모 환경에서 수렴한다.
기존 방법의 한계
신경망으로 Q값을 근사하려는 시도는 DQN 이전에도 있었지만 번번이 실패했다. 근본적인 문제는 세 가지였다.
첫째, 데이터 상관관계 문제. 강화학습에서 에이전트는 현재 정책으로 순차적으로 경험을 수집한다. 연속된 프레임들은 극도로 높은 상관관계를 가진다. t 시점의 프레임과 t+1 시점의 프레임은 대부분 동일한 픽셀이다. 이것을 그대로 미니배치로 구성하면 지도학습에서 i.i.d. 가정이 깨지는 것과 같다. 신경망이 최근 경험에만 편향되어 이전에 학습한 전략을 망각하는 현상(catastrophic forgetting)이 발생한다.
둘째, 비정상 학습 목표 문제. 지도학습에서는 레이블이 고정되어 있다. 그러나 Q-learning에서 학습 목표 y = r + γ·max Q(s', a'; θ)는 현재 네트워크 파라미터 θ에 의존한다. θ가 업데이트될 때마다 목표값도 함께 변한다. 마치 달아나는 표적을 쫓는 것처럼 학습이 불안정해지고 발산하기 쉽다.
셋째, 보상 스케일의 이질성. 게임마다 보상 크기가 다르면 동일한 학습률로 여러 게임을 학습하는 단일 알고리즘을 만들기 어렵다.
이전 연구인 TD-Gammon은 강화학습으로 주목할 만한 성과를 냈지만 이후 다른 도메인에서의 재현 시도는 대부분 실패했다. 이 원인이 분석되지 않은 채 "신경망 + 강화학습 = 불안정"이라는 인식이 퍼져 있었다.
제안 방법의 핵심 아이디어
DQN의 핵심은 기존 Q-learning에 두 가지 장치를 추가해 신경망 근사의 불안정성을 제거하는 것이다.
Experience Replay. 전환 튜플 (s_t, a_t, r_t, s_{t+1}, done_t)을 크기 N=100만의 순환 버퍼 D에 저장한다. 매 학습 스텝에서 D에서 32개를 균등 무작위 샘플링해 미니배치를 구성한다. 이것은 두 가지 효과를 가진다. (1) 연속 경험 간 상관관계를 파괴해 IID에 가까운 조건을 만든다. (2) 각 경험이 여러 번 재사용되어 샘플 효율성이 높아진다. 부가 효과로, 오래된 정책으로 수집된 경험도 재사용하므로 행동 정책과 학습 정책이 분리되는 오프-폴리시(off-policy) 학습이 된다.
Target Network. 메인 네트워크 θ와 별도로 파라미터 θ⁻를 가진 타겟 네트워크를 유지한다. 학습 목표는 y_j = r_j + γ·max_a' Q(s'_j, a'; θ⁻)로 계산하되, θ⁻는 C=10,000 스텝마다 θ의 복사본으로 갱신하고 그 사이에는 고정한다. 목표값이 일정 기간 동안 안정적으로 유지되므로 학습이 지도학습과 유사한 조건에서 진행된다.
손실 함수는 Huber Loss를 사용한다:
L_i(θ_i) = E_{(s,a,r,s')~U(D)} [ ℓ(y_i - Q(s,a; θ_i)) ]
여기서 ℓ은 |δ| ≤ 1이면 (1/2)δ², 아니면 |δ| - 1/2다.
모델 구조/알고리즘 흐름
입력 전처리:
- Atari 에뮬레이터에서 210×160 RGB 프레임 수신
- 그레이스케일 변환 (Y = 0.299R + 0.587G + 0.114B)
- 84×84로 이중선형 보간(bilinear interpolation) 리사이즈
- 최근 4프레임을 채널 축으로 쌓아 84×84×4 텐서 생성
CNN 아키텍처:
입력: 84 × 84 × 4
Conv1: 32 필터, 8×8 커널, 스트라이드 4 → 20×20×32 + ReLU
Conv2: 64 필터, 4×4 커널, 스트라이드 2 → 9×9×64 + ReLU
Conv3: 64 필터, 3×3 커널, 스트라이드 1 → 7×7×64 + ReLU
Flatten: 7×7×64 = 3136 유닛
FC1: 512 유닛 + ReLU
출력: |A| 유닛 (게임당 4~18개) 선형 활성화 (Q값)
출력층의 각 노드가 특정 행동의 Q값을 나타내므로, 모든 행동의 Q값을 단일 순전파로 계산한다. 이것은 각 행동마다 별도 순전파가 필요한 설계보다 |A|배 효율적이다.
DQN 학습 알고리즘 (수도코드):
# 초기화
Q, Q_target 동일한 아키텍처의 신경망으로 초기화
D ← 빈 replay buffer (크기 N=1,000,000)
ε ← 1.0
# 학습 루프
for episode in range(M):
s ← 게임 초기화 → 전처리
for t in range(T):
# ε-greedy 행동 선택
a ← random() if rand() < ε else argmax_a Q(s, a; θ)
# 환경 실행
r, s' ← step(a); r ← clip(r, -1, 1)
# 버퍼에 저장
D.push((s, a, r, s', done))
# 미니배치 학습 (버퍼가 충분히 찼을 때)
if len(D) >= batch_size:
batch ← D.sample(32)
y_j = r_j if done else r_j + γ * max_a' Q_target(s'_j, a'; θ⁻)
loss = Huber(y_j - Q(s_j, a_j; θ))
θ ← RMSProp 업데이트
# 타겟 네트워크 동기화
if t % C == 0:
θ⁻ ← θ
# ε 감소
ε ← max(0.1, ε - 0.9/1,000,000)
s ← s'
논문 그림/표로 이해하기
| 게임 | DQN 점수 | 인간 플레이어 | 무작위 정책 | 인간 대비 |
|---|---|---|---|---|
| Breakout | 401.2 | 31.8 | 1.7 | 1262% |
| Pong | 18.9 | 9.3 | -20.7 | 203% |
| Q*bert | 10,596 | 13,455 | 163.9 | 79% |
| Space Invaders | 1,976 | 1,652 | 148.0 | 120% |
| Seaquest | 5,286 | 42,054 | 68.4 | 13% |
| ✦ 전체 평균 (49게임) | 인간 초과 29개 | 기준 | - | 59% |
실험 설정과 결과 해석
실험 환경. Atari 2600 에뮬레이터(ALE: Arcade Learning Environment)로 49개 게임을 테스트했다. 모든 게임에 동일한 아키텍처와 동일한 하이퍼파라미터를 사용했다. 게임별로 튜닝하지 않는다는 원칙을 엄격히 지켰다.
학습 설정. 게임당 5천만 프레임(프레임 스킵 4 적용 시 실제 의사결정 1천250만 회)을 학습했다. NVIDIA K40 GPU 1개와 8코어 CPU를 사용했으며, 게임당 학습에 약 12~14일이 소요되었다. 총 49개 게임을 학습하면 실질적으로 매우 큰 컴퓨팅 비용이다.
평가 방법. 학습 후 ε=0.05로 고정하고 30개 에피소드의 평균 점수를 측정했다. 비교 대상인 인간 플레이어는 각 게임을 2시간 연습한 후 20분간 플레이한 전문 게임 테스터의 점수다.
핵심 결과 해석. Breakout(1262%)과 Pong(203%)처럼 단기 전략이 명확한 게임에서 DQN이 인간을 크게 앞섰다. 반면 Seaquest(13%)처럼 장기 계획과 자원 관리가 필요한 게임에서는 큰 차이로 뒤졌다. 이것은 DQN이 수십 프레임 이내의 패턴은 잘 학습하지만, 수백 스텝 이상의 장기 전략 수립에는 한계가 있음을 보여준다.
핵심 인사이트
DQN의 성과는 단순히 "신경망이 게임을 잘 한다"는 것이 아니다. 하이퍼파라미터를 게임별로 바꾸지 않고 동일한 알고리즘으로 49개 게임을 전부 학습했다는 것이 핵심이다. 이것은 강화학습이 일반화(generalization) 능력을 가질 수 있음을 처음으로 대규모로 입증한 결과다.
한계와 비판적 관점
알고리즘적 한계. DQN은 Q값을 체계적으로 과대추정(overestimation)하는 경향이 있다. max_a' Q(s', a')을 타겟으로 사용하면 추정 오차가 누적될 때 Q값이 실제보다 높게 설정된다. 이것은 2016년 Double DQN 논문에서 별도의 타겟 선택 네트워크를 사용해 해결되었다.
보상 클리핑의 부작용. 점수 클리핑은 게임 간 이식성을 높이지만, 보상의 크기 정보를 잃는다. 예를 들어 Seaquest에서 점수 1과 점수 20을 구별하지 못한다. 이것이 장기 전략이 필요한 게임에서 DQN이 특히 약한 이유 중 하나다.
단기 기억의 한계. 4프레임 스택은 매우 짧은 시간 범위만 커버한다. 수백 스텝 이전의 정보를 기억할 방법이 없다. 이것은 MontezumaRevenge처럼 장거리 탐험이 필요한 게임에서 DQN이 거의 점수를 얻지 못하는 원인이다.
균등 샘플링의 비효율. Experience Replay에서 모든 경험을 동등하게 샘플링한다. 실제로는 학습에 더 유용한 경험(TD 오차가 큰 경험)이 있다. 2016년 Prioritized Experience Replay 논문이 이를 개선했다.
재현성. 논문에서 단일 게임당 단일 실험 결과를 보고했다. 랜덤 시드에 따른 분산이 크기 때문에 여러 실험의 평균과 표준편차를 보고하지 않은 것은 현재 기준으로는 아쉬운 점이다.
Off-policy의 수렴 보장 부재. DQN은 현재 정책과 다른 과거 정책으로 수집된 경험을 사용하는 오프-폴리시 방식이다. 이론적으로 함수 근사와 결합된 오프-폴리시 Q-learning의 수렴은 보장되지 않는다. 실용적으로 잘 동작하지만 이론적 기반이 약하다.
구현하거나 응용한다면 무엇을 봐야 하나?
실제 구현 시 주의사항. 가장 흔한 실수는 학습 시작 전에 replay buffer를 충분히 채우지 않는 것이다. DQN 원 구현에서는 학습 시작 전 50,000 프레임의 무작위 경험을 먼저 수집한다. 또한 타겟 네트워크 업데이트 주기(C=10,000)와 학습률은 게임마다 민감하다.
핵심 하이퍼파라미터 목록:
| 파라미터 | 값 | 의미 |
|---|---|---|
| Replay buffer 크기 | 1,000,000 | 경험 저장 용량 |
| 배치 크기 | 32 | 미니배치 샘플 수 |
| 학습률 | 0.00025 | RMSProp α |
| 할인율 γ | 0.99 | 미래 보상 할인 |
| Target network 갱신 | 10,000 스텝 | θ⁻ ← θ 주기 |
| ε 초기값 | 1.0 | 탐험 확률 시작 |
| ε 최종값 | 0.1 | 탐험 확률 종료 |
| ε 감소 구간 | 1,000,000 프레임 | 선형 감소 기간 |
| 프레임 스킵 | 4 | 행동 반복 횟수 |
| 학습 시작 기준 | 50,000 프레임 | 버퍼 사전 채우기 |
오픈소스 구현 참고. OpenAI Baselines, Stable Baselines3, CleanRL 모두 DQN 구현을 포함한다. CleanRL의 구현이 단일 파일로 간결하게 작성되어 있어 학습용으로 특히 적합하다. PyTorch 기준으로는 torch.nn.SmoothL1Loss가 Huber Loss에 해당한다.
현재 실용적 활용. DQN 자체보다는 이를 기반으로 한 Rainbow DQN(Double DQN + PER + Dueling + N-step + Distributional + NoisyNet)이 실제 프로젝트에서 사용된다. 단순한 이산 행동 공간 환경에서 강화학습을 처음 적용할 때 DQN이 여전히 좋은 출발점이다.
한 줄 결론과 다음에 읽을 논문
한 줄 결론: DQN은 Experience Replay와 Target Network라는 두 가지 공학적 발명으로 신경망 Q-learning의 불안정성을 극복하고, 단일 알고리즘이 49개 Atari 게임을 인간 수준으로 플레이할 수 있음을 처음 증명했다.
다음에 읽을 논문:
- Double DQN (van Hasselt et al., 2016): Q값 과대추정 문제를 별도의 행동 선택·평가 네트워크로 해결. DQN 바로 다음 단계.
- Prioritized Experience Replay (Schaul et al., 2016): TD 오차 기반으로 중요한 경험을 더 자주 샘플링.
- Dueling DQN (Wang et al., 2016): Q값을 State Value V(s)와 Advantage A(s,a)로 분리해 학습 효율 향상.
- Rainbow (Hessel et al., 2018): 위 개선들을 통합한 종합 버전.
- AlphaGo (Silver et al., 2016): DQN 팀이 만든 후속 연구로, 정책 신경망과 가치 신경망을 결합해 바둑에서 인간 챔피언을 처음으로 이긴 시스템.
출처:
- Mnih et al., "Human-level control through deep reinforcement learning", Nature 518, 529–533 (2015). https://www.nature.com/articles/nature14236
- 프리프린트: Mnih et al., "Playing Atari with Deep Reinforcement Learning", arXiv:1312.5602 (2013). https://arxiv.org/abs/1312.5602
