디퓨전 포싱은 노이즈 낀 과거를 조건으로 배워 오류 누적을 늦췄다. 하지만 학습 때 조건으로 받는 과거는 여전히 데이터의 과거에 노이즈를 섞은 것이다. 모델이 직접 만든 과거와는 다르다. 노출 편향을 뿌리에서 없애려면, 학습 때도 생성할 때와 똑같이 모델이 자기 과거를 딛고 영상 전체를 굴려야 하지 않을까?
역사: 느린 양방향 모델에서 빠른 자기회귀 모델로
2024년 12월 톈웨이 인(Tianwei Yin) 등은 CausVid(「From Slow Bidirectional to Fast Autoregressive Video Diffusion Models」, CVPR 2025)에서 먼저 속도 문제를 풀었다. 품질 좋은 양방향(전체 시퀀스) 모델을 선생님으로, 과거만 보는 자기회귀 모델을 학생으로 두고 증류(distillation, 큰 모델의 출력을 작은·빠른 모델이 따라 하도록 학습)했다. 선생님은 50단계로 걷어 내지만 학생은 4단계로 걷어 낸다. 증류에는 DMD(distribution matching distillation — 학생이 만든 결과의 분포를 선생님이 아는 데이터 분포에 맞추는 증류)를 썼다. H100(엔비디아의 데이터센터용 GPU) 한 장에서 초당 9.4프레임을 만들었다. 다만 학생을 학습시킬 때 넣어 준 과거는 여전히 디퓨전 포싱처럼 데이터의 프레임에 노이즈를 섞은 것이었다.
2025년 6월 CausVid의 마지막 저자였던 쉰 황(Xun Huang) 등은 「Self Forcing: Bridging the Train-Test Gap in Autoregressive Video Diffusion」(NeurIPS 2025 스포트라이트)을 냈다. 이름의 「self」가 핵심이다. 학습 때도 모델이 자기가 만든 프레임을 과거로 받는다. 논문은 CausVid가 학습 때 맞춘 분포가 실제로 영상을 만들 때의 분포와 어긋나서 효과가 크게 깎인다고 짚었다.
학습 중 롤아웃과 영상 전체의 손실
셀프 포싱(self forcing)은 학습 스텝마다 영상을 처음부터 자기회귀로 만든다(롤아웃 — 모델을 실제로 굴려 샘플을 만드는 것). 첫 프레임을 4단계로 걷어 내고, 그 결과를 KV 캐시(앞 프레임을 처리하며 계산해 둔 값을 저장해 다시 쓰는 것)에 넣고, 그걸 보고 둘째 프레임을 만든다. 생성할 때와 똑같다. 그렇게 만든 영상 전체를 놓고, 진짜 영상의 분포와 얼마나 가까운지를 손실로 삼는다. 프레임 하나의 정답을 맞히는 대신 영상 전체를 통째로 평가하는 손실이다.
아래 그림은 지금까지 나온 세 포싱이 학습 때 받는 과거를 나란히 놓은 것이다.
논문은 이 자리에 세 가지 손실을 시험했다. DMD(역방향 KL), SiD(두 분포의 스코어 차이를 제곱해 재는 피셔 발산), GAN(진짜와 가짜를 가려내는 판별기와 겨루기)이다. DMD를 쓰면 이렇다.
기댓값이 x∼pθ, 곧 모델이 직접 만든 영상 위에서 계산된다는 점이 티처 포싱과의 가장 큰 차이다. 실제로 logpdata를 알 수는 없으므로, DMD는 그 그래디언트를 두 스코어(분포의 로그확률을 입력으로 미분한 것)의 차이로 구한다. 하나는 진짜 영상 분포의 스코어로, 선생님 디퓨전 모델이 준다. 다른 하나는 학생이 만든 영상 분포의 스코어로, 학생 샘플로 따로 학습하는 보조 모델이 준다. 둘의 차이가 「진짜 영상 쪽으로 가려면 이 픽셀을 어느 쪽으로 옮겨야 하는가」를 알려 준다.
영상 전체를 여러 단계로 굴리고 그 전부로 그래디언트를 흘리면 메모리가 버티지 못한다. 셀프 포싱은 학습 스텝마다 디노이징을 몇 단계에서 멈출지 무작위로 골라, 프레임마다 마지막 디노이징 단계로만 그래디언트를 흘리고, 앞 프레임에서 오는 그래디언트는 끊는다(확률적 그래디언트 절단). 결과는 H100 한 장에서 초당 17프레임, 첫 화면까지 0.69초였다(알리바바가 공개한 13억 파라미터 영상 모델 Wan2.1에서 출발, 덩어리 단위 설정). 품질은 훨씬 느린 양방향 모델과 맞먹거나 앞섰다고 보고했다.
ML에서: 강화학습의 눈으로 보면
위 식의 둘째 등호를 다시 읽어 보자. 역방향 KL을 줄이는 것은 Ex∼pθ[logpdata(x)]+H(pθ)를 키우는 것과 같다. 자기가 만든 샘플 위에서, 「진짜 영상다움」 logpdata를 보상처럼 키우고 엔트로피로 다양성을 지키는 꼴이다. 생성 모델을 정책(입력을 받아 출력을 내는 모델)으로 보면, 티처 포싱은 데이터 위에서 배우는 모방 학습(오프폴리시, 행동을 만든 정책과 배우는 정책이 다름)이고, 셀프 포싱은 자기 롤아웃 위에서 배운다(온폴리시, 지금의 정책이 만든 데이터로 배움). 강화학습이 SFT(정답 예시를 따라 하는 지도 미세조정)와 갈라지는 바로 그 지점에서, 영상 모델의 학습 목표가 먼저 강화학습 쪽으로 한 걸음 옮겨 온 것이다.
문제 7 — 두 가지 피아노 연습
연주회를 앞둔 학생의 두 연습법이다. A: 선생님이 옆에 앉아 있다가 틀린 음이 나오면 바로 멈추고, 그 마디를 악보대로 쳐 준 뒤 다음 음부터 이어 치게 한다. 점수는 「음마다 맞았는가」로 매긴다. B: 처음부터 끝까지 멈추지 않고 혼자 친 것을 녹음해 듣고, 선생님이 「곡 전체가 음악처럼 들리는가」로 평가한다. (가) 연주회 무대와 조건이 같은 연습은 어느 쪽인가? (나) B로 연습하면 무엇이 비싸지는가?
김민준
(가)는 A요. 선생님이 옆에서 다 맞춰 주니까 실수가 거의 없잖아요. 무대에서도 실수가 적겠죠.
선생님
민준 학생, 무대에서 틀린 음이 나오면 누가 그 마디를 바르게 쳐 주죠?
김민준
아무도요. 틀린 채로 다음 음을 이어야 하네요. A는 늘 바르게 쳐진 마디 뒤에서 이어 쳤으니까, 틀린 마디 뒤에서 이어 치는 건 해 본 적이 없고요. 무대와 같은 건 B예요.
선생님
그래요. B는 자기가 친 소리 위에서 이어 가고, 평가도 곡 전체로 받죠. (나)는요?
이서연
한 번 평가받으려면 곡을 처음부터 끝까지 쳐야 해요. A는 틀린 마디만 다시 치면 되는데요.
이서연
4분짜리 곡이면 B는 연습 한 번에 4분이 들어요. A는 몇 초짜리 마디를 고치는 데서 끝나고요. 무대와 같은 조건을 얻는 대신 연습 한 번이 훨씬 비싸요.
김민준
발표 리허설을 슬라이드마다 끊어 고쳐 가며 하는 것과, 실전처럼 끝까지 한 번에 하고 피드백을 받는 것의 차이네요. 뒤쪽이 진짜 같지만 시간이 몇 배로 들죠.
정리 (가) B. 무대에서는 틀린 음 뒤를 아무도 바로잡아 주지 않는다. B는 자기가 친 소리 위에서 이어 가고, 평가도 곡 전체로 받는다. (나) 평가 한 번에 곡 전체를 쳐야 해서 연습 한 번이 비싸다. 틀린 마디만 고쳐 치는 A보다 시간이 몇 배로 든다.
문제 8 — (킬러) 셀프 포싱은 강화학습인가
(가) 셀프 포싱의 학습 데이터는 누가 만드는가? 강화학습의 온폴리시/오프폴리시 중 어느 쪽에 가까운가? (나) 셀프 포싱의 손실을 「보상 + 엔트로피」 꼴로 읽으면 보상은 무엇인가? 그 보상의 그래디언트는 정책 그래디언트처럼 로그확률을 거쳐 구하는가, 아니면 다른 길로 구하는가? (다) 앞 프레임에서 오는 그래디언트를 끊어도 되는 이유를 강화학습의 말로 설명하시오.
선생님
(가)부터요. 학습에 쓰는 영상은 누가 만들죠?
김민준
학습 중인 모델이 스스로요. 그러니까 온폴리시죠.
선생님
(나)는요. 위 식에서 보상 자리에 앉은 건 뭐죠?
김민준
logpdata(x)요. 진짜 영상다울수록 커요.
김민준
그럼 정책 그래디언트랑 똑같네요. 보상을 샘플의 로그확률 그래디언트에 곱해서 올리면 되죠. 셀프 포싱이 곧 REINFORCE예요.
이서연
그런데 식에 로그확률 logpθ의 그래디언트는 어디서도 안 쓰던데. DMD는 두 스코어의 차이를 픽셀에 대고 모델 파라미터까지 거꾸로 흘린다고 했잖아.
선생님
서연 학생, 그 길이 열리려면 무엇이 되어야 하죠?
이서연
보상을 픽셀로 미분할 수 있어야 해요. logpdata를 픽셀로 미분한 게 바로 스코어고, 그건 선생님 디퓨전 모델이 줘요. 그리고 픽셀을 파라미터로 미분할 수 있어야 하고요. 생성 과정이 노이즈를 입력받는 미분 가능한 함수니까 되고요.
이서연
그러니까 보상 쪽으로 가는 방향은 같은데, 길이 달라요. 정책 그래디언트는 로그확률을 거쳐 가고, 이건 샘플 자체를 거쳐 가요. 보상이 미분되니까 가능한 길이에요.
김민준
보상이 같다고 푸는 법까지 같다고 해 버렸네요. 보상 모델이 미분 안 되는 채점기였으면 REINFORCE를 써야 했겠지만, 여기선 선생님 모델이 방향까지 알려 주니까요.
선생님
그래요. 그럼 (다). 앞 프레임에서 오는 그래디언트를 끊는 건 무엇을 버리는 거죠?
이서연
「내가 앞 프레임을 이렇게 만들었으면 지금 프레임이 더 좋아졌을까」라는 경로요.
김민준
강화학습으로 치면, 지금 행동을 고칠 때 앞에서 만들어진 상태는 그냥 주어진 걸로 보는 거네요. 정책 그래디언트도 환경을 거쳐 미분하지 않고 상태를 받은 그대로 쓰잖아요.
선생님
맞아요. 앞 프레임은 지금 프레임의 상태예요. 상태를 거쳐 미분하는 길을 버려도, 그 상태가 자기 롤아웃에서 나왔다는 사실은 그대로 남아요. 노출 편향을 푸는 데 필요한 건 그쪽이죠.
이서연
극한을 계산할 때 필요 없는 항을 버려도 되는지 확인하는 거랑 같네요. 버린 게 무엇이고 남은 게 무엇인지 따로 적어 봐야 해요.
정리 (가) 학습 중인 모델이 스스로 굴린 영상으로 배우므로 온폴리시에 가깝다. (나) 보상 자리는 logpdata(x)(진짜 영상다움)이고 엔트로피 H(pθ)가 다양성을 지킨다. 다만 그래디언트는 로그확률이 아니라 샘플을 거쳐 구한다(재매개변수화 — 샘플을 노이즈의 미분 가능한 함수로 보고 그 함수를 거쳐 미분하는 것). 선생님 모델이 스코어를 주므로 보상이 미분 가능하기 때문이다. (다) 앞 프레임은 지금 프레임의 상태다. 상태를 거친 미분을 버려도 「자기 롤아웃에서 나온 상태 위에서 배운다」는 핵심은 남는다.