\documentclass[a4paper]{article}
\usepackage[fontset=fandol]{ctex}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage[margin=2.5cm]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{etoolbox}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{float}

\newtcolorbox{knowledgebox}[1]{
    enhanced, colback=blue!5!white, colframe=blue!75!black, colbacktitle=blue!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, attach boxed title to top left={yshift=-2mm, xshift=2mm},
    boxrule=1pt, sharp corners
}
\newtcolorbox{importantbox}[1]{
    enhanced, colback=yellow!10!white, colframe=yellow!80!black, colbacktitle=yellow!80!black,
    coltitle=black, fonttitle=\bfseries, title=#1, sharp corners
}
\newtcolorbox{warningbox}[1]{
    enhanced, colback=red!5!white, colframe=red!75!black, colbacktitle=red!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, sharp corners
}

\lstset{
    language=Python, basicstyle=\ttfamily\small, keywordstyle=\color{blue},
    stringstyle=\color{red!60!black}, commentstyle=\color{green!60!black},
    breaklines=true, frame=single, numbers=left, numberstyle=\tiny\color{gray},
    captionpos=b, extendedchars=false
}

\newcommand{\notetitle}{[CS25 V5] Transformers for Video Generation (Movie Gen) --- Andrew Brown, Meta}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{Spring 2025}
\newcommand{\videochannel}{Stanford CS25: Transformers United V5}
\newcommand{\videopublishdate}{Spring 2025}
\newcommand{\videoduration}{$\sim$1h}
\newcommand{\videourl}{}
\newcommand{\videocoverpath}{cover.jpg}
\newcommand{\repourl}{https://github.com/hqhq1025/ai-course-notes}


% Footer with repo info
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\footnotesize\color{gray}\href{\repourl}{AI Course Notes}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}

\begin{titlepage}
\centering
{\Large 课程笔记\par}
\vspace{1.2cm}
{\huge\bfseries \notetitle\par}
\vspace{0.8cm}
{\large \noteauthors\par}
\vspace{0.3cm}
{\large \notedate\par}
\vspace{1.2cm}

\ifdefempty{\videocoverpath}{
{\small 请在生成笔记时填入视频封面图的本地路径。\par}
}{
\includegraphics[width=0.82\textwidth,height=0.45\textheight,keepaspectratio]{\videocoverpath}\par
}

\vfill
\begin{tcolorbox}[width=0.9\textwidth, colback=black!2!white, colframe=black!60, sharp corners]
\textbf{视频作者/频道}：\videochannel\par
\textbf{发布日期}：\videopublishdate\par
\textbf{视频时长}：\videoduration\par
\ifdefempty{\videourl}{}{
\textbf{视频链接}：\href{\videourl}{\nolinkurl{\videourl}}\par
}
\par
\textbf{项目主页}：\href{\repourl}{\nolinkurl{\repourl}}\par
\end{tcolorbox}
\end{titlepage}

\tableofcontents
\newpage

\section{引言：视频生成的飞速进步}

Andrew Brown 是 Meta GenAI 团队的研究科学家，专注于视频生成。他在牛津大学 VGG 组（Andrew Zisserman 指导）完成 PhD 后加入 Meta，先后参与了 Emu Video 和 Movie Gen 等前沿视频生成项目。

本讲的核心信息可以用一句话概括：\textbf{对简单 Transformer 进行数据、计算和模型参数的扩展，在视频生成领域同样有效。}

\begin{knowledgebox}{视频生成的惊人进步}
2022 年 9 月的最先进模型只能生成模糊、不自然的短视频。仅仅两年后（2024 年 10 月），Movie Gen 就能生成几乎无法与真实视频区分的高质量内容——包括复杂运动、奇幻场景，甚至镜面反射等物理效果。这种进步速度在机器学习各子领域中都是空前的。
\end{knowledgebox}

\subsection{个人动机}

Andrew 分享了他进入视频生成领域的契机：2019 年在牛津听了 MIT Antonio Torralba 教授关于 GAN Dissection 的讲座。当时的图像生成模型只能产生模糊的厨房场景，但研究者发现可以通过激活/去激活特定神经元来让窗户出现或消失——更令人震惊的是，模型自动学会了``窗户会透光并在大理石台面上产生反射''这一物理常识。

\subsection{本章小结}

视频生成在两年内经历了从``模糊可辨''到``以假乱真''的飞跃，Transformer + 扩展是实现这一进步的核心策略。

\section{视频生成的历史背景}

\subsection{两个里程碑事件}

视频生成领域在 2022--2024 年间经历了两个关键转折：

\textbf{里程碑一：扩散模型进入视频生成（2022）。} 整个社区开始采用扩散建模方法进行视频生成，取代了之前的 GAN 和 VAE 方法。

\textbf{里程碑二：Sora 的发布（2024 年 2 月）。} OpenAI 的 Sora 展示了令人震惊的视频生成质量，改变了整个领域的研究格局和公众预期。

\begin{knowledgebox}{视频生成方法的汇聚}
在 Sora 之前，不同团队使用不同架构和训练策略，方法差异很大。Sora 之后，几乎所有团队都汇聚到了相似的方法——基于 Transformer 的扩散/Flow Matching 模型。Movie Gen 也是在这一趋势下的产物。
\end{knowledgebox}

\subsection{本章小结}

扩散模型的引入和 Sora 的发布是视频生成领域的两个分水岭事件。

\section{时间自编码器（Temporal Autoencoder）}

\subsection{为什么需要压缩？}

视频数据量极大：一段 16 秒、768$\times$768 分辨率的视频包含约 $768 \times 768 \times 30 \times 16 \approx 2.83 \times 10^8$ 个像素。直接在像素空间训练扩散模型计算上不可行，必须先进行压缩。

\subsection{TAE 的设计}

Movie Gen 使用\textbf{时间自编码器}（Temporal Autoencoder, TAE）将视频压缩到紧凑的潜空间：

\begin{itemize}
    \item \textbf{空间压缩}：$8 \times 8$（每个 $8 \times 8$ 像素块变成一个 token）
    \item \textbf{时间压缩}：$8 \times$（每 8 帧变成 1 帧的 token）
    \item 总压缩比约 $512 \times$
\end{itemize}

TAE 的训练使用了\textbf{对抗损失}（GAN Loss），这是一个重要的技术细节：

\begin{importantbox}{对抗损失提升压缩率}
传统 VAE 仅使用 L1 重建损失训练时，能实现的压缩比非常有限。VQ-GAN（2021）发现，引入 GAN 判别器的对抗损失后，解码器获得了更大的``自由度''——不需要精确重建每个像素，只需要生成看起来``真实''的结果。这使得压缩比提升了约 2 倍。
\end{importantbox}

\subsection{本章小结}

时间自编码器通过 $512\times$ 的压缩比使视频扩散模型的训练成为可能，对抗损失是实现高压缩比的关键技术。

\section{Flow Matching 训练框架}

\subsection{什么是 Flow Matching？}

Movie Gen 使用 \textbf{Flow Matching} 而非传统的 DDPM 作为训练框架。Flow Matching 的核心思想：

\begin{enumerate}
    \item 定义从噪声分布到数据分布的一条直线路径
    \item 在路径上的任意点，训练模型预测\textbf{速度向量}（将样本从噪声推向数据的方向）
\end{enumerate}

训练目标简单明了：

$$\mathcal{L} = \mathbb{E}_{t, x_0, \epsilon}\left[\| u_\theta(x_t, t, p) - v_t \|^2\right]$$

其中 $v_t$ 是从含噪样本 $x_t$ 指向数据样本 $x_0$ 的速度向量，$p$ 是文本条件，$u_\theta$ 是模型预测。

\subsection{推理过程}

推理时，从高斯噪声出发，使用 ODE（常微分方程）求解器沿时间步序列迭代去噪：

$$x_{t+\Delta t} = x_t + u_\theta(x_t, t, p) \cdot \Delta t$$

Movie Gen 使用了简单的 Euler 求解器。

\subsection{本章小结}

Flow Matching 提供了比 DDPM 更简洁的训练框架，其速度预测目标和 ODE 求解器使推理过程直观高效。

\section{模型架构：Llama 3 用于视频生成}

\subsection{为什么选择 Llama 架构？}

Movie Gen 使用了 \textbf{Llama 3} 的 Transformer 架构（随机初始化，不使用预训练权重）作为扩散模型的骨干网络。

选择 Llama 的原因不是因为它在视频任务上有特殊优势，而是因为：
\begin{itemize}
    \item Meta 已经知道如何大规模训练这种架构
    \item 超参数调优、分布式训练基础设施都已就绪
    \item 架构的可扩展性已经在语言模型中得到验证
\end{itemize}

\begin{warningbox}{架构选择的工程考量}
大规模模型训练是极其困难的工程问题。每次改变架构都需要重新探索超参数、训练稳定性等问题。选择已知如何扩展的架构（即使它最初是为其他任务设计的）往往是最务实的选择。
\end{warningbox}

\subsection{三个必要的修改}

Llama 3 是为自回归文本生成设计的，将其用于视频 Flow Matching 需要三个修改：

\textbf{1. 交叉注意力层（文本条件注入）。}
在自注意力层和前馈网络之间插入交叉注意力层，将文本条件注入视频生成过程。

文本表示使用三个互补的预训练编码器：
\begin{itemize}
    \item \textbf{UL2}：侧重语义理解
    \item \textbf{MetaCLIP}：侧重视觉-语言对齐
    \item \textbf{ByT5}：字符级编码器，擅长处理细粒度文本（如拼写、特殊符号）
\end{itemize}

\textbf{2. adaLN（时间步条件注入）。}
通过自适应层归一化将时间步信息注入每个 Transformer 块。

\textbf{3. 因果注意力 $\to$ 双向注意力。}
Llama 3 使用因果掩码（只看之前的 token），但对于去噪任务，所有 token 之间都应相互可见，因此改为双向全注意力。

\subsection{模型规模}

Movie Gen 的最终模型达到 \textbf{30B 参数}——这是一个巨大的视频生成模型。

\subsection{本章小结}

Llama 3 架构仅需三个最小修改即可用于视频 Flow Matching，这证明了 Transformer 架构的通用性。

\section{训练策略}

\subsection{渐进式训练}

Movie Gen 采用\textbf{渐进式训练}策略，逐步提升分辨率和时长：

\begin{enumerate}
    \item 先在低分辨率、短视频上训练
    \item 逐步提升到更高分辨率和更长时长
    \item 每个阶段继承前一阶段的权重
\end{enumerate}

\subsection{图像-视频联合训练}

一个关键的训练技巧是将图像视为单帧视频，进行图像和视频的联合训练：
\begin{itemize}
    \item 高质量图像数据量远大于视频数据
    \item 图像训练帮助模型学习高质量的视觉表示
    \item 视频训练在此基础上学习时间一致性和运动
\end{itemize}

\subsection{数据的重要性}

\begin{importantbox}{数据质量是核心}
Movie Gen 的成功在很大程度上归功于高质量的训练数据。数据管道包括：
\begin{itemize}
    \item 严格的质量过滤（去除低质量、重复、有害内容）
    \item 精心的文本描述（使用 LLM 为视频生成详细 caption）
    \item 平衡的数据分布（避免过度偏向某些类型的内容）
\end{itemize}
\end{importantbox}

\subsection{本章小结}

渐进式训练和图像-视频联合训练是训练大规模视频生成模型的关键策略。

\section{视频编辑能力}

\subsection{指令驱动编辑}

Movie Gen 不仅能从文本生成视频，还能进行视频编辑：
\begin{itemize}
    \item 输入原始视频 + 编辑指令（如``将跑步者变成充气恐龙''）
    \item 模型生成保持原视频结构但遵循编辑指令的新视频
\end{itemize}

\subsection{本章小结}

视频编辑能力展示了模型对视频内容的深层理解——不仅能生成，还能有意义地修改。

\section{总结与延伸}

本讲详细拆解了 Movie Gen 从架构到训练的每个技术细节。核心结论：

\begin{enumerate}
    \item \textbf{Scaling 是王道}：数据、计算、参数的扩展对简单 Transformer 在视频生成领域同样有效。
    \item \textbf{架构简单性}：仅对 Llama 3 做了三个修改就能进行视频生成，证明了 Transformer 的通用性。
    \item \textbf{压缩是关键}：TAE 的 $512\times$ 压缩使视频扩散训练成为可能。
    \item \textbf{训练策略重要}：渐进式训练、图像-视频联合训练是大规模模型训练的实用技巧。
    \item \textbf{数据决定上限}：高质量数据管道是最终生成质量的关键决定因素。
\end{enumerate}

\subsection{拓展阅读}
\begin{itemize}
    \item Meta, ``Movie Gen: A Cast of Media Foundation Models'', 2024
    \item Polyak et al., ``Movie Gen Video'', 2024
    \item Singer et al., ``Make-A-Video: Text-to-Video Generation without Text-Video Data'', 2022
    \item Esser et al., ``VQ-GAN: Taming Transformers for High-Resolution Image Synthesis'', 2021
    \item Lipman et al., ``Flow Matching for Generative Modeling'', 2023
\end{itemize}

\end{document}
