想象你是一位舞台剧导演。你要指导的这场大戏有几十位演员,而舞台布景、灯光、道具每时每刻都在变化。导演最头疼的是什么?是“看不看得过来”。这一刻,女主角在舞台左侧落泪,角落里还有一把关键的道具刀,而三分钟后,这把刀将成为剧情转折的核心线索。你既要迅速扫视整个舞台,看清当下每个位置正在发生什么;又要在心中回溯过去几幕,理解此刻的剧情为什么会走向这里。 视频生成模型遇到的难题,和导演的困扰如出一辙。每个视频模型都像一个导演,面对一段又一段连续画面——既要在每一帧内部看清空间细节,又要在帧与帧之间建立时间关联。如果每次都要同时关注所有帧的所有像素点,计算量会瞬间爆炸。聪明的解决办法,是把“空间”和“时间”这两件事分开处理:先在同一帧内做“空间注意力”,把目光扫向画面中的关键区域;再沿着帧序列做“时间注意力”,把不同时刻的同一位置联系起来。这套机制,就是时空注意力机制——Sora 等视频生成模型的核心引擎。

岗位关联

时空注意力机制是理解 Sora 视频生成架构的钥匙。学透它,你才能从数学层面对视频模型做架构创新,而不仅仅是调参调用现成 API。

目录
  1. 可视化演示
  2. 视频时空关联挑战
  3. 注意力机制基石
  4. 时空分解架构
  5. 数学原理深度解析
  6. 因果掩码机制
  7. 优化加速方法
  8. Sora融合实践
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

演示时空注意力的QKV计算与3D注意力图、全局vs分解注意力架构对比、注意力权重热力图随时间演化,交互切换模式与时间步参数。

本节配有交互动效(进入视口后自动加载,约 3KB)。

时空注意力QKV计算 Q/K/V从时空Token线性投影生成 注意力=softmax(QK^T/√d)V A=softmax(QK^T/√d_k)·V 3D注意力图建模任意时空位置间依赖

视频时空关联挑战

想象你是舞台导演。舞台上,男一号在左前方念台词,右侧的布景正在缓慢旋转,角落里一位配角正偷偷移动一件道具——而这一幕,恰好呼应第二幕时埋下的伏笔。你还记得那个伏笔吗?一个称职的导演必须同时处理两个维度:空间的“当下”和时间的“过往”。视频模型面对的就是同样的难题。

一段视频可以看作一个三维数据块:宽、高和时间。如果直接对整段视频的所有像素做自注意力,计算量会随着帧数平方级增长,而且相邻帧大部分区域几乎不变,信息冗余严重。能不能把“空间”和“时间”这两个维度拆开,分别建模?

这正是时空注意力机制的核心思路:先在同一帧内部做空间注意力,让每个位置关注同帧内的其他位置;再沿时间轴做时间注意力,让每个位置关注自己在过去和未来的状态。空间注意力回答“看哪里”,时间注意力回答“何时变”——两套视线分工,避免了同时扫描全部时空坐标的灾难。

回到导演的视角,这个张量就是导演手心的“舞台沙盘”——时间和空间被编码成一个个格子。下一步,导演要在这个沙盘上训练自己的两套视线:空间扫视和时间回溯。

X∈RT×H×W×C\displaystyle X \in \mathbb{R}^{T \times H \times W \times C}
视频本质上是一个四维张量:T 帧画面,每帧高 H、宽 W,外加 RGB 等 C 个通道。
  1. T(时间帧数)表示视频的总帧数,对应导演眼中的“第几幕”。$T$ 越大,视频越长。
    T=视频总帧数T = \text{视频总帧数}
  2. H × W(空间分辨率)单帧画面的高与宽,对应舞台的空间尺寸。
    H×W=单帧空间分辨率H \times W = \text{单帧空间分辨率}
  3. C(通道数)颜色等信息通道,RGB 视频通常为 3,表示红绿蓝三个通道。
    C=通道数(RGB 为 3)C = \text{通道数(RGB 为 3)}
  4. 完整表示整个视频在时间轴、空间高宽、通道三个维度上堆叠,构成四维张量。
    X∈RT×H×W×CX \in \mathbb{R}^{T \times H \times W \times C}

注意力机制基石

现在导演需要一套指挥系统来分配目光。想象导演手里拿着一沓问题卡片 Q,每张卡片写着“我现在想了解什么”;每个演员胸前挂着一块名牌 K,写着“我是谁”;当导演决定看某人时,他接收到的表演内容称为 V。导演拿问题卡片和名牌逐一比对,越匹配的演员,获得的目光越多。

这个“比对—分配”过程,就是注意力机制。在 Transformer 中,每个 token 会同时生成自己的 Q、K、V 三个向量:Q 代表“我关心什么”,K 代表“我是什么”,V 代表“我携带的信息”。所有 token 两两计算 Q 与 K 的相似度,再把相似度变成权重,加权聚合所有 V。

最简单的相似度度量就是点积:两个向量方向越一致,点积越大。把所有 Q 和所有 K 做矩阵乘法 QKᵀ,就能得到一张“谁跟谁相关”的热力图。为了避免高维向量点积数值过大破坏数值稳定性,还要除以键向量维度的平方根 √d_k——这就是缩放点积注意力名称的由来。

回到舞台,导演的问题卡片越多,他看得越细。每一个 token 都既当“提问者”又当“被问者”,舞台上的信息便这样被充分交换——这是后续一切注意力变体的地基。

Attention(Q,K,V)=softmax(QK⊤dk)V\displaystyle \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V
缩放点积注意力:先用点积算相似度,除以根号 d 控制尺度,softmax 归一化成权重,最后加权求和所有值向量。整个过程就是导演“提问→比对→分配目光→接收信息”。
  1. QKᵀ(相似度矩阵)查询矩阵与键矩阵相乘,得到所有 token 对之间的点积相似度。
    QK⊤=所有 (Q,K) 对的相似度矩阵QK^\top = \text{所有 }(Q, K) \text{ 对的相似度矩阵}
  2. ÷√d_k(尺度缩放)对相似度分数做缩放,防止维度增大导致点积方差过大。
    QK⊤dk=缩放后的注意力分数\frac{QK^\top}{\sqrt{d_k}} = \text{缩放后的注意力分数}
  3. softmax(权重归一化)把每行的分数归一化成和为 1 的正权重。
    softmax(QK⊤dk)=注意力权重矩阵\text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) = \text{注意力权重矩阵}
  4. ×V(加权聚合)按权重混合所有 token 的值向量,得到加权输出。
    Attention(Q,K,V)=加权聚合后的值\text{Attention}(Q, K, V) = \text{加权聚合后的值}

时空分解架构

地基之上,是最关键的架构设计:怎样安排两套视线?一个直觉做法是:导演先迅速扫视全场(空间注意力),在脑海中给每个位置建立“此刻发生了什么”的索引;然后倒带回忆前几幕,把同一位置在不同时刻的状态串联起来(时间注意力)。这套“先空间、后时间”的流程,正是时空分解注意力(ST-Attention)的经典形态。

在 Transformer Block 的设计中,研究者把输入视频 token 序列重排成三维网格:形状为 T×H×W 的时空网格。每个 Block 内部先做一次空间注意力:每个 token 只与同一帧内的 token 交互;再做一次时间注意力:每个 token 只与相同空间位置的跨帧 token 交互。两者交替堆叠,构成视频 Transformer 的基本单元。

分解方案最大的优势是计算量大幅下降:全局注意力的复杂度是 O(T²H²W²),而分解后空间注意力是 O(T·(HW)²),时间注意力是 O(HW·T²),总计算量从“三者乘积的平方”变成了“两者分别的平方之和”。对长视频来说,这是从“算不动”到“勉强能算”的关键一步。

这就像导演的排练手册:第一遍先布局舞台(空间),第二遍再走时间线(时间)。两遍排练都完成,一幕戏的灵魂就出来了。

X′=T-Attn(S-Attn(X))\displaystyle X' = \text{T-Attn}\left(\text{S-Attn}(X)\right)
分解注意力的数学表达:先做空间注意力整合帧内信息,再把帧内信息沿时间轴融合。顺序不同,语义不同。
  1. S-Attn(X)(空间注意力)对 X 的每个时间帧内部做空间交互,相当于导演扫视当前舞台。
    S-Attn(X)=同一帧内 token 互相交互\text{S-Attn}(X) = \text{同一帧内 token 互相交互}
  2. T-Attn(·)(时间注意力)把空间注意力聚合后的结果沿时间轴做帧间交互,相当于导演回溯过往剧情。
    T-Attn(⋅)=同一空间位置跨帧交互\text{T-Attn}(\cdot) = \text{同一空间位置跨帧交互}

数学原理深度解析

一个导演的视角总是有限的。优秀的导演会配备多个副导演——有人专门盯动作,有人专门盯台词,有人专门盯道具——每个副导演又带自己的问题卡片。最后,导演把所有副导演的观察汇总成一份完整报告。这就是多头注意力。

多头注意力的数学结构,是在计算 Attention 之前先对 Q、K、V 做不同的线性投影,把输入映射到 h 个不同的“子空间”。每个投影后的子空间称为一个 head,各自独立计算缩放点积注意力。最后把所有 head 的输出拼接起来,再经过输出投影矩阵 W^O 融合,得到与输入维度一致的向量。

为什么要把单个注意力拆成多个头?因为在单个注意力里,Softmax 会让每个位置只关注少数重要 token,平均掉了很多信息。多头相当于给了模型 h 次机会,让不同头学到不同模式——一个头专门追踪物体边界,另一个头专门捕捉色彩变化——最后拼接时信息量远大于单头。

副导演们各司其职、互不干扰,最后导演轻轻合上报告——舞台的每个角落、每条时间线,都了然于心。

MultiHead(Q,K,V)=Concat(head1,…,headh)WO\displaystyle \text{MultiHead}(Q, K, V) = \text{Concat}\left(\text{head}_1, \dots, \text{head}_h\right) W^O
多头注意力:h 个独立子空间并行提取不同语义模式,拼接后统一投影。副导演们的分工报告被汇总成导演的完整认知。
  1. head_i(独立注意力头)第 i 个头通过独立的投影矩阵生成自己的 Q、K、V 并计算注意力。
    headi=Attention(QWiQ,KWiK,VWiV)\text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)
  2. Concat(拼接)把所有头的输出在特征维度上拼接起来。
    Concat(head1,…,headh)\text{Concat}(\text{head}_1, \dots, \text{head}_h)
  3. W^O(输出投影)对拼接结果做线性投影,融合多头信息并恢复到目标维度。
    MultiHead(Q,K,V)=Concat(⋯ )WO\text{MultiHead}(Q, K, V) = \text{Concat}(\cdots) W^O

因果掩码机制

导演有一个铁律:绝不能偷看剧本的未来。他可以回忆过去、分析现在,但未来的情节必须等它真正上演后才知道。视频生成模型也是如此——在自回归生成时,第 t 帧只能依据已生成的前 t-1 帧来预测,绝不能提前看到第 t+1 帧。这个“不偷看”的约束,靠掩码矩阵实现。

因果掩码的作用位置很微妙:它不改变 Q、K、V 本身,而是在 softmax 之前把未来位置的相似度分数全部置为 -∞。由于 softmax 会把 -∞ 指数化为 0,未来 token 的注意力权重就变成了 0,等于完全不看。这样每个 token 只能看到自己和过去的位置,形成严格的下三角关系。

除了因果掩码,视频模型中还有分块掩码和局部窗口掩码:分块掩码把视频切成小 chunk,只允许 chunk 内部交互;局部窗口掩码则设定每个 token 只与附近 k 个 token 交互。这些掩码既符合“局部性先于全局性”的视觉先验,也大幅降低计算量。

有了“不偷看”的规矩,模型才真正学会推测因果。舞台上每一个反转,都建立在过去伏笔的铺垫上——这正是因果约束赋予模型的推理能力。

\displaystyle\text{Attn}_{\text{masked}} = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}} + M\right),\quadM_{ij} =\begin{cases}0 & \text{if } i \geq j \\-\infty & \text{if } i < j\end{cases}
掩码注意力:把未来位置的分数设成 -∞,softmax 后权重为零,实现“只回顾过去,不偷看未来”。
  1. M_ij = 0(i ≥ j)允许当前及之前的位置正常参与注意力计算。
    Mij=0(i≥j)M_{ij} = 0 \quad (i \geq j)
  2. M_ij = -∞(i < j)未来位置的分数被屏蔽,softmax 后权重为 0。
    Mij=−∞(i<j)M_{ij} = -\infty \quad (i < j)
  3. 分数加掩码再过 softmax掩码被加进注意力分数中,而不是相乘,以免破坏数值稳定性。
    softmax(QK⊤dk+M)=掩码后的注意力权重\text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}} + M\right) = \text{掩码后的注意力权重}

优化加速方法

即便做了分解,注意力计算量的大头仍是 N×N 的相似度矩阵。就像导演虽然只看重点,但仍然要把全场 50 个演员的名字都过一遍。要进一步提速,需要给导演配一个智能助理:提前圈出“重点区域”,甚至教导演“不用念完所有人名也能知道谁在哪”的记忆法。

这套“重点区域”就是各种稀疏注意力策略。滑动窗口注意力:只让每个 token 与相邻 k 个 token 交互,远近信息通过多层堆叠逐步传递,看起来像导演的视线沿舞台顺时针扫过。分块注意力:把视频切成多个小片段,片段内部全量交互,片段之间通过局部 token 搭桥。更激进的轴向稀疏,先按宽度方向扫,再按高度方向扫,把二维交互拆成两条一维交互。

如果要更进一步,线性注意力采用数学上的“结合律”来取巧:正常情况下必须先算 QKᵀ 得到一个大矩阵,再乘 V;改写为 φ(Q)(φ(K)ᵀV) 后,先算 φ(K)ᵀV(小矩阵),再乘 φ(Q),完全避免了 N×N 大矩阵的生成,复杂度从 O(N²) 降到 O(N)。φ 通常选取 ReLU 等非负核函数,保证计算稳定性。

导演的助理越来越聪明:要么圈重点,要么走捷径。不再需要把所有演员都看一遍,而是精准地把目光落在最关键的位置——视频模型的推理成本也由此大幅下降。

LinearAttn(Q,K,V)=ϕ(Q)(ϕ(K)⊤V)\displaystyle \text{LinearAttn}(Q, K, V) = \phi(Q)\left(\phi(K)^\top V\right)
线性注意力:把矩阵乘法的顺序一变,先算 KᵀV 这个小矩阵,再乘 Q,绕开了 N×N 注意力矩阵的生成。
  1. φ(核特征映射)把 Q、K 映射到非负特征空间,在保证相似度语义的前提下促进数值稳定。
    ϕ(Q), ϕ(K)=非负核映射(如 ReLU)\phi(Q), \ \phi(K) = \text{非负核映射(如 ReLU)}
  2. 结合律换序(先算小矩阵)先计算 φ(K)ᵀV 得到 d×d 的小矩阵,再乘 φ(Q),避免生成 N×N 大矩阵。
    ϕ(Q)(ϕ(K)⊤V)=(ϕ(Q)ϕ(K)⊤)V\phi(Q)\left(\phi(K)^\top V\right) = \left(\phi(Q)\phi(K)^\top\right) V

Sora融合实践

现在我们把这些技术组装成 Sora 这样真正落地的系统。舞台管理系统怎么运行?导演不会直接面对每秒几十帧的原始像素——那数据量太大了。他面前是一个缩小版沙盘:视频被压缩到隐空间,再切成一个个小格子。每个格子就是一个时空 patch,像沙盘上的“舞台单元”。

Sora 采用的底子是 DiT(Diffusion Transformer)。工作流程分三步:第一步,用预训练 VAE 把原始视频压缩到低维隐空间;第二步,把隐空间特征切成时空 patch——每个 patch 覆盖一定像素和若干帧,转化为 patch token 序列;第三步,将 patch token 与位置编码、扩散时间步编码相加,送入一堆 DiT Block。每个 Block 内部就进行前面讲的分解式时空注意力。

在去噪过程中,空间注意力负责让每一帧的画面细节保持清晰连贯,时间注意力负责让物体运动符合物理规律。两者配合扩散模型逐步还原出高质量视频。由于视频被压缩在隐空间,token 数量大幅减少,时空注意力才能在可接受的算力下充分发挥作用。

导演在这个沙盘上反复排演(扩散去噪),每次排演都用时空注意力理顺空间布局与时间运动。当他最终把沙盘还原为高分辨率视频时,观众看到的就是一个流畅、稳定、充满细节的舞台世界。

xt=Embed(p)+pos(p)+time(t)\displaystyle x_t = \text{Embed}(p) + \text{pos}(p) + \text{time}(t)
这是 Sora 中 DiT 的输入构造公式:把 patch 视觉特征、时空位置、扩散时间步三者相加,作为 Transformer 的初始 token。
  1. Embed(p)(patch 视觉特征)视觉 patch 通过嵌入层映射成特征向量,构成沙盘上的格子内容。
    Embed(p)=patch 的视觉特征向量\text{Embed}(p) = \text{patch 的视觉特征向量}
  2. pos(p)(时空位置编码)位置编码告诉模型这个格子位于第几帧、第几行、第几列。
    pos(p)=空间与时间位置编码\text{pos}(p) = \text{空间与时间位置编码}
  3. time(t)(扩散时间步嵌入)扩散时间步条件信号,让模型知道当前去噪进度。
    time(t)=扩散时间步的嵌入向量\text{time}(t) = \text{扩散时间步的嵌入向量}

AI 应用场景

Sora 生成连贯运动视频

阶段:模型推理 / 生成

解决的问题:传统逐帧生成视频往往动作抖动、物体形变,因为帧与帧之间缺乏统一的运动建模。时空注意力让模型在时间维度上约束物体运动的连续性,同时保持每帧空间细节的清晰。

具体案例:用户输入“一只柯基在草地上奔跑”的文字提示。Sora 在隐空间反复去噪时,空间注意力保证每一帧里柯基的毛发、四肢形态清晰;时间注意力保证四条腿的位置沿时间轴自然交替,不会出现“瞬移”或“融化”。最终生成 10 秒连贯视频。

监控视频摘要与关键事件定位

阶段:模型训练 / 微调

解决的问题:长视频中关键事件往往跨帧出现,需要同时理解“什么物体”(空间显著性)和“何时发生”(时间显著性)。时空注意力可同时捕捉这两种信息。

具体案例:对 1 小时商场监控视频做安全事件摘要。模型先用空间注意力提取每帧中的人、包、门等物体,再用时间注意力把“人进入房间”“门关闭”“物品消失”等跨帧事件关联起来,最终输出关键情节的时间线摘要。

Python 演示

python42 行
import numpy as np def softmax(x, axis=-1):    # 数值稳定的 softmax    e_x = np.exp(x - np.max(x, axis=axis, keepdims=True))    return e_x / np.sum(e_x, axis=axis, keepdims=True) def attention(q, k, v):    # 缩放点积注意力: softmax(QK^T / sqrt(d)) @ V    d = k.shape[-1]    scores = np.einsum('bnd,bmd->bnm', q, k) / np.sqrt(d)    weights = softmax(scores, axis=-1)    return np.einsum('bnm,bmd->bnd', weights, v) def temporal_spatial_attention(video_tokens, T, HW):    # 时空分解注意力: 先空间后排时间    B, N, D = video_tokens.shape    x = video_tokens.reshape(B, T, HW, D)     # 空间注意力: 同一帧内所有 patch 互相交互    spatial = np.zeros_like(x)    for b in range(B):        for t in range(T):            frame = x[b, t]            spatial[b, t] = attention(frame[None], frame[None], frame[None])[0]     # 时间注意力: 同一空间位置沿时间轴交互    temporal = np.zeros_like(spatial)    for b in range(B):        for i in range(HW):            seq = spatial[b, :, i]            temporal[b, :, i] = attention(seq[None], seq[None], seq[None])[0]     return temporal.reshape(B, N, D) if __name__ == '__main__':    np.random.seed(42)    B, T, HW, D = 1, 4, 16, 32    x = np.random.randn(B, T * HW, D).astype(np.float32)    y = temporal_spatial_attention(x, T, HW)    print('输出形状:', y.shape)    print('输出均值:', round(float(y.mean()), 4))
目的:用 NumPy 从零实现简化版时空分解注意力。输入是 $(B, T \times HW, D)$ 的 token 序列,先在同一帧内做空间注意力,再沿时间轴做时间注意力,演示 Sora 等视频模型的核心计算单元。
  1. scores = np.einsum('bnd,bmd->bnm', q, k) / np.sqrt(d)用爱因斯坦求和约定计算所有 query 与 key 的点积相似度,并除以根号 d 做尺度缩放。
  2. weights = softmax(scores, axis=-1)对相似度矩阵做 softmax,得到和为 1 的注意力权重。
  3. x = video_tokens.reshape(B, T, HW, D)把一维 token 序列重排成三维时空网格,对应“导演的舞台沙盘”。
  4. frame = x[b, t]取出第 t 帧的所有空间 patch,作为一次空间注意力的输入。
  5. spatial[b, t] = attention(frame[None], frame[None], frame[None])[0]在同一帧内部执行空间注意力,让 patch 之间交换信息。
  6. seq = spatial[b, :, i]取出同一空间位置在所有帧上的序列,准备做时间关联。
  7. temporal[b, :, i] = attention(seq[None], seq[None], seq[None])[0]沿时间轴执行注意力,模拟导演“回忆过去剧情”。

常见误区

误区听说处理视频的注意力机制就是稀疏版的 3D 卷积,把时间当成卷积核的一维,模型结构上两者差不多。

正解3D 卷积在固定局部感受野内做加权求和,权重是学习出来的静态参数;而注意力机制通过 QK 相似度动态计算 token 间权重,感受野覆盖整个时空范围(或掩码范围),权重与输入内容相关。时空注意力能建模长距离依赖,灵活度远高于卷积。就像导演可以随时视线上全场或回忆任意一幕,而 3D 卷积像是只能用固定焦距镜头的摄像机。

为何常见:因为视频任务里两者都处理 T×H×W 数据,都能提取时空特征,功能上的重叠让不少人认为只是实现细节不同。

误区既然都是注意力,先做空间后做时间,和先时间后空间,结果应该一样。

正解两种顺序的建模语义完全不同。先空间后时间,先聚合帧内的空间上下文,再跨帧融合,能更好地保持每帧的语义完整性;先时间后空间则先让同一位置跨帧匹配,再把聚合后的信息在空间上扩散。大量实验表明 S→T 顺序在多数视频任务上更优。就像导演先看清舞台再回忆过去,与先回忆过去再对照舞台,得到的理解层次完全不同。

为何常见:因为矩阵乘法满足结合律,人们容易潜意识地认为注意力模块也满足交换律,忽略中间状态的差异。

误区因果掩码只在模型生成(推理)时用,训练时可以直接看未来帧,反正模型能收敛就行。

正解训练和推理必须保持一致。训练时如果模型能看到未来帧,它会学会依赖未来信息完成预测;推理时未来帧不存在,模型表现会严重退化。因果掩码必须在训练时就限制注意力只能看当前和过去的帧。就像排练时导演如果总偷看剧本后面,正式演出时反而不知道该怎样临场调度。

为何常见:很多人以为训练时更宽松可以加速收敛,忽略了训练与推理分布不一致带来的崩溃风险。

误区Sora 生成视频时,对整段视频的所有 token 做全局时空注意力,这样才能保证拼接质量。

正解全局时空注意力的复杂度是 O(N²),N 是时空 token 总数,视频长度稍长就不可行。Sora 实际采用分解方案:先空间注意力再时间注意力,并结合掩码稀疏化、DiT 架构等手段,把计算约束在可控范围。它是“分解 + 稀疏”的,不是“全量”的。

为何常见:注意力机制的宣传中常强调“全局建模能力”,让人误以为最强模型一定是全局全量应用,忽略了工程上的复杂度约束。

面试题

Q1. 时空注意力机制的核心思想是什么?

单选题 · easy

  • A.将三维卷积应用于视频帧
  • B.分离处理空间与时间维度← 正确答案
  • C.用循环网络模拟时间依赖
  • D.对视频整体做全局注意力

答案:B。时空注意力的灵魂就是避免同时处理全部时空坐标,而是先做空间注意力处理帧内关系,再做时间注意力处理帧间关系。就像导演先扫视舞台(空间)再回忆剧情(时间),而不是同时盯着所有演员的所有动作。

Q2. 缩放点积注意力中,为什么需要除以 √d_k?

单选题 · mid

  • A.防止点积过大导致梯度消失← 正确答案
  • B.减少参数量加快模型收敛
  • C.增强模型非线性表达能力
  • D.将向量维度压缩到更低

答案:A。当 d_k 较大时,点积结果方差随之增大,softmax 会进入梯度极小的饱和区。除以 √d_k 相当于把方差拉回 1 附近,保持梯度稳定。这就像音量太大时先调低音量再听,避免耳朵被震坏。

Q3. 以下哪些属于时空注意力分解的优点?

多选题 · mid

  • A.显著降低计算复杂度← 正确答案
  • B.增强时间建模能力← 正确答案
  • C.消除帧内空间冗余
  • D.自动学习全局时序逻辑

答案:AB。分解把全局注意力 O(T²H²W²) 拆成空间 O(T(HW)²) 加时间 O(HW·T²),计算量大幅下降;同时时间注意力专门建模帧间依赖,增强了时间建模。C 过于绝对,分解并不能完全消除帧内冗余;D 也不是分解方案直接带来的特性。

Q4. 因果掩码矩阵将未来位置设为 -∞ 的目的是?

单选题 · mid

  • A.遮挡空间维度的位置信息
  • B.防止模型看到未来帧信息← 正确答案
  • C.扩大时间维度的感受视野
  • D.减少梯度反向传播开销

答案:B。视频自回归生成时,第 t 帧只能依据前 t-1 帧预测。把未来位置的注意力分数设为 -∞,softmax 后权重为 0,模型就“看不到”未来。这就像导演的铁律:不能偷看剧本后面的内容。

Q5. 以下哪些是优化时空注意力的常见方法?

多选题 · hard

  • A.滑动窗口局部注意力← 正确答案
  • B.替换 ReLU 激活函数
  • C.线性注意力核近似← 正确答案
  • D.增大批量归一化参数

答案:AC。滑动窗口让每个 token 只与邻近 token 交互,线性注意力利用结合律避免 N×N 大矩阵,都是经典的注意力加速手段。替换激活函数和调整归一化参数是训练技巧,并不针对注意力的计算复杂度优化。

Q6. Softmax 在注意力机制中的主要作用是什么?

单选题 · easy

  • A.将注意力分数归一化成概率权重← 正确答案
  • B.将特征向量压缩到低维空间
  • C.提取图像中的高频空间细节
  • D.平滑帧与帧之间的亮度过渡

答案:A。Softmax 把 QKᵀ/√d 的计算结果转成一组非负且和为 1 的权重,表示“该把多少目光分给每个 token”。其他选项分别是降维、图像处理和滤波的职责,不是 Softmax 在注意力里的角色。

Q7. Sora 中将视频转化为 token 序列的第一步是什么?

单选题 · mid

  • A.帧间差分投影到高维表示
  • B.时空 Patch 化到隐空间← 正确答案
  • C.逐帧计算二维卷积特征
  • D.全局光流估计运动对齐

答案:B。Sora 先用预训练 VAE 把视频压缩到低维隐空间,再切成时空 patch 并转为 token 序列。Patch 化降低 token 数量,让后续时空注意力在可行算力下运行。这相当于导演先看沙盘模型,而不是直接面对几百个演员。

Q8. 关于多头注意力机制,以下说法正确的是?

多选题 · hard

  • A.不同头可关注不同语义子空间← 正确答案
  • B.多头数量增大计算量线性增长← 正确答案
  • C.每个头共享相同的 QKV 投影权重
  • D.多头输出拼接后需再次投影融合← 正确答案

答案:ABD。每个头有独立的投影矩阵,映射到不同子空间,能关注不同语义模式;头数增加,矩阵乘法次数线性增加;最终拼接结果需要 W^O 投影融合。C 错误,若共享投影权重,所有头完全相同,多头就没有意义了。

Q9. 空间注意力的主要作用范围是什么?

单选题 · easy

  • A.同一帧内各个位置之间← 正确答案
  • B.不同帧同一位置之间
  • C.不同帧不同位置之间
  • D.文本与视频模态之间

答案:A。空间注意力把同一时间帧内不同空间位置的 token 互相关联,回答“画面中哪里重要”。跨帧关联是时间注意力的职责,跨模态交互是交叉注意力的职责。

Q10. 线性注意力加速时空注意力的数学原理是什么?

单选题 · extreme

  • A.利用结合律避开大矩阵计算← 正确答案
  • B.剪枝不重要的注意力头
  • C.降低 Softmax 指数运算精度
  • D.用卷积替代全部矩阵乘法

答案:A。线性注意力把 softmax(QKᵀ)V 改写为 φ(Q)(φ(K)ᵀV),利用矩阵乘法结合律先算 φ(K)ᵀV(d×d 小矩阵),再与 φ(Q) 相乘,绕开 N×N 注意力矩阵,复杂度从 O(N²) 降到 O(N)。剪枝是稀疏手段,精度降低是投机取巧,都与数学原理无关。