尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

内部化视觉思考与主动视频推理:低开销高准确率的视频理解新范式

内部化视觉思考与主动视频推理:低开销高准确率的视频理解新范式 大模型视频理解里Visual CoT视觉思维链一直是提升复杂推理能力的主要手段之一。它把“先看哪里、看到了什么、再推断什么”拆成显式步骤模型按顺序输出中间观察和结论最后给出答案。这种方式在视频问答里确实能提高准确率但代价也很明显推理链越长模型需要生成的 token 越多延迟和成本成倍上升而且中间任一步骤出错后续结论都会跟着偏。为了在保留推理能力的同时降低显式推理带来的开销近期的研究方向开始转向 Internalized Visual Thinking内部化视觉思考也就是让模型把“思考过程”压缩在隐藏状态或少量内部表示里而不是全部写成文本。配合主动视频推理Proactive Video Reasoning模型不再被动等用户把问题问完而是按问题目标主动决定下一帧看哪里、哪些区域要放大、证据够了就停止。下面的内容按一条清晰的技术主线展开先说明 Visual CoT 为什么有效又为什么贵再讲内部化视觉思考和主动视频推理的概念区别接着给出一套可落地的架构设计、训练策略和推理实现最后补充评估方法、常见问题和工程建议。全文不绑定某个具体开源框架给出的结构是这类方法通用的设计思路落地时可以根据自己的模型基座、数据集和算力调整。1. 从显式视觉思维链到内部化视觉思考要解决什么问题1.1 Visual CoT 解决了什么问题视频问答和图像问答不一样模型需要同时处理时间维度和空间维度。一个问题是“球在第 10 秒之前还是之后碰到墙壁”模型先要找到球再定位墙壁再判断碰撞时间点最后才能回答。这些问题往往不能靠单帧的视觉特征直接得到答案而是需要多步推理。Visual CoT 的核心思路是把这套多步推理显式展开先用语言描述当前帧里有哪些关键物体再生成一个关注区域或候选框接着分析物体之间的相对位置和运动关系最后基于这些中间结论输出答案。显式展开带来的直接好处有两个。第一是可解释性中间步骤可以看到模型到底关注了什么便于定位错误第二是训练信号更丰富中间步骤对模型形成约束相当于一步步引导它接近正确答案。1.2 显式推理链的三个代价显式 Visual CoT 的第一个代价是 token 开销。视频本身包含大量帧即使经过采样和压缩每帧仍会生成几十到上百个视觉 token。如果模型在输出时还要把每一帧里“看到了什么”“判断了什么”全部用文字写出来推理链很容易拉到几百甚至上千 token。对长视频来说这个开销会成倍放大。第二个代价是延迟。每一步显式推理都在增加自回归生成的长度用户等答案的时间会明显变长。实时视频场景例如监控事件问答、自动驾驶中的场景理解对延迟非常敏感显式思维链很难满足要求。第三个代价是错误传播。显式推理链是串行的前面的步骤如果识别错物体或选错帧后续所有结论都会依赖错误前提。这类错误在推理链里很难自动纠正因为模型倾向于沿着已经生成的文本继续写下去。1.3 Internalized Visual Thinking 的核心假设内部化视觉思考的出发点是思考不一定非要用自然语言或视觉语言文本表达出来。人类在熟练处理一个任务时很多推理过程是自动化的不需要逐字说出“我在看哪里、我在比较什么”。模型也可以做到类似的事把推理过程压缩到隐藏状态、注意力模式或少量专门的“思考 token”中。这里的关键区别是Visual CoT 是“看得见的推理过程”Internalized Visual Thinking 是“看不见但确实存在的推理过程”。后者不代表模型不再思考而是思考不再以显式文本形式输出。它更像是一种隐式推理目的是在保留多步推理能力的同时减少 token 生成、缩短延迟并降低显式步骤之间的错误传播风险。需要特别强调内部化不等于退化。如果模型因为不输出推理链就变成了“看一眼直接猜答案”那内部化就是失败的。一个合格的内部化视觉思考系统应该在做完足够多的内部计算后才给出答案只是这些计算不需要全部翻译成文字。2. 主动视频推理模型从“被动答题”变成“主动观察”2.1 主动性的来源传统视频问答的流程是被动的输入固定采样好的帧序列模型一次性编码然后输出答案。问题是模型并不知道哪些帧对当前问题真正有用。为了不遗漏信息只能把所有帧都塞进模型成本和噪声同时升高。主动视频推理把流程改成循环式的模型先根据问题选择少量帧或区域进行观察然后判断当前证据是否足够不够就继续选择下一批观察点够了才输出答案。这种“先计划、再观察、再决定”的循环结构可以明显减少无效帧的计算量同时让模型针对问题聚焦到关键时空位置。主动性的来源不只是采样策略的改动而是推理目标本身发生了变化。显式 Visual CoT 的目标是“按顺序把推理写对”主动视频推理的目标是“用最少的观察把答案做对”。目标不同模型学习到的行为模式就完全不同前者倾向于完整、连贯地展开后者倾向于精准、有选择地收集证据。2.2 内部化思考在主动观察中的角色内部化视觉思考和主动视频推理是两件事但它们在设计中是配合使用的。内部化思考负责“怎么想”主动观察策略负责“看哪里”。在每一轮循环里模型先把目前观察到的帧或区域编码成特征再结合问题生成一份内部思考状态。这份状态不会直接打印出来而是用于两个后续决策一个决策是接下来要关注哪一帧的哪个区域另一个决策是当前证据是否足以回答问题。这两个决策都依赖内部思考状态的质量所以内部化思考实际上是整个主动观察过程的“调度器”。如果内部思考状态只包含表面视觉特征模型会不知道该往哪里看如果思考状态过度偏向语言先验模型又会忽略视觉证据盲目按常见答案猜。好的内部思考状态应该同时承载三部分信息当前已经看到什么、问题还需要什么、哪些位置最可能提供缺失信息。2.3 和通用推理模型的区别大语言模型里常见的 thinking 模型、System 2 式推理主要解决的是“怎么想得更久、更深”。它们通常会把思考过程显式输出到一段隐藏推理文本中以此获得更长的计算时间。内部化视觉思考和这类方法不完全一样。视频场景有两个额外约束。第一思考对象不是纯文本而是连续帧里的时空信息模型需要处理视觉特征的重复读取和不同粒度观察。第二视频推理有明确的“观察成本”多看一帧就有额外的计算和带宽消耗因此模型不能无限延长内部思考必须同时优化准确率和效率。这也意味着主动视频推理里必须有一个可学习的停止机制训练目标不能只看答案对不对还要看每一道题花了多少观察代价。3. 一种可落地的内部化视觉思考架构设计3.1 整体流程下面描述一种在这类方法中比较常见的整体架构。它包含四个模块视觉编码器、特征压缩器、内部思考模块、主动观察策略和答案解码器。以视频问答任务为例完整流程如下对视频做均匀采样或按问题语义采样得到初始帧集合。逐帧提取视觉特征经过压缩器得到统一长度的 token 序列。内部思考模块基于问题特征和当前观察特征生成内部思考状态。主动观察策略根据内部思考状态决定下一轮要读取哪些帧或区域。模型判断证据是否足够不足则回到步骤 3足够则进入解码。解码器基于最终内部思考状态和累计观察特征生成答案。这个流程的核心是“观察-思考-再观察”的循环而不是一次性把视频全部编码进模型。循环意味着每个模块都可以独立设计和替换也意味着模型可以逐步积累证据。3.2 帧与区域编码视频信息如何进入模型视频输入的处理方式和纯图像输入不同。常见做法是先均匀抽帧例如 8 到 16 帧再把每帧切成长方形的 patch送入 Vision Transformer 类编码器。对于长视频还会引入分层采样先按粗粒度选出候选片段再在候选片段内按细粒度选帧。抽取出的视觉 token 数量通常不小直接全部送入大语言模型会让序列过长。因此一般会在编码器和语言模型之间加一个压缩器例如 Perceiver 风格的 cross-attention 模块把几百个视觉 token 压缩成固定数量例如 32 或 64 个。压缩器的好处是既降低计算量又保留对后续推理有用的全局信息。在主动观察的场景里编码模块还要额外支持“增量编码”新增帧时只编码新帧并合并到已有 token 序列中而不是把历史帧重新编码一遍。这个设计直接影响长视频的推理效率后面工程部分会专门说明。3.3 内部思考模块思考 token 与自适应计算内部思考模块是这套架构的核心。它可以在语言模型内部实现也可以作为模型中间层的一个额外模块。一种常见设计是引入一组“思考 token”这些 token 参与自注意力计算但最终不出现在输出文本中。这类设计可以看作“半显式”的内部化模型确实为思考过程分配了 token 和计算量但只把它们当内部工作区使用。自注意力让思考 token 既能读取视觉 token又能读取问题 token从而完成跨模态的信息整合。思考 token 的数量和计算层数可以是固定的也可以是自适应的。自适应版本会预测一个“当前还需要深度思考多少轮”的置信度置信度低就继续计算高则退出。这里要注意一点思考 token 如果完全自由生成没有任何监督最后可能学成无意义的占位符。所以训练时通常需要额外的约束例如让思考 token 的表示与正确中间步骤的表示对齐或者用蒸馏目标让思考 token 携带足够多的信息。3.4 主动观察策略决定下一帧看哪里主动观察策略负责输出下一步观察动作。在视频问答里动作空间可以有多种设计选择下一帧的帧号。选择某一帧里的一块区域并放大。选择若干候选片段继续采样。决定是否请求更高分辨率的输入。实现上既可以用一个分类头在候选帧索引上做选择也可以用 point-wise 或 region-wise 的打分网络输出注意力权重。为了让它可学习通常使用强化学习或带可微采样的方法例如 Gumbel-Softmax来训练。好的主动观察策略应该具备一种“证据积累”能力第一轮看全景拿到粗略线索第二轮根据线索定位到关键人物第三轮再放大到关键物体的运动区域。这个由粗到细的过程需要模型内部对“当前还需要什么信息”有清晰表示而这正是内部思考模块要提供的。3.5 答案解码与终止判断终止判断和答案解码是循环的最后一步。常见做法是让模型输出一个“停止”的概率当概率超过阈值时结束观察。阈值在训练时可以调整阈值越低模型越快但可能证据不足阈值越高样本越稳但延迟越高。终止判断还可以和答案解码共享部分参数。模型在每次观察循环里都尝试生成一个临时答案并给这个答案一个置信度如果置信度足够高就停止并输出这个临时答案如果不够高就继续观察。这种方式的好处是模型不会在证据不足时硬答而是在每次观察后重新评估可行性。下面给出一段示意性的推理伪代码用来描述循环流程。实际工程实现中需要把其中的接口替换成具体模型调用。def proactive_video_inference(model, video_frames, question, max_rounds6): # 初始观察均匀采样前 4 帧 observed_ids [0, len(video_frames) // 3, len(video_frames) * 2 // 3, len(video_frames) - 1] observations encode_frames(video_frames[observed_ids]) for step in range(max_rounds): # 内部思考状态不输出为文本 thought_state model.internal_think(observations, question) # 判断证据是否足够 stop_prob model.predict_stop(thought_state) if stop_prob 0.9 or step max_rounds - 1: return model.decode_answer(thought_state, observations) # 主动决定下一轮观察哪一帧、哪个区域 action model.select_next_observation(thought_state) observations merge_observations(observations, observe(video_frames, action)) # 理论上不会走到这里因为上面已经包含终止分支 return model.decode_answer(thought_state, observations)这段伪代码体现了三个关键点内部思考状态是循环的唯一抽象载体停止概率来自思考状态观察动作由思考状态驱动而不是固定策略。理解这三个点再看具体的训练和评估就会顺很多。4. 训练策略从显式思维链蒸馏走向主动策略优化4.1 阶段一用显式 Visual CoT 数据做蒸馏内部化视觉思考很难直接端到端凭空学出来常见做法是先生成一个能力强的显式 Visual CoT 模型再把它蒸馏成内部化模型。具体流程是先用人工标注或高质量教师模型为一批视频问答样本生成显式推理链包括选帧理由、区域识别、运动判断等中间步骤。然后用这些数据训练学生模型但训练目标分为两部分一部分是让最终答案正确另一部分是让学生模型的内部表示能够预测教师模型的关键中间结论。如果使用思考 token 来承载内部思考可以让思考 token 的隐藏状态再去接一个预测头输出教师模型的中间步骤表示。这样思考 token 就不是自由发挥而是在知识蒸馏的信号下被迫携带推理所需信息。训练完成后可以把这个预测头去掉只保留思考 token 和主模型。4.2 阶段二用强化学习优化主动观察策略蒸馏阶段解决的是“内部思考有没有内容”的问题主动观察策略还需要单独优化。原因很简单如果每一步的观察动作都很随机模型很难积累有效证据。这里可以采用策略梯度方法。奖励函数一般包含两部分答案正确性奖励和效率奖励。答案正确性奖励最终答案与标准答案一致时得到正向奖励。效率奖励观察轮数越少、读取的帧数越少奖励越高。也可以加入区域命中奖励如果模型主动选择的帧或区域与人工标注的关键片段重合给额外奖励。效率奖励的权重需要调平衡。权重过大模型会学成“少看不答”靠先验猜答案权重过小模型又会退化成把所有帧都看一遍的被动策略。推荐在训练早期把正确性奖励权重调高后期逐步增加效率惩罚让模型先学会用观察来推理再学会少看。4.3 训练稳定性的几个细节这类多模块联合训练有三个常见不稳定来源。第一是强化学习方差大同一道题即使动作序列不同奖励信号也可能很稀疏。缓解办法是给动作添加熵正则项鼓励探索避免策略过早坍缩。第二是蒸馏阶段和强化学习阶段可能互相干扰建议先冻结视觉编码器只更新内部思考模块和策略头等策略稳定后再解冻。第三是停止概率容易退化到“永远不停止”因为多观察总是能带来更多信息模型倾向于无限循环。解决办法是给最大观察轮数设硬上限并让停止概率参与效率奖励的计算。5. 推理阶段与工程实现如何控制延迟和显存5.1 推理时与训练时的差异训练时模型需要反向传播因此会保存中间激活显存开销大。推理时只需要前向传播可以一次性处理也可以流式处理。流式处理对长视频更友好先加载一段帧编码后保留压缩特征旧的原始图像可以释放只保留固定长度的视觉 token。另一个差异是循环次数。训练时需要让模型在多个观察轮次间保存梯度推理时不需要。工程实现上可以对观察结果做缓存每轮只对新增的帧做编码不重复计算已观察帧这能显著降低推理耗时。5.2 模型结构示例下面给出一段基于 PyTorch 风格的结构示意用来表达模块接口。它不是一个可以直接跑通的完整项目而是用来帮助理解模块之间的数据流关系。import torch import torch.nn as nn class InternalizedVisualReasoner(nn.Module): def __init__(self, vision_encoder, compressor, llm_backbone, thought_num16, action_vocab32): super().__init__() self.vision_encoder vision_encoder self.compressor compressor # 将视觉 token 压缩成固定长度 self.llm_backbone llm_backbone # 语言模型接收融合 token self.thought_embeds nn.Parameter(torch.randn(1, thought_num, llm_backbone.hidden_size)) self.action_head nn.Linear(llm_backbone.hidden_size, action_vocab) self.stop_head nn.Linear(llm_backbone.hidden_size, 1) self.answer_head nn.Linear(llm_backbone.hidden_size, vocab_size) def forward_observation(self, frame_features, question_ids): # 压缩视觉特征拼接问题 token 和思考 token送入语言模型 vis_tokens self.compressor(frame_features) thought_tokens self.thought_embeds.expand(vis_tokens.size(0), -1, -1) inputs torch.cat([question_ids, vis_tokens, thought_tokens], dim1) hidden self.llm_backbone(inputs).last_hidden_state # 从隐藏状态中提取思考状态用于动作选择和停止判断 thought_state hidden[:, -self.thought_embeds.size(1):, :].mean(dim1) action_logits self.action_head(thought_state) stop_logit self.stop_head(thought_state) return action_logits, stop_logit, hidden def decode_answer(self, thought_state, history): logits self.answer_head(thought_state) return logits.argmax(dim-1)这段代码里的三个 head 分别对应主动观察、停止判断和答案生成。实际项目里answer_head 通常会替换成语言模型的解码层而不是简单的线性分类action_vocab 的大小也要根据动作空间重新设计。5.3 性能开销对比显式 Visual CoT 和内部化视觉思考在推理阶段的差异主要体现在生成 token 数量和循环次数上。下面给出一个典型的定性对比实际数字会随模型规模、视频长度和任务难度变化。维度显式 Visual CoT内部化视觉思考 主动观察输出 token 数高包含完整推理链低通常只有问题相关的答案 token单题延迟高依赖长序列生成中低取决于观察轮数可解释性高中间步骤可见低需要探针和注意力分析辅助训练难度中等需要推理链标注较高需要蒸馏和 RL 两阶段长视频扩展性较差token 增长快较好通过主动选帧控制观察量错误传播风险较高串行中间步骤会连错较低内部状态可以反复修正从表格可以看出内部化视觉思考不是简单的“更好”而是在可解释性和训练复杂度上做出取舍。如果业务强依赖人工审查推理步骤短期内显式 CoT 仍然更合适如果对延迟和成本敏感才值得切换到内部化方案。6. 评估方式不能只看答案准确率6.1 标准评测指标视频问答常用的评估指标包括准确率、F1 分数和模糊答案匹配。常见的公开评测集包括 NExT-QA、MSVD-QA、MSRVTT-QA、ActivityNet-QA 等。需要提醒的是这些评测集的问题类型差异很大有的偏事实检索有的偏时序推理不能只用一个数据集的结果下结论。对内部化视觉思考系统来说至少要在两类问题分布上分别评估一类是需要复杂时空推理的问题用来验证“内部思考确实在起作用”另一类是简单事实问题用来验证“模型没有因为内部化而丢失基础能力”。6.2 效率指标必须进入主指标主动视频推理的收益之一就是效率。评估时至少记录以下几个指标每道题实际观察的帧数或区域数。每道题的端到端延迟。平均生成 token 数。停止阈值下调时准确率的变化曲线。建议把“准确率-成本曲线”作为核心结果。横轴是平均观察轮数或平均延迟纵轴是准确率这样做可以直观看出模型在付出多少成本时达到什么水平。曲线下方的面积越小说明模型在同等成本下更优。6.3 内部化思考的可信度评估内部思考不可见不等于不能验证。常用的验证思路有三种。第一种是探针法在模型的内部思考状态上训练一个轻量分类器看它能否预测教师模型的中间结论例如“当前最关键的物体是什么”。如果探针准确率高说明内部状态确实携带了推理信息。第二种是干预法故意遮挡某个关键帧或关键区域观察模型准确率是否明显下降。如果下降明显说明模型确实依赖了它主动观察到的证据而不是在猜答案。第三种是一致性检验对同一道题做多次带扰动的前向推理观察答案是否稳定。如果输入的小扰动导致答案剧烈变化说明内部思考可能过拟合到噪声特征需要检查视觉编码器或特征压缩器。7. 常见问题与排查路径7.1 蒸馏后模型仍然输出冗长推理现象已经按内部化方案训练但模型在推理时还是会把思考过程写成文本。可能原因训练数据里显式推理链的占比过高模型把“输出推理”当成了必要条件或者推理阶段的生成配置没有限制输出长度。检查方式统计输出中是否有“因为”“所以”等推理连接词检查生成配置里的max_new_tokens。处理建议在推理阶段显式屏蔽思考 token 对应的输出位置只允许解码器输出答案同时在蒸馏训练时把教师推理链逐步缩短让学生逐渐适应直接输出答案。7.2 主动观察策略退化成随机或固定选择现象训练结束后模型每道题都选择相同的帧号说明策略头没有学到有效信息。可能原因动作奖励太稀疏模型无法区分哪些动作更好或者熵正则项过强策略被推向均匀分布。检查方式打印训练过程中每轮动作的分布观察是否出现集中对比随机策略和当前策略在验证集上的准确率差异。处理建议先加入区域命中奖励或帧级监督信号让策略有更密的学习信号再把熵正则系数从 0.1 逐步降到 0.001观察策略熵是否缓慢下降。7.3 停止概率一直很低模型用满最大轮数现象所有样本都跑到最大观察轮数效率指标没有提升。可能原因停止概率不参与效率奖励模型没有动力提前停止或者初始停止阈值设置过高。检查方式查看停止概率的平均值和分布判断是否接近 0。处理建议在奖励函数中加入“提前停止且有正确答案”的正向奖励例如reward accuracy - lambda * (round_num / max_rounds)同时在训练初期把最大轮数设小让模型先学会在有限步数内作答。7.4 长视频显存和延迟超限现象16 帧能跑64 帧直接 OOM。可能原因所有帧都送入视觉编码器中间激活太多或者每轮循环都重新编码了全部历史帧。检查方式用torch.cuda.max_memory_allocated()观察显存峰值出现在编码阶段还是语言模型阶段。处理建议对观察结果做特征缓存新增帧才编码对旧帧只保留压缩后的 token不保留原始输出必要时使用梯度检查点或量化推理。下表汇总了这四类问题方便在实际项目中快速定位。问题现象常见原因检查方式处理建议仍输出冗长推理推理链数据占比过高或生成限制缺失统计输出 token 与推理连接词屏蔽思考 token 输出逐步缩短教师推理链观察策略退化奖励稀疏或熵正则过强查看动作分布与对比随机策略增加区域监督降低熵正则系数停止概率过低效率奖励缺失或阈值过高查看停止概率分布加入提前停止奖励降低初始阈值长视频 OOM全部帧重复编码或激活过多观察显存峰值位置特征缓存、压缩 token、梯度检查点8. 最佳实践与扩展方向8.1 落地前要确认的几件事内部化视觉思考不是拿来就能套用的现成组件。在实际项目里落地前至少确认以下清单是否有高质量显式 CoT 教师模型或者是否愿意为一批样本人工标注推理链。业务场景对延迟和 token 成本的敏感程度是否值得牺牲部分可解释性。评测集是否覆盖时序推理、空间定位、跨帧对比等多类问题避免单点过拟合。存储和算力是否支持两阶段训练尤其是强化学习阶段的多次采样。是否有日志系统记录每道题的动作序列、停止轮数和置信度便于线上问题回溯。如果以上任何一项不满足建议先用显式 Visual CoT 方案跑通基线再逐步迁移到内部化方案而不是一开始就跳到复杂架构。8.2 从视频问答扩展到具身智能主动视频推理的“主动观察”能力天然适合具身智能和机器人场景。机器人面对未知环境时不可能一次性看到所有信息必须根据当前任务目标主动转动摄像头、移动位置、放大局部区域。这个过程的本质就是内部思考状态驱动观察动作观察结果再更新内部思考状态。把本文的架构稍作改造把“选帧”改成“选视角”把“停止判断”改成“任务完成判断”就可以迁移到视觉导航、物体抓取和场景交互等任务。8.3 值得关注的研究方向目前这类方法还有几个问题没有统一解法。一个是如何在内部化思考和可解释性之间取得更好平衡例如用高度压缩的摘要式思考文本替代完全隐藏的思考状态另一个是思考 token 的监督信号设计完全无监督的思考 token 容易退化应该探索更高效的自动生成蒸馏信号
返回列表