자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 잠재 프레임 수를 프레임 수 ÷ 4로 셈 | 1, 5 | Wan2.1 의 VAE 는 첫 프레임을 혼자 묶는다. 1 + (프레임 수 − 1) ÷ 4 |
| 품질이 좋으니 전체 시퀀스 디퓨전을 어디에나 쓴다고 봄 | 2 | 중간에 조작이 들어오거나 길이가 정해지지 않으면 과거만 보고 한 장씩 만드는 자기회귀만 쓸 수 있다 |
| 연습 때도 실전 때도 같은 자리에서 출발한다고 봄 | 3 | 바로잡아 주는 사람이 없으면 다음 순간은 자기 실수가 만든 자리에서 시작한다. 연습 때의 성공률은 그 자리를 잰 적이 없다 |
| 프레임마다 생기는 오차가 그냥 더해진다고 봄 | 4 | 어긋난 과거가 다음 프레임에 몇 배로 넘어가는지(g)가 정한다. g > 1이면 기하급수로 커진다 |
| 배율이 1에 아주 가까우면 괜찮다고 봄 | 5 | 1.01도 240걸음이면 10.9배다. 짧은 영상에서는 두 모델이 거의 같아 보여 길게 굴려 봐야 드러난다 |
| 정답을 알려 주면 무엇이든 좋은 학습이라고 봄 | 6 | 앞 풀이와 정답이 다른 출처면 「앞을 무시하라」를 배운다 |
| 모델 과거 뒤에 붙인 정답 프레임이 원래 움직임을 가르친다고 봄 | 7 | 어긋났던 만큼 한 번에 되돌아가는, 실제 영상에 없는 움직임을 가르친다 |
| 과거 입력만 모델 것으로 바꾸면 노출 편향이 풀린다고 봄 | 8 | 목표가 여전히 데이터의 정답이면 입력과 목표가 한 영상의 짝이 아니다. 영상 전체를 평가하는 손실이 필요하다 |
| 시차를 두고 넣어도 판마다 단계 수만큼 따로 센다고 봄 | 9 | 한 번 돌릴 때 안에 든 판이 함께 나아간다. 단계 수가 아니라 돌리는 횟수(4 + 3)를 센다 |
| 학습 때 거의 나오지 않는 모양은 생성에 쓸 수 없다고 봄 | 10 | 신경망은 칸마다 자기 수준과 앞 칸의 수준을 보고 푼다. 다만 쓰지 않을 조합은 비감소 제약으로 덜어 낸다 |
| 늘 바로잡아 주는 연습이 실전에도 가장 좋다고 봄 | 11 | 실전에서는 틀린 뒤를 아무도 바로잡아 주지 않는다. 자기 소리 위에서 끝까지 이어 가는 연습이 실전과 같은 조건이고, 대신 연습 한 번이 비싸다 |
| 진짜 분포의 바늘만 따라 옮기면 된다고 봄 | 12 | 표본이 진짜 봉우리 한 점에 몰린다. 학생 분포의 바늘을 빼야(엔트로피 몫) 폭까지 맞는다 |
| 짧은 선생은 긴 영상의 어느 구간도 판단하지 못한다고 봄 | 13 | 긴 진짜 영상의 짧은 구간도 짧은 진짜 영상처럼 생겼다. 오류 누적은 짧은 구간 안에서도 드러난다. 먼 프레임 사이의 일관성만 따로 다뤄야 한다 |
| 긴 영상도 앞 프레임의 캐시를 모두 들고 갈 수 있다고 봄 | 14 | 4분이면 257GiB 다. 창으로 묶으면 크기는 고정되지만 창 밖의 먼 과거를 읽지 못한다 |
요약
| 학습법 | 과거는 어디서 오나 | 목표 | 풀린 문제 / 남은 문제 |
|---|---|---|---|
| 티처 포싱 | 데이터(깨끗) | 다음 프레임 맞히기 | 빠르고 안정적 / 노출 편향 |
| 스케줄드 샘플링 | 데이터와 모델을 섞음 | 데이터의 다음 프레임 | 노출 편향 완화 / 입력과 목표의 짝이 어긋남, 모델의 과거를 만드는 값 |
| 디퓨전 포싱 | 데이터에 프레임마다 다른 잡음 | 프레임마다 섞인 잡음 맞히기 | 두 목표를 한 모델에, 유연한 일정 / 여전히 데이터의 과거 |
| 셀프 포싱 | 모델 자신의 롤아웃 | 영상 전체의 분포 맞추기(DMD 등) | 노출 편향, 실시간 속도 / 학습 길이를 넘는 오류 누적 |
| 긴 영상 방법들 | 긴 자기 롤아웃, 재활용한 오류 | 구간별 바로잡기, 긴 문맥 선생 | 분 단위 영상 / 먼 프레임 사이의 일관성, 캐시 메모리 |
영상 모델의 학습 목표는 「다음 프레임을 맞힌다」는 줄의 목표와 「잡음을 걷어 낸다」는 디퓨전의 목표가 합쳐진 것이다. 영상 전체를 한꺼번에 걷어 내면 매끄럽지만 길이가 묶이고, 한 장씩 이어 만들면 길이와 실시간을 얻는 대신 학습 때 정답 과거만 본 모델이 생성 때 자기 과거를 딛으며 어긋남을 키운다(노출 편향, 오류 누적). 어긋남이 넘어가는 배율이 1을 조금만 넘어도 분 단위 영상에서는 크게 불어난다. 학습법들은 「학습 때 과거를 어디서 가져오는가」로 줄을 선다. 스케줄드 샘플링은 정답 과거에 자기 것을 섞었고, 디퓨전 포싱은 프레임마다 잡음 수준을 따로 주어 두 목표를 한 모델에 담고 흐려진 과거로 틀린 과거를 값싸게 흉내 냈으며, 셀프 포싱은 몇 걸음 학생이 학습 때도 자기 과거로 영상 전체를 굴리고, 그 영상 전체를 두 바늘의 차이로 진짜 영상의 분포 쪽으로 밀었다. 학습 때 굴린 길이를 넘는 긴 영상에서는 어긋난 과거를 미리 겪게 하거나 어긋남이 덜 생기게 조건을 바꾼다.
flowchart LR A["티처 포싱<br/>과거 = 데이터"] -->|"생성 때 처음 보는<br/>자기 과거(노출 편향)"| B["스케줄드 샘플링<br/>과거에 자기 것을 섞기"] B -->|"과거와 목표의 짝이 어긋남<br/>모델 과거를 만드는 값"| C["디퓨전 포싱<br/>프레임마다 따로 잡음"] C -->|"여전히<br/>데이터의 과거"| D["셀프 포싱<br/>자기 롤아웃 + 영상 전체 손실"] D -->|"학습 길이를 넘으면<br/>다시 처음 보는 과거"| E["긴 영상 방법들<br/>길게 겪기 · 조건 바꾸기"]
막힌 곳
셀프 포싱의 손실을 다시 보자. 모델은 자기가 굴린 영상 위에서, 「진짜 영상다움」 쪽으로 밀리며 배웠다. 진짜 영상다움을 알려 준 것은 데이터로 배운 선생 모델이었다. 그런데 사람이 영상에 원하는 것은 진짜 같음만이 아니다. 움직임이 크고 자연스러운지, 프롬프트와 맞는지, 인물이 끝까지 같은 얼굴인지는 데이터의 분포가 따로 알려 주지 않는다. 진짜 영상다움이 앉아 있던 그 자리에 사람이 원하는 점수를 앉히려면, 무엇을 바꿔야 할까?