← 딥러닝 월드모델

대문을 '이 사이트:대문' 문서로 교체: 조직도 제거, 최근글·많이 이어지는 글 자동 생성, 딥러닝 월드모델 프로젝트 문서 추가

프로젝트/딥러닝-월드모델
2026.10.08 · 694d13aa · +49
---
title: 딥러닝 월드모델
description: 게임 화면만 보고 세계가 어떻게 움직이는지 머릿속에 짓는 에이전트. DreamerV3 + ViZDoom.
---
 
```틀
제목: 딥러닝 월드모델
바탕: DreamerV3 (PyTorch)
환경: ViZDoom · health gathering supreme
입력: 64×64 화면
잠재상태: 이산 32×32 + 연속 512
내 코드: 1,047줄
```
 
## 뭘 만들었나
 
에이전트가 게임 화면만 보고 세계가 어떻게 움직이는지를 머릿속에 짓는다. 그 머릿속 모형만으로 다음에 뭐가 보일지 상상하고, 상상 안에서 행동을 고른다. 실제로 움직여 보지 않고.
 
핵심은 화면 세 개다. 왼쪽은 실제 게임, 가운데는 모델이 지금 보고 있다고 믿는 장면, 오른쪽은 여섯 갈래로 15스텝 앞까지 상상한 장면. 셋을 나란히 두면 모델의 머릿속이 언제 현실과 갈라지는지 눈으로 보인다.
 
## 왜
 
강화학습은 보통 실패를 통해 배운다. 수백만 번 죽어야 한다. 월드모델은 그걸 뒤집는다 — 세계의 규칙을 먼저 배우고, 그다음부터는 상상 안에서 연습한다. 죽는 연습을 머릿속에서 하니까 실제 경험이 훨씬 적게 든다.
 
내가 보고 싶었던 건 성능 숫자가 아니라 그 머릿속이 실제로 어떻게 생겼는가였다. 그래서 상상을 그림으로 펴서 띄우는 창을 따로 만들었다.
 
## 어떻게
 
한 프레임마다 이 순서로 돈다.
 
```flow
방향: 세로
게임 화면 -> 64x64 축소 : 640×480
64x64 축소 -> 인코더 : 0~1 정규화
인코더 -> 머릿속 상태 : 벡터
머릿속 상태 -> 여섯 갈래 상상 : 15스텝
```
 
막혔던 데. 창마다 세계를 따로 만들고 있었다. 에러는 안 나고 화면만 조용히 달라져서 찾는 데 오래 걸렸다. 시나리오·버튼·해상도를 한 파일(`world.py`)에서만 읽게 묶어서 끝냈다. 세계를 규정하는 값이 바뀌면 지문(fingerprint)이 달라지고, 체크포인트에 그 지문을 같이 넣어서 다른 세계의 가중치를 잘못 올리면 바로 알 수 있게 했다.
 
## 받기
 
- [코드 (3.4MB)](https://dl.bitztedder.com/agent-lab-code.zip) — 가중치·가상환경 제외
- [가중치 · 기본 (210MB)](https://dl.bitztedder.com/dreamer-latest.pt)
- [가중치 · 자유탐색 (433MB)](https://dl.bitztedder.com/dreamer-latest_free.pt) — 세계 지문 포함
 
`.pt` 는 `agent_state_dict` 와 `optims_state_dict` 를 담은 PyTorch 체크포인트다. 자유탐색 쪽에는 `world_fingerprint` 가 같이 들어 있어서, 올릴 때 지금 환경과 맞는지 확인할 수 있다.
 
DreamerV3 본체는 남의 코드이고, 내가 쓴 건 세계 정의·세 창·상상 전개 쪽 1,047줄이다.