스킬캠퍼스
Day 14 · Deep Q-Network
강의

오늘 끝나면

Deep Q-Network

  • Deep Q-Network의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 Deep이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

2013 딥마인드, Atari를 정복한 혁명 (Flappy Bird DQN) 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

AI · Day 14 / 강화학습

픽셀만 보고
게임을 깨다

화면 픽셀과 점수만 받아 Atari 49종을 사람 수준으로 플레이하는 에이전트 하나. 2013년, 7페이지 논문 한 편이 구글이 DeepMind를 약 6억 달러에 사게 만듦. 오늘은 그 논문을 손으로 복원함.

P.01AI · Day 14

6억 달러짜리 7페이지

게임 규칙도 공략법도 안 가르침. 오직 화면 픽셀과 점수만 줌.

Breakout에서 200에피소드쯤 지나자, 이 녀석이 벽 뒤로 공을 빼서 점수를 자동으로 긁는 터널 전략을 스스로 찾아냄. 누구도 안 가르친 전략임. 보상 최대화 명령 하나로 창발한 거임.

2013년 NIPS 워크숍 논문 한 편으로 시작된 일임. 구글의 DeepMind 인수, AlphaGo, AlphaFold, 2024년 하사비스 노벨 화학상. 논문 한 편이 10년에 걸쳐 한 산업을 만듦.

2013 → 노벨상
2013NIPS — DQN 논문 7p2014구글 DeepMind 인수2015Nature 표지 · Atari 49종2016AlphaGo, 이세돌 4:12020AlphaFold 22024하사비스 노벨 화학상

논문 한 편이 한 회사 · 한 분야 · 노벨상을 만듦

P.02AI · Day 14

Q-table은 왜 무너지나

Day 13에선 Q(s, a) 테이블로 FrozenLake를 풂. 상태 16개 × 액션 4개 = 64칸짜리 엑셀 시트. 귀여웠음.

근데 Atari 화면은 210×160 픽셀, 3채널, 8비트임. 가능한 상태 수는 256^100,800, 대략 10^242,800임. 우주 원자 수 10^80을 3,000번 곱해도 모자람. 모든 상태를 저장한다는 발상 자체가 물리적으로 불가능함.

그래서 DQN은 발상을 뒤집음. 모든 값을 저장하는 대신 값을 계산하는 함수를 학습함. MNIST에서 손글씨를 DB에 다 넣는 대신 신경망이 숫자를 계산하게 한 것과 같은 전환임.

저장 → 계산
환경상태 수테이블?
FrozenLake 4×416가능
틱택토약 5,478가능
체스약 10^45불가
바둑 19×19약 10^170불가
Atari 화면256^100,800불가

Atari 상태 수 = 우주 원자 수(10^80)를 3,000번 곱해도 모자람

P.03AI · Day 14

Q-table을 신경망으로

핵심은 한 줄임. Q(s, a)를 lookup하지 말고 CNN이 계산하게 함.

입력에 트릭이 하나 있음. 한 프레임만 보면 공이 올라가는지 내려가는지 모름. 속도 정보가 없어서임. 그래서 최근 4프레임을 채널로 쌓아 84×84×4 텐서를 만듦. 이제 CNN이 속도와 가속도를 암묵적으로 읽음.

출력도 영리함. Q값 하나가 아니라 모든 액션의 Q값 벡터를 한 번에 내보냄. forward 한 번 + argmax면 최선의 액션이 바로 나와서 빠름.

Q. terminal 상태일 때 타깃 y는 어떻게 될까?미래 보상이 없으니 y = r임. 구현할 땐 (1 - done)을 곱해 γ·max Q 항을 0으로 만듦. 이거 빼먹으면 학습이 무한히 발산함.
CNN Q-NETWORK
입력 84×84×44프레임 스택Conv 8×8 /4 + ReLU→ 20×20×32Conv 4×4 /2 + ReLU→ 9×9×64Conv 3×3 /1 + ReLU→ 7×7×64Flatten → Linear 512+ ReLULinear(n_actions)Q 벡터

2015 Nature 아키텍처 — 출력은 모든 액션의 Q값 벡터임

P.04AI · Day 14

안정화 트릭 두 개

여기까지가 절반임. "CNN + Q-Learning"만으로는 학습이 그냥 터짐. DQN의 진짜 혁신은 이 두 트릭임.

첫째, Experience Replay. 연속된 경험은 서로 너무 닮아서(상관성) 신경망의 i.i.d 가정을 깸. 그래서 경험을 100만 개짜리 버퍼에 쌓아두고 무작위로 꺼내 학습함. 시간적 상관이 깨짐 / 한 경험을 여러 번 재사용해 표본 효율도 오름.

둘째, Target Network. 타깃 y를 학습 중인 네트워크로 계산하면 화살 쏘는 순간 과녁이 움직임. 그래서 과거 복사본을 따로 얼려두고 N=10,000 스텝마다 한 번씩만 동기화함. 과녁이 멈추니 학습이 안정됨.

파이썬 코드 보기
# 두 트릭의 핵심
batch = random.sample(buffer, 32)   # Replay: 무작위
with torch.no_grad():
    q_next = target_net(s_next).max(1)[0]   # 얼린 과녁
    y = r + gamma * q_next * (1 - done)      # terminal이면 r만
loss = smooth_l1_loss(q_net(s).gather(1, a), y)   # Huber
if step % 10000 == 0:
    target_net.load_state_dict(q_net.state_dict())
REPLAY + TARGET
움직이는 과녁 놀이터 · Q를 타깃 y = r + γ·Q_target 로 끌어당긴다
참값 r/(1-γ) = 10.00Q값 추이 (최근 120스텝)
Target Network
켬 — 과녁을 얼림
step 0
현재 Q
0.00
참값
10.00
오차
10.00
타깃이 얼려 있어 과녁이 멈춤 → 안정적으로 참값으로 끌려가는 중.
P.05AI · Day 14

Rainbow와 비즈니스

DQN은 출발점임. 이후 개선이 줄줄이 나옴. Double DQN은 과대평가를 한 줄로 잡고, Dueling은 가치와 이점을 분리하고, Prioritized Replay는 어려운 경험을 더 공부함.

2017년, Rainbow가 이 일곱 가지를 전부 합침. Atari 57종에서 사람 대비 median 223%. 하나씩 떼봤을 때 가장 아쉬운 건 Prioritized Replay와 Multi-step이었음.

비즈니스에선? 순차 의사결정 + 장기 보상 + 시뮬레이터 삼박자가 맞으면 DQN 후보임. 생산 라인 스케줄링, 데이터센터 냉각(구글 DC 에너지 40% 절감), 개인화 랭킹이 대표 사례임. 시뮬레이터가 없으면 Offline RL을 먼저 봐야 함.

Q. Target Network가 없으면 Q값이 왜 발산할까?양의 피드백 루프 때문임. Q가 조금 커지면 타깃 y도 커짐 / 그 그래디언트가 Q를 더 키움. Target Network로 참조점을 잠깐 얼리면 이 루프가 끊김.
DQN 진화 계보
Standard DQNDouble DQNDuelingPrioritized ReplayMulti-step (n=3)Distributional C51Noisy NetsRainbow223%사람=100% 기준 median

일곱 개선을 합친 Rainbow — Atari 57종에서 사람의 2배 이상임

3줄 요약

  1. 12013 딥마인드, Atari를 정복한 혁명 (Flappy Bird DQN)
  2. 2Deep Q-Network은 준비운동 → 지도학습 → 시퀀스 → 생성모델 → 실무 적용 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

Deep

2013 딥마인드, Atari를 정복한 혁명 (Flappy Bird DQN)

모델

입력을 받아 예측이나 출력을 만드는 계산 규칙

손실

예측이 정답에서 얼마나 빗나갔는지 재는 숫자