DOOM 초당 20 frame on a single TPU
next frame prpediction PSNR 29.4
Conditioning augmentations enable stable auto-regressive generation over long trajectories.
모델은 augmented version of Stable Diffusion v1.4 - U-net 약 860M?
문 열기 - 죽이기 - 공격하기 등 상호작용이 된다.
데이터가 Observation 데이터 밖에 없을 뿐, video-only simulation 환경에서도 State와 Observation(게임 화면)은 명확히 다르다. O는 S가 pixel space에 partial projection된 결과일 뿐이다. partial projection function은 V로 정의
GameNGen (pronounced “game engine”) is a generative diffusion model that learns to simulate the game under the settings
본 논문에서는 전체 두단계로 나뉘는데
- 게임을 플레이할 수 있는 RL-agent 를 학습해서 게임을 실제로 시키면서 데이터를 모은다.
- 모은 데이터로 simulation 모델을 학습한다.
두가지는 순차적으로 일어나고, 독립적인 모델이다. 최종 목표는 인간이 플레이할 수 있는 2번째 모델이긴하다. 첫번째 작업은 두번째의 데이터를 얻기 위함.
원래는 게임을 플레이하는 agent를 만들 때 스코어를 최대화 하는걸 목표로 하지만, 여기서는 사람처럼 플레이하고, 다양한 학습 데이터를 모으는게 목표다. (간단한 리워드 function은 있다)

action condition 방법 : 기존의 Stable Diffusion에서 text condition 부분을 전부 없애고, 각 action 당 1 token의 embedding을 받도록 바꿨다(action embedding은 간단하게 학습)
observation condition 방법 : 여러 프레임을 latent로 바꾼 뒤 input latent에 concat해서 사용(크로스 어텐션 해봐도 큰 효과 없었음)

NOISE AUGMENTATION이 중요했다고 하는데,

아마 갈수록 점점 퀄리티가 낮아지는걸 방지하기 위해(출력물의 퀄리티가 input보다 조금 낮으면, 그게 갈수록 누적되고 더 심해지기 때문으로 추측)
애초에 input에도 noise를 더해서 사용하는 듯. 그럼 출력물이 약간 퀄리티가 낮더라도 기존 input과 동등하게 noise가 들어간 상태가 되고, 모델은 원래 이걸로 학습하기 때문에 영향을 받지 않는다. 차이가 컸다. 특히 아래 사진처럼, 가만히 있을 때 점점 붕괴되는 현상이 많이 없어졌다.

inference 때 4 step만 해도 20 step과 퀄리티가 비슷했다 - 1-step은 많이 별로였다. Distillation model을 사용해도.

한계 -
- 모델이 최대 이전 3초까지만 참조가능했다. 애초에 현재 아키텍처로는 어떤 방법을 쓰던 컨텍스트 길이가 더 늘어나기는 힘들었다.
- RL agent가 모든 장소를 가고 모든 상호작용을 하진 않았어서 simulation 때 대응하지 못하는 상황도 있었다(이건 괜찮을듯)
- 안적어놨지만 1 step으로 줄이기?
Share article
Subscribe to our newsletter