想象市图书馆新来了一位实习管理员阿理。开馆第一天,馆长交给他一个任务:一天之内“读”完一整座六层书库,并随时回答读者的任何刁钻问题——“去年那场消防讲座在哪一层?”“最后上台发言的人是谁?”阿理如果选择逐字背诵每本书,他一定会失败——一天只有 24 小时,大脑也不是无限硬盘。聪明的做法是:先按目录扫一遍(采样),边读边做记忆卡(记忆网络),读者提问时先查索引卡(检索增强),再回书架细看(层次化建模)。这正是长视频理解的本质:一部几小时的视频就像一座小图书馆,传统模型试图“背诵”每一帧,而记忆机制让 AI 像阿理一样,用有限的算力记住关键内容,并随时回忆起来。下面我们就跟着阿理的一天,逐层拆解这套方法。

岗位关联

掌握长视频记忆建模,你就能在海量视频中高效定位与生成内容——这是视频问答、赛事剪辑、安防检索等真实 AI 岗位的核心技能,也是应对“算力永远不够用”的关键思维。

目录
  1. 可视化演示
  2. 长视频三大挑战
  3. 视频采样策略
  4. 时序建模基础
  5. 记忆网络机制
  6. 检索增强方法
  7. 层次化建模
  8. 应用与评估
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示开放寻址法中线性探测解决哈希冲突的过程,多个键映射到相同槽位时依次向后探测空闲位置。

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

线性探测 冲突时依次检查下一个槽位:(hash+i) mod m 找到空槽则插入,否则继续探测 线性探测可能产生聚集现象

长视频三大挑战

早晨六点,图书馆还没开门,阿理就被带到监控室。馆长指着屏幕说:“这部纪录片有六小时,明天读者会来提问。”阿理数了数:六小时、每秒三十帧,大约六十五万帧。他试着逐帧“背诵”,刚背了十分钟就头晕眼花——走廊里连个人影都没有,每两帧画面几乎一模一样。

这正是长视频理解的第一重挑战:时序跨度大,内容动辄数小时,远超模型一次能“看”的范围;第二重挑战是信息冗余高,大段空镜头和静止场景让相邻帧高度相似;第三重是计算资源受限,视频模型最倚重的自注意力机制,需要对所有片段做两两比较,帧数一多,算力立刻告急。

假设把视频切成 T 个片段,自注意力的计算量大约为:

面对这三座大山,阿理放弃了“背下整座楼”的笨办法,转而采用图书馆的专业做法:先制订阅读计划,再建立记忆与检索体系。后面每一节,都是他这套“记忆法”的一步。

O(T2⋅d)\displaystyle O(T^2 \cdot d)
这个式子说明:片段数 T 翻一倍,计算量要涨四倍。长视频想“全部看完”,算力上根本不可行。
  1. T(序列长度)把视频切成 T 个片段或“令牌”,T 越大,后续开销增长越猛。
    T=视频片段总数T = \text{视频片段总数}
  2. 平方项 T²自注意力要让每一对片段互相交互,总交互次数是 T × T。
    T2=两两组合的交互对数T^2 = \text{两两组合的交互对数}
  3. d(特征维度)每次交互都要计算 d 维向量的点积,实际开销还要再乘上 d。
    d=每段特征向量的维度d = \text{每段特征向量的维度}
  4. O(·)(增长率量级)O 表示“随 T 增大,开销大体按括号内方式增长”,描述的是趋势。
    O(T2d)表示计算量随 T 平方增长O(T^2 d) \text{表示计算量随 T 平方增长}

视频采样策略

上午九点,阿理开始制订阅读计划。他不再逐帧死磕,而是每隔三十秒取一帧——这叫均匀采样;遇到镜头切换、画面剧烈变化时,他会额外停下来多看几帧——这叫关键帧提取;至于长达十分钟的雪景空镜,他直接快速跳过——这是稀疏采样。

采样是记忆体系的第一道闸门:它把 T 帧压缩成 N 帧,且 N 远小于 T。均匀采样实现简单、覆盖全面,是默认基线;但若关键事件恰好落在采样间隙,就可能被漏掉。于是更聪明的做法出现了:根据运动幅度或模型注意力动态调节采样密度,动作大的地方多采,静止的地方少采。

假设视频总帧数为 T,计划采样 N 帧,均匀采样的帧号可以这样算:

一小时后,阿理的笔记越做越薄,但每一页都记在“戏眼”上。他明白了一个道理:读书厚薄不重要,重要的是每一页都值得。

ti=⌊i⋅TN⌋,i∈{0,1,…,N−1}\displaystyle t_i = \left\lfloor \frac{i \cdot T}{N} \right\rfloor, \qquad i \in \{0,1,\dots,N-1\}
这个公式把“每隔多少帧取一帧”变成精确的数学表达:第 i 个采样点对应原始第 t_i 帧。
  1. T(总帧数)视频一共有多少帧,这是采样的“原材料”总数。
    T=视频总帧数T = \text{视频总帧数}
  2. N(采样帧数)预算有限,只挑 N 帧代表整段视频。
    N=计划采样的帧数N = \text{计划采样的帧数}
  3. i(第几个采样点)i 从 0 数到 N-1,对应每个要取的样本。
    i=0,1,…,N−1i = 0, 1, \dots, N-1
  4. ⌊·⌋(向下取整)除法结果未必是整数,向下取整保证得到合法帧号。
    ⌊x⌋=不超过 x 的最大整数\lfloor x \rfloor = \text{不超过 } x \text{ 的最大整数}

时序建模基础

上午十点,阿理把摘录的片段摊在桌上,忽然发现顺序乱了——笔记上写着“有人翻窗”,又写着“大门被撬”,其实事情是先进门、后翻窗。他赶紧给每张便签贴上时间戳,把相邻时刻、因果相关的事件用线连起来。

视频天然是时间序列,模型必须知道“谁先谁后”。为此,位置编码把帧序号注入特征,让模型感知顺序;时间注意力让相邻帧和语义相关帧互相加强;光流则补充运动方向信息,帮助模型理解“从哪来到哪去”。这三者合起来,就是时序建模的骨架。

考虑到时间距离的注意力权重可以写成:

贴上时间线之后,阿理的笔记本终于从“素材堆”变成了“剧情梗概”。先来后到一目了然,故事才讲得顺。

αij=exp⁡(eij)∑k=1Texp⁡(eik),eij=qi⊤kj+ϕ(tj−ti)d\displaystyle \alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k=1}^{T}\exp(e_{ik})}, \qquad e_{ij} = \frac{\mathbf{q}_i^\top \mathbf{k}_j + \phi(t_j - t_i)}{\sqrt{d}}
简单说:帧 i 与帧 j 的相关度,由“语义匹配”和“时间距离”共同决定,再经过归一化变成权重。
  1. q_i 与 k_j(查询与键)帧 i 发出“我在找什么”,帧 j 亮出“我是什么”。
    qi∈Rd,kj∈Rd\mathbf{q}_i \in \mathbb{R}^d, \quad \mathbf{k}_j \in \mathbb{R}^d
  2. q_iᵀk_j(语义匹配度)两个向量方向越一致,点积越大,代表内容越相关。
    qi⊤kj=∑m=1dqi,mkj,m\mathbf{q}_i^\top \mathbf{k}_j = \sum_{m=1}^{d} q_{i,m} k_{j,m}
  3. φ(t_j − t_i)(时间距离偏置)给相距太远的帧加分或减分,让注意力符合时间逻辑。
    ϕ(Δt)=随时间间隔 Δt 变化的偏移量\phi(\Delta t) = \text{随时间间隔 } \Delta t \text{ 变化的偏移量}
  4. softmax 归一化对所有帧的分数做指数归一化,让权重和为 1。
    αij=exp⁡(eij)∑kexp⁡(eik)\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k} \exp(e_{ik})}

记忆网络机制

下午两点,阿理开始正式建档。他准备了八张固定大小的记忆卡,每读到一个重要段落就写进一张卡;卡片满了,就从最旧或最不常用的开始覆写——这对应记忆的遗忘机制。当读者问“主角穿什么颜色的衣服”时,他会让问题与每张卡比对,按相关度加权综合出答案——这是软读取。

记忆网络的核心是“外部存储 + 可学习的读写操作”。写操作决定新知识放进哪个槽位、是否覆盖旧知识;读操作不搞“只抽一张卡”的硬决策,而是用注意力对所有记忆槽加权求和,让答案兼顾所有相关记忆。这样的设计让模型无需把整段视频存在参数里,而是随写随读。

记忆网络的读操作可以写成:

记忆卡让阿理不必“背下全书”,而是随取随用。笔记本装进兜里,知识却装进了脑子。

ot=∑i=1Mexp⁡(kt⊤mi)∑j=1Mexp⁡(kt⊤mj)  mi\displaystyle \mathbf{o}_t = \sum_{i=1}^{M} \frac{\exp(\mathbf{k}_t^\top \mathbf{m}_i)}{\sum_{j=1}^{M} \exp(\mathbf{k}_t^\top \mathbf{m}_j)} \; \mathbf{m}_i
读出的结果 o_t,是 M 张记忆卡按相关度加权后的混合向量——就像阿理综合多张便签回答读者。
  1. M(记忆卡数量)外部存储一共有 M 个槽位,M 通常远小于视频帧数。
    M=记忆槽位总数M = \text{记忆槽位总数}
  2. m_i(第 i 张记忆卡)每张卡存一段压缩后的视频内容,是一个 d 维向量。
    mi∈Rd\mathbf{m}_i \in \mathbb{R}^d
  3. k_t(当前查询)当前时刻要“回忆”什么,用一个查询向量表示。
    kt=当前输入产生的查询向量\mathbf{k}_t = \text{当前输入产生的查询向量}
  4. 加权求和(软读取)按相似度分配权重,把 M 张卡合成一个输出。
    ot=∑i=1Mwt,imi\mathbf{o}_t = \sum_{i=1}^{M} w_{t,i} \mathbf{m}_i

检索增强方法

下午四点,馆长来抽查:“上周三闭馆前最后离馆的是谁?”阿理没有重头翻笔记,而是抽出一叠索引卡——每张卡正面是关键词,背面指向详细笔记。他按关键词与问题的余弦相似度,快速召回三张索引卡,再顺着指向翻开详细页。

当记忆卡越来越多,逐一对比太慢,检索增强便登场了:先用向量索引把记忆卡组织成可快速搜索的结构;相似度最常用余弦相似度;TopK 召回把候选范围缩小到 K 张;如果问题是文本,还要做跨模态对齐,让文本和视频特征落在同一个向量空间里比较。

检索增强的数学核心可以写成:

有了索引卡体系,阿理的记忆从“仓库”升级成了“图书馆”。找书永远比翻书快,这就是检索的意义。

s(q,di)=q⋅di∥q∥ ∥di∥,R=arg⁡max⁡i(K)s(q,di)\displaystyle s(\mathbf{q}, \mathbf{d}_i) = \frac{\mathbf{q}\cdot\mathbf{d}_i}{\|\mathbf{q}\|\,\|\mathbf{d}_i\|}, \qquad \mathcal{R} = \mathop{\arg\max}\limits_{i}^{(K)} s(\mathbf{q}, \mathbf{d}_i)
s 是查询 q 与记忆卡 d_i 的余弦相似度,R 是取相似度最高的 K 张卡组成的候选集。
  1. q(问题向量)把用户的问句编码成一个向量,代表“想找什么”。
    q=问题文本编码\mathbf{q} = \text{问题文本编码}
  2. d_i(记忆卡向量)每张记忆卡也被编码成同维向量,代表“存了什么”。
    di=第 i 张记忆卡的向量\mathbf{d}_i = \text{第 } i \text{ 张记忆卡的向量}
  3. 余弦相似度两个向量夹角的余弦值,越接近 1 表示方向越一致、越相关。
    s=cos⁡θ=q⋅di∥q∥∥di∥s = \cos\theta = \frac{\mathbf{q}\cdot\mathbf{d}_i}{\|\mathbf{q}\|\|\mathbf{d}_i\|}
  4. TopK 召回对全部候选排序,只取分数最高的 K 个进入后续精读。
    R=分数最高的 K 张卡集合\mathcal{R} = \text{分数最高的 } K \text{ 张卡集合}

层次化建模

下午五点半,阿理意识到:有些问题需要细节——“戒指上刻了什么字”;有些需要全局——“整部片子的主题是什么”。于是他建了两套笔记:一套是五分钟一段的粗目录,另一套是三十秒一段的细章节。回答问题时,先查目录定位大范围,再钻进去精读细节。

层次化建模把视频组织成金字塔:底层是细粒度特征,顶层是粗粒度概要。分段池化把每 s 个相邻片段合成一个特征,序列长度就缩小为原来的 1/s;模型先在粗粒度层做全局推理,再把注意力引导到细粒度层的关键区间。这样既控制了自注意力的 T,又不丢失细节。

第 l 层第 i 个输出的池化操作可以写成:

“先目录、后精读”的组合,成了阿理一天下来最顺手的工作流。目录给出方向,精读保证深度,两者缺一不可。

hi(l)=Pool ⁣(h [ is : (i+1)s ](l−1))\displaystyle \mathbf{h}^{(l)}_i = \mathrm{Pool}\!\left(\mathbf{h}^{(l-1)}_{\,[\,i s\,:\,(i+1)s\,]}\right)
意思是:第 l 层的第 i 个节点,由第 l−1 层第 i×s 到 (i+1)×s 个节点的信息聚合而成。
  1. l(层号)l 越大,粒度越粗,序列越短。
    l=层次索引l = \text{层次索引}
  2. s(段长)每 s 个相邻元素合成一个新元素。
    s=分段长度s = \text{分段长度}
  3. Pool(池化)段内取均值或最大值,把多个向量压成一个。
    Pool=平均池化或最大池化\mathrm{Pool} = \text{平均池化或最大池化}
  4. 区间 [is(i+1)s]:第 i 段对应原始序列的起止下标范围。
    [ is, (i+1)s ) 为第 i 段区间[\,i s,\ (i+1)s\,) \text{ 为第 } i \text{ 段区间}

应用与评估

傍晚六点闭馆前,馆长拿着一叠“读者提问卷”来验收:有填空题、选择题、简述题,还有“请指出片段出现的时间点”。阿理一题一题作答,每答对一题就在卷子上画个勾,最后统计答对的比例——这个比例,就是模型的准确率。

长视频理解的产出形态多种多样:视频问答要求根据内容回答自然语言问题;事件摘要要求把数小时内容压缩成短文;视频语义检索要求按文本描述定位片段;监控场景还要求从海量画面中找出异常事件。无论哪种形态,都需要用统一指标评估,最基础的就是准确率:

从“逐帧背诵”到“采样—时序—记忆—检索—分层”,阿理终于通过了验收。这套方法论,就是长视频 AI 的“记忆修炼手册”。

Acc=1N∑n=1N1 ⁣(y^n=yn)\displaystyle \mathrm{Acc} = \frac{1}{N}\sum_{n=1}^{N} \mathbb{1}\!\left(\hat{y}_n = y_n\right)
准确率就是“答对的题数除以总题数”,是最直观的验收标准。
  1. N(测试样本数)用 N 个问题来验收模型。
    N=测试问题总数N = \text{测试问题总数}
  2. ŷ_n 与 y_n(预测与真值)前者是模型给出的答案,后者是标准答案。
    y^n=模型输出,yn=标准答案\hat{y}_n = \text{模型输出}, \quad y_n = \text{标准答案}
  3. 𝟙(·)(指示函数)条件为真记 1,为假记 0。
    1(条件)=1 若条件成立,否则 0\mathbb{1}(\text{条件}) = 1 \text{ 若条件成立,否则 } 0
  4. 求平均把所有题目的 0/1 加起来除以 N,得到正确率。
    Acc=答对题目数N\mathrm{Acc} = \frac{\text{答对题目数}}{N}

AI 应用场景

体育赛事智能剪辑

阶段:长视频摘要与事件定位

解决的问题:传统剪辑师需要人工看完两小时全场回放才能找出精彩瞬间,一场球赛要耗三小时以上。AI 用采样策略快速浏览全场,记忆网络持续写入“进球、犯规、绝杀”等高光片段,再通过检索增强按“射门、红牌”等关键词精确定位目标片段,把人工“拉片”变成秒级检索。

具体案例:某转播平台对全场 90 分钟比赛自动生成 3 分钟集锦,先均匀采样建立全局目录,再对高运动帧做细粒度精读,误检率低于 5%,剪辑效率提升近 40 倍。

安防监控异常事件检索

阶段:视频语义检索与异常检测

解决的问题:传统安防靠人盯数十路监控回放,24 小时画面“看不过来也找不着”。AI 用层次化建模把长时间监控压缩成粗到细的索引,记忆卡持续写入概要,接到“红色外套人员凌晨出现在北门”这类文本查询时,做跨模态对齐与 TopK 召回,秒级给出候选片段与时间戳。

具体案例:某园区部署长视频检索系统,将一周共 168 小时的监控建成向量索引,安保人员输入自然语言描述即可定位目标事件,平均检索时间从 2 小时降到 10 秒。

教育长视频智能问答

阶段:视频问答与知识管理

解决的问题:学生问“第二章第三讲的核心结论是什么”,传统做法是自己拖进度条、倍速重看,低效且易漏。AI 将课程视频按章节做分层记忆,问答时先检索相关记忆卡,再结合时序上下文生成答案并附带时间戳,让“翻视频”变成“问老师”。

具体案例:某在线教育平台为 2000 小时课程构建记忆索引,支持学员对任意知识点提问,系统返回文字答案与对应视频片段,课程完课率提升 18%。

Python 演示

python78 行
"""长视频理解的迷你演示: 采样 -> 记忆写入 -> 查询检索。用随机特征模拟视频帧, 展示记忆网络 + 检索增强的基本流程。"""import mathimport random  class FrameReader:    """模拟视频帧读取器: 每 60 帧属于一个语义主题"""     def __init__(self, total=4800):        self.total = total        self.frames = []        self.themes = []        rng = random.Random(42)        for i in range(total):            theme = i // 60            self.frames.append([round(rng.random(), 4) + theme * 0.1 for _ in range(8)])            self.themes.append(theme)     def sample_uniform(self, n=48):        """均匀采样 n 帧, 返回 [(帧号, 特征向量)]"""        idx = [int(i * self.total / n) for i in range(n)]        return [(i, self.frames[i]) for i in idx]  class MemoryNetwork:    """记忆网络: M 张记忆卡 + 写操作 + 余弦相似度检索"""     def __init__(self, slots=12, dim=8):        self.slots = slots        self.dim = dim        self.mem = [[0.0] * dim for _ in range(slots)]        self.pos = 0     def write(self, feat):        """写操作: 环形覆盖, 模拟遗忘最旧的记忆"""        self.mem[self.pos] = feat[:]        self.pos = (self.pos + 1) % self.slots     def retrieve(self, query, top_k=3):        """读操作: 按余弦相似度召回 TopK 张记忆卡"""        scores = []        for i, m in enumerate(self.mem):            sim = self._cosine(query, m)            scores.append((sim, i))        scores.sort(reverse=True)        return scores[:top_k]     def _cosine(self, a, b):        dot = sum(x * y for x, y in zip(a, b))        na = math.sqrt(sum(x * x for x in a))        nb = math.sqrt(sum(y * y for y in b))        return dot / (na * nb + 1e-9)  def aggregate(feats):    """层次化建模中的池化: 对一组特征逐维取均值"""    d = len(feats[0])    return [sum(f[j] for f in feats) / len(feats) for j in range(d)]  def main():    reader = FrameReader(total=4800)    sampled = reader.sample_uniform(48)          # 第1步: 均匀采样    memory = MemoryNetwork(slots=12)             # 第2步: 建立记忆网络    for frame_id, feat in sampled:        memory.write(feat)                       # 第3步: 边读边写入记忆卡    query = sampled[0][1]                        # 第4步: 用问题对应的帧特征查询    hits = memory.retrieve(query, top_k=3)    indices = [i for _, i in hits]    vectors = [memory.mem[i] for i in indices]    summary = aggregate(vectors)                 # 第5步: 把召回记忆池化成摘要    print("retrieved card indexes:", indices)    print("summary dims sample:", [round(v, 4) for v in summary[:4]])  if __name__ == "__main__":    main()
目的:用纯 Python 模拟“均匀采样 → 记忆写入 → 查询检索 → 池化摘要”的完整链路,让你直观看到长视频如何被压缩进记忆卡,又如何按相似度被回忆出来。
  1. sampled = reader.sample_uniform(48)均匀采样 48 帧代表全长 4800 帧视频,对应“分章节略读”。
  2. memory.write(feat)把当前帧特征写入记忆卡,对应“边读边做笔记”。
  3. self.pos = (self.pos + 1) % self.slots环形游标实现“覆盖最旧记忆”,对应遗忘机制。
  4. sim = self._cosine(query, m)查询与每张卡算余弦相似度,对应“查索引卡”。
  5. scores.sort(reverse=True)按相似度降序排列,取前 K 张即 TopK 召回。
  6. summary = aggregate(vectors)把召回到的记忆卡池化成一条摘要向量,对应层次化建模的池化步骤。

常见误区

误区初学者总觉得反正 GPU 很贵,把所有帧都送进 Transformer 才算“认真训练”。听到老师说视频长要采样,第一反应是“采样肯定会丢信息,丢信息性能就下降”。

正解长视频的相邻帧高度冗余,全量送入不仅算力爆炸——自注意力是 O(T²) 的两两交互——冗余帧还会稀释注意力,让模型抓不住重点。采样和记忆机制不是“丢信息”,而是“去冗余、抓主干”。就像图书管理员不会背诵每一页,而是把重点做成索引卡:删掉的是重复内容,保留的是关键知识。

为何常见:大家习惯短图的“全量输入”思维,把模型当黑盒,觉得数据越多越好,没意识到长视频的计算量随长度平方增长。

误区有人把记忆网络理解成“一个列表装特征向量,要用了就取出来”,觉得这件事不值得单独研究。

正解真正的记忆网络要设计写操作(写到哪个槽位、旧的怎么办)、读操作(如何按相关性加权提取)、遗忘策略(何时覆写过期知识)。这些决策直接影响长程依赖的保持。好比记笔记人人会,但把笔记组织成能秒查的体系,才是图书管理员的专业所在。

为何常见:从编程视角看“存储”太普通,容易忽略“读写的寻址与更新”才是记忆建模的算法核心。

误区初学者认为检索增强的流程很简单:算相似度、取 TopK、结束。

正解相似度只是最后一小步。前面要建高效索引结构(向量量化、倒排表)让几十万张记忆卡可被快速搜索;文本问题与视频片段要做跨模态对齐才能在同一个向量空间比较;多轮检索还要携带上下文。就像图书馆的真功夫在编目和分类,而不在翻开书的那一下。

为何常见:论文里画得最醒目的图往往是相似度匹配,让人误以为那就是全部。

误区看到“粗粒度到细粒度”,觉得就是反复池化、降采样,把序列变短就行。

正解层次化建模的难点在跨尺度对齐:粗粒度信息要能引导细粒度注意力聚焦到正确区间,反向传播要保证梯度能穿过多个尺度。否则粗粒度摘要做了,细粒度细节却丢了一地。好比目录做得再漂亮,如果页码对不上正文,读者照样找不到内容。

为何常见:池化在卷积网络里很常见,容易用旧的感知去套新问题,忽略了跨尺度交互的设计。

面试题

Q1. 长视频理解面临的核心挑战,以下哪项不属于?

单选题 · easy

  • A.时序跨度可达数小时
  • B.相邻帧内容高度冗余
  • C.自注意力计算量巨大
  • D.视频无法压缩存储← 正确答案

答案:D。长视频的核心挑战是时序跨度大、信息冗余高、计算资源受限。“视频无法压缩存储”是现代编码技术早已解决的问题,不属于理解层面的挑战。就像图书馆的挑战是“读不完”,而不是“书放不下”。

Q2. 对长视频做均匀采样,主要目的是什么?

单选题 · easy

  • A.提高视频的分辨率
  • B.减少参与计算的帧数← 正确答案
  • C.给视频自动添加字幕
  • D.增强画面的色彩效果

答案:B。均匀采样让模型用 N 帧代表整段视频,直接压缩序列长度,降低自注意力 O(T²) 的计算开销。它不改变分辨率、不加字幕、不调颜色,而是像图书管理员每隔几页翻一页,先抓住情节骨架。

Q3. 自注意力机制对 T 个视频片段做两两交互,计算量约为?

单选题 · mid

  • A.线性增长 O(T)
  • B.平方增长 O(T²)← 正确答案
  • C.对数增长 O(logT)
  • D.恒定不变 O(1)

答案:B。因为每一对片段都要交互,总交互次数是 T×T,所以计算量随 T 平方增长。T 翻倍开销变成四倍,这正是长视频不能“全量输入”的根本原因。好比每两个人要握手一次,人数翻倍,握手次数要翻四倍。

Q4. 记忆网络“读操作”的本质是什么?

单选题 · mid

  • A.对记忆卡加权求和← 正确答案
  • B.随机抽取一张记忆卡
  • C.修改已有记忆卡内容
  • D.删除最旧的记忆卡

答案:A。读操作让查询向量与 M 张记忆卡分别计算相似度,用 softmax 归一化成权重,再对所有记忆卡加权求和。它不是随机抽卡,也不是修改或删除,而是“综合所有相关记忆”,就像阿理回答问题时要参考多张便签。

Q5. 记忆卡的“写操作”需要决策哪些问题?

多选题 · mid

  • A.新知识写入哪个槽位← 正确答案
  • B.旧记忆如何被遗忘← 正确答案
  • C.新内容如何与旧记忆融合← 正确答案
  • D.视频帧率调整到多少

答案:ABC。写操作要决定写入位置(寻址)、旧记忆的遗忘与覆写策略、新内容如何更新已有记忆。帧率是视频编码参数,与记忆网络无关。就像阿理记笔记时要考虑:写在哪页、旧笔记要不要删、新内容怎么和旧内容衔接。

Q6. 与密集采样相比,对长视频做稀疏采样的优势是?

单选题 · easy

  • A.计算开销显著降低← 正确答案
  • B.准确率必然更高
  • C.无需任何时序信息
  • D.不需要训练模型

答案:A。稀疏采样用更少的帧参与计算,直接降低时间与显存开销。但准确率未必更高,稀疏过头可能漏掉关键事件;采样的好坏要配合关键帧提取与密度控制。好比少翻几页书能读得快,但可能错过重要情节。

Q7. 层次化建模为什么能支持小时级长视频?

多选题 · hard

  • A.粗粒度层压缩序列长度← 正确答案
  • B.先定位再精读减少开销← 正确答案
  • C.跨尺度信息互相补充← 正确答案
  • D.完全消除所有信息冗余

答案:ABC。层次化建模先把视频池化成粗粒度概要,降低自注意力处理的 T;再用粗粒度结果引导细粒度注意力聚焦关键区间;跨尺度对齐让全局与细节互相补充。但它无法“完全消除”信息冗余——冗余只能被缓解,不能归零。

Q8. 记忆网络与检索增强的核心区别是什么?

单选题 · mid

  • A.记忆可写入更新,检索只读已有库← 正确答案
  • B.两者完全等价可以互换
  • C.检索能修改记忆内容
  • D.记忆网络无法被查询

答案:A。记忆网络强调“可写的存储”,新知识持续写入并触发遗忘与融合;检索增强面向“只读的库”,在已有索引中高效查找。一个是写笔记,一个是查目录,方向不同但相辅相成。

Q9. 检索增强中,为什么常对向量做归一化再算相似度?

单选题 · hard

  • A.消除向量长度干扰,专注方向角度← 正确答案
  • B.让所有向量变成零向量
  • C.提高视频画面的分辨率
  • D.减少模型网络层数

答案:A。余弦相似度本质是比较方向而不是长度。归一化后每个向量模长为 1,相似度只由夹角决定,避免“长向量天然得分高”的偏差。就像判断两个人是否默契,看的是思路是否一致,而不是谁嗓门大。

Q10. 为一小时监控视频设计“异常事件定位”系统,以下哪些方案是合理的?

多选题 · extreme

  • A.均匀采样加关键帧提取← 正确答案
  • B.记忆网络持续写入概要← 正确答案
  • C.文本查询做跨模态检索← 正确答案
  • D.逐帧全量做自注意力计算

答案:ABC。合理方案是先用采样降低帧数,再用记忆网络不断写入事件概要压缩信息,最后让用户用文本查询跨模态检索目标片段。逐帧全量做自注意力会让 O(T²) 计算量在一小时监控上彻底爆炸,是典型的反例。