Skip to content

从零理解强化学习:面向流式重建、SLAM 与在线感知

面向读者:了解一点计算机视觉,但没有强化学习基础的学生。
编写与资料核查日期:2026-09-12。
本文是一份循序渐进的教程。基础概念采用标准定义;视觉场景中的例子、奖励设计和实验方案,除明确引用论文外,均为教学设计或研究建议,不代表已经验证的性能或创新性。

你学习强化学习的第一目标,应当是能判断自己的视觉问题是否包含值得学习的长期决策,而不是记住一串算法缩写。

对于流式视觉,一个值得先尝试的方向是:保留已有的几何或感知模型,让一个小策略决定什么时候计算、保留什么记忆、什么时候更新。 这能把问题限定在一个可分析的决策环节。最终是否值得使用强化学习,需要与规则、监督学习和短视决策方法比较。

阅读导航

公式允许分两遍读:先读公式后面的中文解释,再检查符号。你只需要期望、条件概率、求和、导数和梯度下降的初步知识;第 3 节会补最基本的数学直觉。


1. 先从一个你熟悉的视觉问题开始

1.1 一段视频,为什么不能每帧都精细处理?

假设你有一个在线三维重建系统。相机每秒送来 30 张图像,系统需要估计相机运动、恢复几何,并维护历史记忆。

计算和存储都有限,因此不断出现选择:

  • 当前帧值得成为关键帧吗?
  • 缓存已满,应该删除旧帧,还是拒绝新帧?
  • 当前跟踪不稳,要不要运行一次昂贵的重新定位?
  • 还有一些计算预算,要现在优化地图,还是留给后面的困难片段?

这些选择往往不能只看当前帧的误差。删除一张看似冗余的旧帧,可能在几秒后的回访中导致重定位失败;多做一次优化,可能改善当前几何,也可能使输出滞后。

强化学习研究的是:如何通过交互经验,学会能取得较高累计收益的决策规则。 “累计”意味着一个动作的价值可以在以后才显现。基础概念:Spinning Up

1.2 一个贯穿全文的小故事

设一段极简视频包含三个阶段。整个过程只有一次昂贵更新的预算。

决策时刻 当前情况 使用唯一一次更新的效果
\(t=0\) 看见普通墙面 立即得到 2 分,但对后面没有额外帮助
\(t=1\) 看见有辨识度的岔路 立即得到 1 分,并留下关键锚点
\(t=2\) 遮挡后重新出现 此时不能更新;若之前留下岔路锚点,再得到 6 分

只追求眼前收益的策略,会在第一步花掉预算,最终得到 2 分。

考虑长期收益的策略,会先等待,在第二步更新,最终得到 \(1+6=7\) 分。

这里的分数是人为设计的教学奖励,不是某个真实数据集指标。这么小且规则完全已知的问题,可以直接枚举或规划;使用强化学习只是为了演示如何从尝试中学到同样的决策。

1.3 强化学习、监督学习和自监督学习有什么不同?

方法 训练信号 视觉例子
监督学习 给定输入对应的目标答案 用真值深度训练深度网络
自监督学习 从数据结构中构造约束 利用多视图重投影一致性学习深度
模仿学习 给定专家采取的动作 学习一个优秀规则或搜索器如何选择关键帧
强化学习 执行动作后得到的奖励与后续结果 学习怎样选择关键帧,使整段序列的质量和开销更合适

在监督分类中,你通常知道这一张图的类别。在强化学习中,你可能只知道“这串操作最后成功了”,却不知道其中每一步是否正确。这就产生了信用分配问题:最后的好坏,应当归因于哪些早期动作?

奖励也可以依赖真值深度、真值位姿或人工设计的评测函数。强化学习不等于不需要标注,也不等于不需要人设计目标。

1.4 有时间顺序,就需要强化学习吗?

不一定。分三种情况看:

  1. 每帧独立预测深度。 如果没有动作选择,通常直接做监督或自监督预测。
  2. 每帧选择大模型或小模型,但选择不影响以后,且没有共享预算或队列。 可以先做监督决策或 contextual bandit,即“上下文老虎机”:看当前信息,为这一次收益选择动作。
  3. 今天保留的记忆、消耗的预算或积累的延迟,会改变以后能做什么、做得怎样。 这才有明确的多步决策结构,可以考虑强化学习。

即使属于第三种情况,动态规划、模型预测控制或优秀的启发式也可能更合适。把问题写成强化学习形式,只说明它可以这样建模,尚未说明强化学习是最好的求解方法。

2. 强化学习的语言:把视觉系统翻译成决策过程

2.1 七个最常见的词

术语 符号 通俗解释 流式重建中的例子
智能体,agent 做选择的部分 决定是否写入关键帧的小网络
环境,environment 接受动作并产生后果的系统 视频回放器、重建器、缓存和计时器
状态,state \(s_t\) 足以决定后续分布的完整信息 场景状态、地图、预算、待处理队列等
观测,observation \(o_t\) 智能体实际上看得到的信息 当前图像特征、匹配统计、预算余量
动作,action \(a_t\) 这一步选择做什么 跳过写入、插入关键帧、触发优化
奖励,reward \(r_{t+1}\) 动作之后得到的一个标量反馈 精度收益减去计算成本
策略,policy \(\pi\) 从可用信息到动作的规则 各候选动作的概率分布

本文统一使用:\(t\) 时刻选 \(a_t\),随后得到 \(r_{t+1}\) 和下一状态 \(s_{t+1}\) 有些论文把这次奖励写成 \(r_t\),只是下标约定不同。

当前可见信息 o_t ──→ 策略 π ──→ 动作 a_t
        ↑                         │
        │                         ↓
下一次观测 o_(t+1) ←── 视频 + 重建器 + 记忆 + 预算
                                  │
                                  └──→ 奖励 r_(t+1),用于训练

环境不必是机器人模拟器。一段固定视频与一个会被动作改变内部状态的重建程序,也能组成交互环境。

2.2 MDP:为什么大家都要写这个五元组?

马尔可夫决策过程,Markov Decision Process,简称 MDP,通常写作:

\[ \mathcal{M}=(\mathcal{S},\mathcal{A},P,R,\gamma). \]

其中 \(\mathcal{S}\) 是状态集合,\(\mathcal{A}\) 是动作集合,\(P(s'\mid s,a)\) 是转移概率,\(R\) 描述奖励,\(\gamma\) 是折扣因子。完整任务还需说明初始状态分布、终止规则及有限或无限时域。

马尔可夫性质表达为:

\[ P(s_{t+1}\mid s_0,a_0,\ldots,s_t,a_t) =P(s_{t+1}\mid s_t,a_t). \]

它的含义是:如果当前状态已经描述充分,就不用再额外翻查历史。 这不意味着世界没有历史,而是历史的相关影响已经体现在当前状态里。

例如,同一张当前图像,配上“还剩 10 次优化预算”和“预算已耗尽”,应该得到不同决策。如果状态没有预算,算法看到的就是“相同输入却有不同后果”。

有限时长任务还可能需要剩余时间。即将结束和刚刚开始时,同一笔预算的价值不同。

2.3 真实视觉更接近 POMDP

单张 RGB 图像不能完整告诉你三维结构、遮挡后的物体、相机真实位姿,也不能直接给出跟踪对应是否正确。因此,视觉决策常是部分可观测马尔可夫决策过程,POMDP。

要分清三层信息:

  • 真实状态 \(s_t\) 理论上决定后果的信息,不一定可获取。
  • 观测 \(o_t\) 当前实际可获取的图像、统计量等。
  • 控制器记忆 \(z_t\) 从历史观测和动作中压缩出来的信息。

例如:

\[ z_t=f_\psi(z_{t-1},o_t,a_{t-1}),\qquad a_t\sim\pi_\theta(\cdot\mid z_t). \]

\(f_\psi\) 可以是循环神经网络、历史窗口编码器,或手工维护的统计量。不要把一个特征向量命名为 state,就当作它满足马尔可夫性质。

更严格的办法是维护 belief,即“根据历史,对真实状态的概率分布”。SLAM 中对位姿和地图的不确定性估计,可以帮助理解这种思想;但实际 SLAM 估计通常只是某种近似,不能直接当作完整 belief。

对初次实验,先用“当前廉价特征 + 缓存摘要 + 预算 + 历史统计”。只有发现遗漏历史导致明显错误,再增加复杂记忆结构。

3. 奖励和回报:算法到底在最大化什么?

3.1 奖励是一次反馈,回报是以后的总账

设一段 episode,也就是一次完整任务,共有 \(T\) 步。时刻 \(t\) 的折扣回报为:

\[ G_t=\sum_{k=t}^{T-1}\gamma^{k-t}r_{k+1}. \]
  • \(\gamma=0\):只看立即奖励。
  • \(\gamma\) 接近 1:远期奖励仍然有较大权重。
  • 有限回合且回报有界时,可以使用 \(\gamma=1\)
  • 无限时域问题通常用 \(\gamma<1\) 保证有界奖励的折扣和收敛,或另定义平均奖励目标。

对第 1 节的故事,取 \(\gamma=0.95\)

\[ G_0^{\text{立即更新}}=2, \qquad G_0^{\text{等到岔路}}=0+0.95\times1+0.95^2\times6=6.365. \]

这里算法愿意暂时得 0 分,因为它能换来更好的后续机会。

3.2 期望:不要求每次都赢

策略的目标通常写成:

\[ J(\theta)=\mathbb{E}_{\tau\sim\pi_\theta}[G_0]. \]

\(\theta\) 是策略参数,\(\tau\) 是一次状态、动作、奖励构成的轨迹,\(\mathbb{E}\) 表示对场景差异、动作随机性等取平均。

例如,一个动作以 80% 的概率得到 10 分,以 20% 的概率得到 0 分,期望收益是 8 分。最大化期望不等于避免每一次失败。因此,真实系统还应单独评价失败率、极端延迟和最差场景;风险约束需要明确建模。

3.3 折扣因子不能脱离真实时间理解

\(1/(1-\gamma)\) 可作为折扣权重的粗略时间尺度,以“决策步”为单位;它不是硬性的最大规划长度。

例如 \(\gamma=0.99\) 时,大约是 100 步。如果每帧决策一次,30 FPS 下约为 3.3 秒;如果每秒决策一次,则约为 100 秒。

如果你的价值主要在 20 秒后的重访才显现,只使用很短 rollout 和很快衰减的回报,学习信号可能非常弱。长程任务需要同时考虑折扣、价值估计、历史记忆和训练序列跨度。

3.4 奖励与训练损失不是一个东西

奖励定义你想要什么;损失定义怎样更新参数。

重建误差可以参与构造奖励,例如 \(r=-E\)。但 PPO 的策略损失并不是简单地把这个误差反向传播穿过整个重建过程。它利用被采样动作的概率和收益估计,调整以后采取该动作的倾向。

所以,离散选择、不可微的缓存操作或黑箱程序,也能被策略梯度方法优化。代价是:通常需要更多交互样本,梯度估计也更嘈杂。

4. Value、Q 和 Bellman:长期收益是怎样估计出来的?

4.1 状态价值与动作价值

先在完全可观测设定下理解:

\[ V^\pi(s)=\mathbb{E}_\pi[G_t\mid s_t=s], \]
\[ Q^\pi(s,a)=\mathbb{E}_\pi[G_t\mid s_t=s,a_t=a]. \]
  • \(V^\pi(s)\):到达这个状态后,继续按策略 \(\pi\) 行动,平均能得多少分?
  • \(Q^\pi(s,a)\):在这个状态先做动作 \(a\),以后按 \(\pi\) 行动,平均能得多少分?

Q 值不是当前动作的立即奖励,而是包含后续后果的预测。POMDP 中可以把完整历史作为条件,或使用近似历史表示训练价值网络。

4.2 Bellman 方程其实只是拆账

由于:

\[ G_t=r_{t+1}+\gamma G_{t+1}, \]

因此:

\[ V^\pi(s)=\mathbb{E}_{a\sim\pi,\,s'\sim P} \left[r_{t+1}+\gamma V^\pi(s')\mid s_t=s\right]. \]

当前的长期价值 = 下一次得到的奖励 + 下一状态的折扣长期价值。

假如某动作立即得到 \(-1\) 分,但下一状态价值为 10,且 \(\gamma=0.9\),那么该动作价值为 \(-1+0.9\times10=8\)。立即付出代价并不意味着动作不好。

最优动作价值 \(Q^*\) 满足:

\[ Q^*(s,a)=\mathbb{E}\left[ r_{t+1}+\gamma\max_{a'}Q^*(s',a')\mid s,a \right]. \]

这里的 max 表示后面选择最有价值的动作。若转移和奖励已知、状态很小,可以用动态规划反复应用这种关系,不必先学习一个神经网络。

4.3 Monte Carlo:等这一局结束再算

Monte Carlo,蒙特卡洛方法,用实际走完轨迹后得到的 \(G_t\) 来学习价值:

\[ V(s_t)\leftarrow V(s_t)+\alpha\big(G_t-V(s_t)\big). \]

\(\alpha\) 是学习率,表示每次相信新证据多少。

优点是目标直接来自实际回报,不依赖下一状态的价值预测;难点是要等回合结束,而且后续随机事件会让目标波动很大。

4.4 TD:先用下一步预测来更新这一步

时序差分学习,Temporal-Difference learning,简称 TD,采用目标:

\[ y_t=r_{t+1}+\gamma V(s_{t+1}), \]

以及 TD 误差:

\[ \delta_t=r_{t+1}+\gamma V(s_{t+1})-V(s_t). \]

于是:

\[ V(s_t)\leftarrow V(s_t)+\alpha\delta_t. \]

例如原来预测价值是 3,这一步得到 1 分,下一状态预测价值为 4,取 \(\gamma=0.9\),则新证据对应 \(1+0.9\times4=4.6\)。TD 误差是 1.6;若学习率为 0.1,价值从 3 调到 3.16。

这种“用一个估计更新另一个估计”叫 bootstrapping,自举。它让学习不必等待整段长视频结束,但也可能传播错误预测。

4.5 Advantage:这个动作比通常情况好多少?

优势函数定义为:

\[ A^\pi(s,a)=Q^\pi(s,a)-V^\pi(s). \]

如果这个状态平均能拿 5 分,而某动作预计能拿 7 分,优势就是 2。即使某动作的回报是正数,如果它比该状态下通常的选择更差,优势也可以为负。

它的作用是把“场景本身容易”与“动作选择得好”区分开。后面的策略梯度和 Actor–Critic 会使用这个量。

基础概念可对照 Sutton 与 Barto 的《Reinforcement Learning: An Introduction》第二版阅读;上面的视觉例子和数值演算为本文构造。

5. 第一条算法路线:Q-learning 与 DQN

5.1 Q-learning 如何从数据学习?

观察一次转移 \((s_t,a_t,r_{t+1},s_{t+1})\) 后,更新:

\[ Q(s_t,a_t)\leftarrow Q(s_t,a_t)+\alpha \left[r_{t+1}+\gamma\max_{a'}Q(s_{t+1},a')-Q(s_t,a_t)\right]. \]

真正终止时,后续价值为 0。动作存在约束时,max 只应在合法动作中计算。

学习完成后,选择:

\[ a_t=\arg\max_a Q(s_t,a). \]

训练时如果一直选当前看起来最好的动作,可能永远发现不了其他好选择。最简单的探索方式是 \(\epsilon\)-greedy:以 \(1-\epsilon\) 的概率选当前最好动作,以 \(\epsilon\) 的概率从合法动作中随机选择。

注意这里的探索是“尝试不确定的动作”;机器人在空间中探索未知区域,则是一种具体任务。两者不能直接画等号。

5.2 从表格到神经网络

状态很多时,无法存一张完整 Q 表,于是使用网络 \(Q_\theta(s,a)\) 近似 Q 值,这就是 DQN 的核心出发点。经典 DQN 使用经验回放与目标网络,缓解样本相关性和学习目标快速变化的问题。DQN,Nature 2015

一个简化目标是:

\[ y_t=r_{t+1}+\gamma(1-d_t)\max_{a'}Q_{\bar\theta}(s_{t+1},a'), \qquad L_Q=\mathbb{E}\big[(Q_\theta(s_t,a_t)-y_t)^2\big]. \]

\(d_t\) 表示真正终止,\(\bar\theta\) 是更新较慢的目标网络参数;计算目标时不通过 \(y_t\) 反传梯度。

经验回放,replay buffer,是保存过去转移并重复抽样训练的容器。它与视觉系统中保存关键帧的缓存是不同的东西。

5.3 对你的任务有什么意义?

“写入或不写入”“轻、中、重三档计算”这类小规模离散动作,可以考虑 DQN 系列。若动作变成从 10,000 个 token 中任意挑一个子集,直接枚举动作就不可行,应该先重设动作粒度。

对于连续相机控制,经典 DQN 中的 \(\max_a Q(s,a)\) 也不容易直接计算,需要其他算法或离散化设计。不要因为学会了一个算法,就把所有任务强行改成它能处理的形式。

6. 第二条算法路线:直接学习策略

6.1 一个看起来像分类器的网络

假设有三个动作:保持、写入关键帧、重新定位。策略网络可以输出:

\[ \pi_\theta(\cdot\mid o_t)=[0.6,0.3,0.1]. \]

训练时按这些概率采样动作。虽然结构像分类器,但训练数据中通常没有逐步的“正确动作标签”。你要根据动作后的结果,调整这些概率。

6.2 REINFORCE 的直觉

让带来较高回报的动作更可能再次发生。

最基本的策略梯度利用恒等式:

\[ \nabla_\theta p_\theta(x) =p_\theta(x)\nabla_\theta\log p_\theta(x). \]

对于本文的有限时域折扣目标,在环境转移不依赖策略参数的通常设定下,可以写为:

\[ \nabla_\theta J(\theta) =\mathbb{E}\left[ \sum_{t=0}^{T-1}\gamma^t \nabla_\theta\log\pi_\theta(a_t\mid s_t) \big(G_t-b(s_t)\big) \right]. \]

其中 \(b(s_t)\) 是不依赖当前采样动作的 baseline,常取价值函数。减掉它不改变该梯度估计的期望,并可降低方差;策略更新时,把回报或优势目标视为常量。

如果选择某动作带来的回报比 baseline 高,就增大其概率;低于 baseline,则降低其概率。对环境本身不需要求导。策略优化推导

有些教程针对不折扣目标,或采用折扣状态访问分布来写期望,看不到外面的 \(\gamma^t\)。比较公式时,先检查目标和采样约定。

6.3 为什么需要 Actor–Critic?

完整回报可能要等很久才能得到,也可能被很多偶然事件影响。因此常联合训练两个角色:

角色 学什么 输出
Actor,策略 如何选择动作 动作概率或连续动作分布
Critic,价值评估器 预计还能得到多少回报 \(V\)\(Q\) 的估计

Actor 用 Critic 帮助估计优势,Critic 用真实奖励与后续价值目标学习。它不是一位掌握正确答案的“裁判”,也可能估错。

\(V\) 足够准确时,一步 TD 误差可以在合适条件下作为优势估计。更常见的折中是多步估计,例如下一节的 GAE。

对小型视觉控制器,可以先使用共享廉价输入、分别输出策略与价值的两层 MLP。若观测不够充分,再尝试循环网络,而不是一开始同时增加大模型、长记忆和复杂动作空间。

7. 理解 PPO:你很可能会用到的第一种深度 RL 算法

7.1 PPO 想解决什么问题?

一次策略更新如果过大,新策略可能跑到旧数据几乎没覆盖的区域。PPO 使用旧策略采集一批数据,再通过较保守的代理目标进行若干轮更新。PPO-Clip 的目标包含概率比:

\[ \rho_t(\theta)= \frac{\pi_\theta(a_t\mid s_t)}{\pi_{\mathrm{old}}(a_t\mid s_t)}, \]
\[ L^{\mathrm{clip}}(\theta)= \mathbb{E}_t\left[ \min\left( \rho_t\hat A_t, \operatorname{clip}(\rho_t,1-\epsilon,1+\epsilon)\hat A_t \right)\right]. \]

这个目标被最大化。若用最小化损失的优化器,就对策略目标取负号。它限制继续把某个动作概率向有利方向推得太远的收益,但不是对新旧策略距离的严格保证PPO 原论文PPO 官方教学说明

自己算一个例子:旧概率为 0.2,新概率为 0.3,则 \(\rho=1.5\)。若优势为 2,裁剪参数为 0.2,则两个候选项分别为 3 和 2.4,取较小的 2.4。这个样本不再鼓励沿同一方向无限增加概率。参数共享仍可能使概率继续改变,所以还应监测更新幅度。

7.2 GAE:把多个时间尺度的证据混合起来

广义优势估计,Generalized Advantage Estimation,简称 GAE,使用:

\[ \delta_t=r_{t+1}+\gamma V(s_{t+1})-V(s_t), \]
\[ \hat A_t^{\mathrm{GAE}}= \sum_{l=0}^{L-1}(\gamma\lambda)^l\delta_{t+l}. \]

这个式子针对同一条连续轨迹中的有效片段;真正终止时后续价值为 0。

\(\lambda\) 控制使用多少长程信息。较小的值更多依赖近处的价值预测;较大的值纳入更多实际后续奖励,通常具有不同的偏差与方差权衡。\(\lambda\) 和折扣 \(\gamma\) 不是同一个参数。GAE 原论文

7.3 训练过程长什么样?

  1. 固定一份当前策略作为采样策略,运行多段训练视频。
  2. 保存观测、动作、奖励、终止标志、旧动作对数概率和价值预测。
  3. 根据连续轨迹计算回报目标和优势。
  4. 对这批数据进行若干轮小批量更新,学习策略与价值;可加入熵奖励以鼓励探索。
  5. 重新用更新后的策略采集数据。

PPO 通常归为 on-policy。在同一批新数据上做有限轮更新,不等于可以无限复用任意旧策略生成的历史记录。

7.4 学到这里应该掌握到什么程度?

你应能解释:Actor 为什么提高某个动作概率,Critic 如何提供基准,为什么要限制策略变化,以及奖励为什么不需要可微。

暂时不必手写完整 PPO。先用成熟实现验证一个小环境,再把精力花在视觉任务的动作、状态、奖励和评测协议上。PPO 在你的重建环境中是否稳定、是否划算,都需要实验确认。

8. 算法地图:按问题选方法

8.1 先理解三个彼此不同的分类轴

分类轴 第一类 第二类
数据与策略的关系 on-policy:主要使用当前或近期采样策略的数据 off-policy:允许行为策略和所学策略不同,复用历史数据
是否再收集交互数据 online RL:训练中继续通过策略采集新转移 offline RL:只使用固定的既有转移数据集
是否显式使用转移模型来学习或规划 model-free:不显式建立这类动力学模型 model-based:使用已知或学得的转移模型

off-policy 不等于 offline;online RL 不等于推理时处理流式输入。

你可以在实验室中反复回放录制视频,以当前策略重新运行重建器来产生转移,完成 online RL 训练;部署时冻结策略,进行流式推理。也可以在固定日志上做 offline RL,最后仍部署为流式系统。

“model-free”也不表示没有神经网络,或环境里没有重建模型;它特指 RL 是否显式依靠状态转移模型进行学习或规划。

8.2 面向初学者的选择表

问题 建议先比较 原因或限制
一次独立决策,能枚举动作效果 规则、监督回归/分类 不必先解决多步信用分配
一次独立决策,只看到所选动作收益 contextual bandit 需要探索,但没有明确长期状态影响
少量离散动作,可重复交互 DQN 系列、PPO 易于建立可解释的控制器
连续动作,交互数据昂贵 SAC 与其他 off-policy 方法 能利用回放;环境适配与调参仍重要
只有固定日志,不能测试新动作 模仿学习、专门的 offline RL 普通 off-policy 算法不自动解决分布外动作问题
转移模型较准确,动作候选少 短视搜索、MPC、动态规划 可先通过显式规划利用已知结构
观测缺失关键历史 历史统计、循环策略或 belief 近似 单纯换优化算法无法补回缺失信息

SAC,Soft Actor-Critic,通过奖励与策略熵共同构造目标,是经典的 off-policy Actor–Critic 方法,原论文主要面向连续控制。SAC,ICML 2018

上述表格是实验起点,不是算法性能排名。对视觉项目而言,正确的环境定义通常比“把 PPO 换成更热门算法”更重要。

9. 把强化学习接到流式视觉里:先区分被动与主动

9.1 被动流式处理:相机轨迹固定,算法选择处理方式

假设输入是已经录好的视频,动作不改变下一帧图像,但会改变系统记忆:

\[ m_{t+1}=F(m_t,I_t,a_t), \]

以及剩余预算:

\[ b_{t+1}=b_t-c_t(a_t). \]

\(m_t\) 是处理当前帧之前的重建器状态或缓存,\(I_t\) 是当前已到达图像,\(c_t\) 是动作成本。即使 \(I_{t+1}\) 固定,后续输出仍会因 \(m_{t+1}\)\(b_{t+1}\) 不同而改变。

因此,摄像机不受控制,也可以有强化学习问题。 学习的是内部处理决策。

决策位置 可用观测 动作 可能的长期后果
关键帧选择 当前廉价匹配、视差、缓存摘要 写入或不写入 基线质量、回访匹配和漂移改变
记忆管理 槽位年龄、覆盖、历史使用情况 保留、替换某个槽位 遮挡后能否恢复身份或定位
计算分配 跟踪置信度、当前预算、队列 轻量更新或重优化 剩余预算和输出延迟改变
地图维护 局部一致性、地图规模、动态区域比例 融合、压缩、暂缓更新 错误是否累积、地图是否遗忘
测试时适配调度 可用的自监督残差、漂移迹象 不更新或执行若干步适配 后续模型状态、耗时和遗忘改变

这里“使用残差做观测”有一个前提:它在决策发生前已能算出,且计算成本计入系统。 不能先执行昂贵动作,再把该动作产生的结果用来决定要不要执行它。

RL 用来决定是否运行测试时适配,并不意味着适配本身就是 RL;适配仍可以采用常规自监督梯度下降。

9.2 主动视觉:动作改变未来会看到什么

如果你能移动相机、机器人或传感器,就能控制未来观测。例如选择下一个拍摄位置,让遮挡区域被看见,或选择回到旧区域以减少位姿不确定性。

这类任务需要考虑:可达性、相机运动成本、碰撞、视野以及渲染或真实采集。环境必须能够回答“如果去了另一个位置,会看到什么”。

固定单条轨迹的视频一般不能回答这个问题。多视图数据可以支持有限候选视角选择,但其候选范围、遮挡和运动约束需要明确;不能直接当成自由移动的真实环境。

9.3 四个值得对照理解的研究例子

工作 设定与学习对象 对你最有用的启发
Reinforcement Learning Meets Visual Odometry,ECCV 2024 把图像序列和 VO 系统组成环境,学习关键帧及网格大小选择 RL 可以控制传统视觉流水线中的决策,不必直接预测几何
Learning to Explore using Active Neural SLAM,ICLR 2020 主动探索;结合学习模块、分层策略与解析规划器 保留空间表示与规划结构,可以比完全端到端更容易分解问题
Next-Best View Policy for 3D Reconstruction / Scan-RL,2020,页面标注 ECCV Workshops 学习下一个视点,以完成房屋扫描 目标是控制观测获取;与固定视频上的缓存管理不同
Towards Streaming Perception,ECCV 2020 定义把延迟纳入考虑的流式感知评测 这是评价方式的重要参照,不能把它当作“必须使用 RL”的证据

还有一篇直接相关的近期资料:Keyframe-Based Feed-Forward Visual Odometry,2026 年 arXiv 稿,已将 RL 关键帧策略用于前馈视觉里程计。本文按检索到的 arXiv 稿标注,不推断正式录用情况。因此,“在三维基础模型外加一个 RL 选帧器”本身已经不足以作为新颖性论证。

10. 奖励设计:最容易把任务做错的地方

10.1 先写评价目标,再设计训练奖励

假设你的目标是:在给定内存与计算预算下,使整段流式输出的几何误差尽量低。

可以先写成约束问题:

\[ \min_\pi\ \mathbb{E}[E_{\mathrm{task}}] \quad\text{s.t.}\quad \mathbb{E}\left[\sum_t c_t\right]\le B, \quad M_t\le M_{\max}. \]

这里 \(E_{\mathrm{task}}\) 必须提前定义,例如所有规定时刻的几何误差平均值,而不是仅挑选成功帧。\(B\) 是整段计算预算,\(M_{\max}\) 是工作记忆上限。

软化成“误差 + 成本惩罚”是常用做法,但期望约束、惩罚项和逐次硬约束不同。若要求内存永不超限,就需要由合法动作集合、固定槽位等机制保证;仅在超限后扣分不足以保证约束成立。

10.2 一个可用来起步的奖励模板

对每帧固定决策一次的教学设定,可以考虑:

\[ r_{t+1}= -w_g\widetilde E^{\mathrm{geom}}_t -w_p\widetilde E^{\mathrm{pose}}_t -w_i\widetilde E^{\mathrm{id}}_t -w_c\frac{c_t}{c_{\mathrm{ref}}} -w_f\mathbf{1}[\mathrm{failure}_t]. \]

几何、位姿、身份保持误差都在本次动作产生输出后计算,\(\widetilde E\) 表示按预先约定方式缩放的误差。\(w\) 是研究者选择的权重,\(c_{\mathrm{ref}}\) 是参考成本。

不需要一开始把所有项都放进去。第一版可以只用一个核心误差、一个计算成本和一个明确失败项。各项缩放依据只能来自训练集或预先固定标准;应记录原始指标,防止总奖励掩盖某一项恶化。

这只是起点,不是适用于所有视觉任务的标准奖励。 对实时调度,更合适的目标可能是规定时间网格上的误差积分;对最终静态模型,可能是终局重建质量。两者不应混用。

10.3 为什么只奖励“误差下降”可能出问题?

有人会设计:

\[ r_{t+1}=E_t-E_{t+1}. \]

\(\gamma=1\),且所有 \(E_t\) 对应同一评价对象、同一尺度和同一规则时,累积和为 \(E_0-E_T\)。这主要关心终局改善,不能表达中间是否长期输出很差。

当评价区域变化、场景动态变化,或使用折扣时,上面的简单等价不再成立。当前帧更容易,也可能被误当成动作带来了改进。

如果是在原目标上增加辅助奖励,经典的势函数形式为:

\[ r'_{t+1}=r_{t+1}+\gamma\Phi(s_{t+1})-\Phi(s_t). \]

在相应 MDP 假设下、使用同一折扣并正确处理终止边界,它能保持最优策略不变。有限回合通常需要令终止势为零,或作等价边界处理。任意增加“看起来合理”的辅助分数没有这个保证。Ng、Harada、Russell,ICML 1999

10.4 六种典型的奖励漏洞

奖励写法 策略可能学到的取巧方式 改进方向
只降低重投影误差 删除难点或减少输出,留下少量容易点 固定评价查询,统计覆盖率与缺失输出
只奖励自报置信度 越来越自信,但预测不更正确 使用独立正确性指标,检查校准
只奖励新建地图点数 重复生成或保留大量错误点 同时检验几何正确性与覆盖
只惩罚耗时 总是跳过或提前退出 评价全时段服务质量及缺失结果
只看终局全局误差 中间严重漂移,最后再修补 增加按实际时刻记录的前缀输出评测
失败立即结束并不再计负分 提前失败反而少受后续误差惩罚 在剩余时域采用约定失败代价或明确终局处理

动态场景还要区分“当前视野的几何正确”与“持续跟住同一物理点”。删掉动态物体可能让静态背景误差更好,却破坏你真正关心的感知能力。

10.5 几何不确定性与信息增益,先当作假设

对主动重建,奖励新增覆盖、减少位姿不确定性或预期信息增益,是自然的设计思路。但不确定性来自一个估计模型,可能失准;覆盖大也不意味着几何准。

应该检验:这些代理量是否预测独立的真值误差下降,策略是否偏好本来就容易的区域,以及长时间运行后是否仍然有效。不能仅凭变量名叫 uncertainty,就断言策略在学习有价值的信息获取。

11. 流式任务必须多想一层:因果性和墙钟时间

11.1 未来帧不能出现在当前决策输入中

严格因果策略只能依赖截至当前实际到达的观测:

\[ a_t=\pi(I_{\le t},\text{当前可用内部状态}). \]

常见泄漏包括:提前在整段视频上提取双向特征、用未来匹配质量给当前缓存排序、使用整段测试视频的统计量归一化,以及用最终优化后的轨迹作为当时已经可见的位姿。

一个简单审计方法是前缀一致性检查:在固定随机数与相同运行条件下,完整视频和只提供到 \(t\) 的前缀,其截至 \(t\) 的决策应一致。这里仅隐藏后续输入,不能同时改变已知任务期限、预算或提前发送结束信号。模拟延迟的系统还需保持相同到达时间与已完成任务状态。

11.2 流式不只是“按帧读文件”

假设图像在 0、33、67 毫秒到达。处理第一张图需要 70 毫秒,那么在 67 毫秒,第一张图的结果还没有产生。

墙钟时间: 0 ms          33 ms          67 ms   70 ms
图像到达: I0             I1             I2
处理过程: [------------- I0 计算 -------------]
可用结果:                                     I0 的结果

如果你在评价 67 毫秒时就使用 I0 的最终结果,或者直接读取 I2 的离线预测,就是提前使用了尚未算出的输出。

真实流式评价应明确:在时刻 \(u\),实际可用的输出是什么,它描述哪个时刻,是否经过跟踪或预测传播到当前时刻。这是 Towards Streaming Perception 提醒视觉研究注意的核心问题。

11.3 为实时调度建立事件模拟

至少需要记录图像采集时间、入队时间、开始处理时间、完成时间、输出发布时间,以及策略决策自身的耗时。

评测器在固定墙钟时间网格读取“当时已发布的最新输出”。排队策略也要固定说明:处理所有积压帧、只处理最新帧、还是丢弃过期帧。否则不同方法比较的不是同一种服务方式。

若动作持续时间不同,\(t\) 更适合表示决策事件序号。若采用按时间折扣,可设置 \(\gamma_t=\exp(-\beta\Delta t)\),并让该事件奖励覆盖动作持续区间内的任务收益或误差成本。这样不会把 1 毫秒与 1 秒的动作机械地当作相同长度的一步;它属于半马尔可夫建模的思路。

11.4 对重建和跟踪,具体报告什么?

维度 建议指标或说明
当前感知质量 指定时刻的深度、几何、位姿或跟踪指标
长期一致性 随前缀长度变化的漂移、遮挡后恢复、身份保持
完整性 完成序列比例、有效覆盖、缺失预测数量
实时性 端到端延迟的中位数与 P95、输出年龄、截止期违约率
资源 峰值工作显存、CPU 工作内存、地图和缓存规模
训练代价 环境步数、训练墙钟时间、硬件与策略额外开销

ATE 是绝对轨迹误差,RPE 是相对位姿误差。单目评测还需说明是否允许尺度对齐。可以报告整段轨迹一次对齐后的最终指标,但也应单独报告适合在线输出的前缀指标;不能把整段未来信息得到的对齐效果称为系统当时已经具有的精度。

只保存更多历史到 CPU,并不能自动宣称系统总内存恒定。应该写清工作记忆、长期地图和结果归档分别统计什么。

12. 训练数据从哪里来?测试时还要奖励吗?

12.1 最适合被动流式任务的起点:视频回放环境

将已有训练视频、冻结的视觉模型和可重置的记忆管理器组合起来:

reset:抽取训练视频,清空地图、策略记忆、预算和队列
step(action):
    1. 在当前内部状态上执行动作
    2. 更新视觉输出、记忆、预算和模拟时钟
    3. 由独立评价器计算训练奖励
    4. 获取下一决策时刻允许看到的观测
    5. 返回观测、奖励、终止状态与诊断信息

同一段训练视频可以重复使用,但每次必须按照这次策略的动作,重新推进会受动作影响的内部状态。

只缓存某个旧策略跑出来的地图和输出,再假装改变动作后仍会得到它们,不是正确的交互模拟。只有与动作、历史状态无关的确定性特征,才适合直接预计算复用;依赖缓存或跨帧上下文的特征需要另行处理。

12.2 训练可以看真值,部署策略不能偷偷依赖它

信息 训练奖励计算 部署 Actor 输入
训练序列真值深度、位姿 可以 不可以,除非部署任务本来就提供
训练序列未来结果 可以用于事后评价长期后果 严格因果设定下不可以
当前已测得的残差、预算、缓存统计 可以 可以,但必须计入获取成本
测试集真值 只供独立最终评测 不可以用于调策略、挑阈值或挑检查点

训练时事后知道“早先保留的帧帮助了后面”,是信用分配所需的反馈;把后面帧的内容直接塞给当时的 Actor,是另一回事。

有些方法让 Critic 在训练时使用特权信息,再在部署时丢弃 Critic。例如 Reinforcement Learning Meets Visual Odometry 的方法部分使用了可访问真值位姿信息的训练 Critic。实现这种方法时,还需检查 Actor 是否通过共享特征、历史奖励输入或预处理间接拿到了部署时不存在的信息。

12.3 冻结部署通常不需要实时计算训练奖励

离线完成训练后,部署路径可以仅保留:

当前图像与内部统计 → Actor → 动作 → 更新视觉系统

Critic、真值奖励和策略梯度更新不必运行。离散策略部署时可以取最高概率动作,也可以保留采样;两者可能有不同效果,应明确并验证实际采用的方式。策略每帧做不同选择,是自适应行为;策略参数每帧被训练更新,则是另一个问题。

这也解释了:一个系统可以具有流式决策能力,却完全不在测试序列上训练。

12.4 只有固定日志时,才进入典型 offline RL 困境

假设你只能拿到旧系统保存的 \((o_t,a_t,r_{t+1},o_{t+1})\),不能重跑重建器,也不能测试其他动作。此时新策略选出日志几乎没出现过的动作,其后果无法直接核实。

这会导致分布偏移与不可靠的价值外推。普通 DQN 或 SAC 能用经验回放,并不意味着它们能可靠地只靠任意固定日志训练。Offline RL 教程

CQL 等专门方法尝试约束价值的过度乐观,但不能凭空补齐完全没有证据支持的动作后果。若日志动作覆盖很窄,先做行为克隆并严格评价,可能更合理。Conservative Q-Learning

12.5 真正结束与人为截断必须分开

Gymnasium 的常见接口为:

obs, info = env.reset()
next_obs, reward, terminated, truncated, info = env.step(action)
  • terminated:任务定义中的结束,例如明确的有限时域结束或不可恢复的失败。
  • truncated:因训练采样长度等外部条件停止,但任务在概念上仍会继续。

真正终止不 bootstrap;外部截断通常需要用截断处真实下一观测的价值 bootstrap,不能错误地使用环境自动重置后的初始观测。GAE 的轨迹递推也不能跨入下一回合。Gymnasium:处理时间限制

长视频切成多个训练片段时尤其要注意:片段结束不一定等于环境终止。视频本身就是完整有限任务时,结尾则可以是终止。选择哪一种,应由任务定义决定。

13. 亲手运行:一次预算应该花在哪一帧?

这个实验实现第 1 节的三阶段故事。只用 Python 标准库,不需要 GPU、PyTorch 或 RL 框架。将下面整段代码保存为 toy_keyframe_rl.py,使用 Python 3 运行。

状态是 (阶段, 剩余预算, 是否有岔路锚点);动作 0 表示等待,1 表示更新。时间和预算都进入状态,因此这个玩具问题是可完全观测的。

from collections import defaultdict
import random

GAMMA = 0.95


def legal_actions(state):
    t, budget, anchor = state
    if t >= 3:
        return []
    return [0, 1] if t < 2 and budget > 0 else [0]


def step(state, action):
    assert action in legal_actions(state)
    t, budget, anchor = state
    reward = 0.0
    if action == 1:
        budget -= 1
        if t == 0:
            reward = 2.0
        elif t == 1:
            reward = 1.0
            anchor = 1
    if t == 2 and anchor:
        reward = 6.0
    next_state = (t + 1, budget, anchor)
    terminated = (t + 1 == 3)
    return next_state, reward, terminated


def train(seed=7, episodes=5000):
    rng = random.Random(seed)
    q = defaultdict(lambda: [0.0, 0.0])
    alpha = 0.1
    for episode in range(episodes):
        state = (0, 1, 0)
        epsilon = max(0.05, 0.5 * (1.0 - episode / episodes))
        while True:
            actions = legal_actions(state)
            if rng.random() < epsilon:
                action = rng.choice(actions)
            else:
                action = max(actions, key=lambda a: q[state][a])
            next_state, reward, terminated = step(state, action)
            target = reward
            if not terminated:
                target += GAMMA * max(
                    q[next_state][a] for a in legal_actions(next_state)
                )
            q[state][action] += alpha * (target - q[state][action])
            state = next_state
            if terminated:
                break
    return q


def evaluate(policy):
    state = (0, 1, 0)
    actions, rewards = [], []
    while True:
        action = policy(state)
        state, reward, terminated = step(state, action)
        actions.append(action)
        rewards.append(reward)
        if terminated:
            break
    discounted = sum((GAMMA ** t) * r for t, r in enumerate(rewards))
    return actions, sum(rewards), discounted


def greedy_immediate(state):
    return max(legal_actions(state), key=lambda a: step(state, a)[1])


q = train()
learned = lambda s: max(legal_actions(s), key=lambda a: q[s][a])
for name, policy in [("immediate", greedy_immediate), ("Q-learning", learned)]:
    actions, total, discounted = evaluate(policy)
    print(f"{name}: actions={actions}, total={total:.1f}, G0={discounted:.3f}")
print("Q(start, wait/update):", [round(v, 3) for v in q[(0, 1, 0)]])
assert evaluate(learned)[0] == [0, 1, 0]
assert evaluate(learned)[1] == 7.0

预期输出:

immediate: actions=[1, 0, 0], total=2.0, G0=2.000
Q-learning: actions=[0, 1, 0], total=7.0, G0=6.365
Q(start, wait/update): [6.365, 2.0]

代码中的关键步骤是:到 \(t=2\) 才出现的 6 分,通过 \(Q\) 值更新逐步传回前面的决策,最终让 \(t=0\) 的“等待”变得有价值。

这段实验也有明确局限:视频阶段固定,策略可以记住顺序;奖励规则已知,直接规划或写“第二步更新”的规则同样有效。得到 7 分只能说明你理解并实现了这个教学问题,不能证明 RL 对真实关键帧选择有优势。

完成后尝试三个改动:

  1. GAMMA 改成 0,观察策略是否只追求立即奖励;同时修改末尾断言以符合新目标。
  2. 把岔路锚点的延迟奖励从 6 改成 0,观察第一步决策如何变化。
  3. 随机化岔路出现时刻,并给策略提供能辨识当前内容的观测,检查它是否还只会记住时间位置。

第三个改动开始接近真正的研究问题:策略需要识别“什么时候值得保留信息”,而不只是记住某个固定剧本。

14. 你的第一个真实项目:固定预算下的关键帧写入

下面是一份可执行的实验设计,不是已跑出的结果。目的是检查你的现有视觉系统是否存在可学习的长期决策收益。

14.1 先把研究问题限定成一句话

在固定输入视频、固定视觉模型和明确工作记忆上限下,只学习“当前帧是否写入关键帧缓存”,改善给定预算下的整段在线输出质量。

暂时不要同时学习选帧、删帧、token 压缩、优化迭代数和连续相机运动。动作越多,性能变化越难归因。

14.2 系统构成

当前图像 + 历史缓存
        │
        ├──→ 已有廉价特征与统计 ──→ 小型 Actor ──→ 写入 / 不写入
        │                                               │
        └──────────────→ 冻结视觉主干 + 缓存更新规则 ←────┘
                                      │
                                      └──→ 规定的逐帧输出

仅在训练时:输出 + 训练真值 + 实际成本 → 奖励 → 更新 Actor / Critic

选择能暴露缓存与更新接口的现有系统。如果主干完全不允许控制历史输入或内部状态,先做好接口,不能只给网络外面加一个没有实际影响的动作。

14.3 一份初始环境规格

项目 第一版定义
输入 录制的单目 RGB 序列;是否已知内参在实验中固定说明
视觉模型 冻结权重、固定预处理与输出协议
初始化 所有方法使用相同的因果初始化,不给策略额外真值位姿
工作缓存 例如 8 个关键帧槽位,属于实验起始设置
动作 0:不写入;1:写入当前帧
缓存满时 使用统一的确定性替换规则,例如删除最旧的非锚点帧
硬预算 每个明确有限任务至多写入 \(B\) 次;另记录实际计算成本
合法动作 预算耗尽或状态不允许写入时,只能选 0
输出 所有规定时刻仍需提供预测,缺失输出按统一规则处理
Episode 一段事先定义的任务;场景、地图、预算和策略记忆同步重置
奖励 先选一个核心任务误差,加必要的成本与失败处理

若任务有已知期限,把剩余期限作为观测;对实际不知道何时结束的无限流,不要让策略偷看视频总长度,可以改用每秒预算或令牌桶等资源机制重新定义环境。

“8 个槽位、二值动作”是为了降低第一轮实验复杂度。它们既不是论文结论,也不是必须采用的超参数。

使用动作掩码时,采样、记录旧策略概率和更新时计算新策略概率,都要使用该状态对应的同一合法动作集合。不要让策略选了非法动作,再由环境悄悄改成另一个动作,却仍按原动作概率训练。

14.4 Actor 应该看到什么?

建议先用低维统计量,并逐项确认能在决策前获得:

  • 当前与上一关键帧的廉价匹配数量、内点率和视差摘要。
  • 图像模糊程度、亮度变化、可用的动态区域比例。
  • 缓存大小、槽位年龄、最近一次写入距今多久。
  • 跟踪器已经产生的置信度、残差或状态标志。
  • 剩余预算;实时版本还包括队列与近期延迟。

先用两层 MLP。若同一组统计在不同历史下需要明显不同动作,再尝试 GRU 等循环模型。增加历史后,要按连续片段训练,并正确重置隐藏状态。

对于基于 Transformer 的缓存,不能默认 key/value 可以随意删。应确认位置编码、参考坐标、缓存长度与关联元数据都支持你的操作。

14.5 首轮只选择一个主要评价任务

首轮任务 可以使用的核心训练反馈 必须另报的指标
位姿估计 训练真值下的局部位姿或固定规则轨迹误差 完成率、尺度处理、长前缀漂移
稠密重建 固定评价点上的几何或深度误差 覆盖、错误几何、动态区域表现
长期点跟踪 固定查询的定位与可见性误差 遮挡后恢复、身份错误、丢失查询

如果有训练真值,先验证“决策是否有效”,之后再研究无真值奖励。把难环境、弱奖励和复杂策略一次叠加,会让失败原因难以判断。

固定评价查询非常重要:策略不能通过删掉难跟踪的点,降低自己面对的考题难度。

14.6 必须比较的基线

基线 它检验什么
原系统默认规则 新方法是否比已有工程实践更好
按固定间隔写入 是否只是更新频率带来收益
随机写入,匹配写入次数与资源 是否只是探索到不同但无规律的选择
视差、置信度等阈值规则,在验证集调参 小策略是否优于合理手工规则
学习单步收益的监督模型或 bandit 收益是否真的需要长程信用分配
相同观测与相近容量的模仿学习策略 强化学习训练是否比学一个好教师更必要
短片段上的搜索参考 当前动作空间究竟有没有可利用的性能空间

只有当短片段内枚举全部合法动作序列,并按同一目标求解时,才能称其为该设定的最优上界。有限宽度搜索或贪心搜索一般只是更强参考,不是真正上界。能够看到未来的搜索器也必须单独标注,不能与部署方法混报。

资源比较至少做两种:同等预算比较质量;相近质量比较资源。 多个预算点组成质量–成本曲线,比只报一个精心选出的工作点更有说服力。

14.7 实验顺序

第一步:验证动作有用。 在少量短片段上比较不同写入序列。如果同样预算下怎么选都差不多,当前动作空间可能没有研究价值,不必立刻训练 PPO。

第二步:验证环境正确。 重放完全相同的动作序列,应得到可重复结果;切换动作,应确实改变缓存及后续输出。检查预算扣除、重置、失败和合法动作。

第三步:建立学习基线。 能便宜评估多个动作时,先训练一步收益预测器,或模仿一个合理搜索器。使用 PPO 时可从简单策略开始,也可从模仿策略初始化;两者要在结果中说明。

第四步:训练小型 RL 控制器。 先在少数训练序列上确认能学到规律,再扩展场景。前者只用于调试,不是泛化结果。

第五步:按场景验证泛化。 训练、验证、测试使用不重叠场景或采集序列。不能把同一房间的相邻片段随机拆开,当成独立泛化证据。

第六步:拉长时域和加入真实计时。 先检查完整长序列的记忆与漂移,再验证真实墙钟服务质量。如果只做了离线回放步数预算,结论应限定为预算分配,不能直接称为实时性能提升。

14.8 训练到底要花多少钱?先量环境速度

RL 成本常由重建器反复运行决定,而不是小策略决定。先测若干完整 episode,估算:

\[ \text{训练时间}\approx \frac{\text{所需交互步数}}{\text{实测有效交互吞吐}} +\text{策略更新与评测时间}. \]

例如,仅作量级演算:若平均一步需 0.2 秒,串行执行 \(10^6\) 步就要约 55.6 小时,还未计策略训练和评测。并行环境受显存、共享 GPU 和数据传输限制,不保证线性加速。

冻结与动作无关的特征提取器、缓存合法的确定性计算、降低决策频率,可能降低成本。每一种简化都应检查是否改变了要研究的任务。

14.9 什么样的结果值得继续?

值得继续的信号是:在多个未见场景、多个训练随机种子和合理预算范围内,策略稳定改善真正关心的指标,并且动作行为能与某种失效机制对应起来。

如果优势只来自更多计算、更大观测信息、更强主干或测试集调参,就不能归因于强化学习。

若一个简单阈值在公平条件下达到相同效果,可以采用阈值。这个结果仍然帮助你理解系统瓶颈;没有必要为保留 RL 模块而修改评价标准。

15. 怎样把应用做成一个有说服力的研究问题?

15.1 先证明长期后果存在

相比“把 PPO 用到重建”,下面这种表述更具体:

在有限缓存中,当前帧的即时重建贡献不足以预测其重访价值;是否能用当前可观测证据选择锚点,从而改善长遮挡之后的几何与身份恢复?

这仍只是研究假设。你需要先找到反例片段:短视规则确实删除了将来有用的信息,而且更好的选择在同等预算下能恢复性能。

15.2 三个可以继续探索的方向

方向 需要验证的假设 最有辨别力的实验
遮挡与重访下的记忆保留 即时不显著的观测具有可预测的后续价值 按遮挡时长、重访间隔和重复纹理分组
跟踪失稳前的计算分配 廉价信号能提前识别未来困难,及早干预更划算 与同信息、同容量的短视预测器比较
动态场景中的更新调度 过早融合或适配会污染后续状态,等待可以减少错误传播 分离静态几何、物体运动与身份保持指标

这些方向的价值来自具体机制与可证伪假设。是否新颖,仍需针对确切设定补做文献核查;本文不承诺某个方向尚无人研究。

15.3 一组能支撑归因的消融

  • 长程与短视: 保持相同观测和动作,比较长期目标与单步收益训练。改变 \(\gamma\) 会改变优化目标,解释结果时要明确这一点。
  • 记忆是否必要: 比较无历史、简单历史统计和循环策略。
  • 奖励是否对齐: 去掉某一奖励项,观察独立任务指标是否按预期变化。
  • 信息是否公平: 给规则或学习基线同样的廉价输入,防止仅靠更多信息获胜。
  • 预算是否泛化: 在未用于调参的预算和更长序列上评价。
  • 动作是否可解释: 画出写入时刻、误差、预算及遮挡事件的时间曲线,核对决策与失效机制。

不要只展示累计奖励上升。那只能说明策略更会优化你写下的分数。

15.4 如何报告不稳定性?

训练随机性和测试场景差异是两种不同的不确定性。分别记录,使用多个训练种子,在固定测试场景集合上配对比较;按场景进行重采样时,应保留整段时序结构,不把高度相关的视频帧当成独立样本。

初步试验可以先用少量种子筛查,正式结论需要与结果波动相适应的重复次数和置信区间。只挑最好种子或删除失败场景都不足以支撑可靠结论。Deep Reinforcement Learning at the Edge of the Statistical Precipice,NeurIPS 2021

冻结视觉主干、只训练小策略,也属于需要训练的方法。 可以强调训练范围小、复用已有主干或测试时不更新策略,但不应把整个方法称为 training-free。

16. 该读什么?按理解顺序读,不按年份追

16.1 第一轮:只选三份基础材料

  1. Sutton 与 Barto 的教材第二版。 先读第 1 章建立问题意识,再读第 3–6 章的 MDP、动态规划、Monte Carlo 和 TD;理解后再读第 13 章策略梯度。第 2 章老虎机有助于理解探索和一步决策。不要要求自己先通读全书才动手。出版社页面
  2. Spinning Up 的概念与策略优化教程。 用它连接符号、损失和代码,重点掌握策略、价值、回报以及策略梯度。它的概念说明仍有教学价值;旧代码环境不必逐项照搬。概念 · 策略优化
  3. Berkeley CS285 的课程材料。 推荐从模仿学习、策略梯度、Actor–Critic、Q-learning 开始,之后再看 offline RL 和 model-based RL。下面是可访问的 2023 年课程存档,不要求一定使用最新一期。课程与作业

16.2 第二轮:算法论文每篇只带一个问题

材料 阅读时必须回答的问题
DQN,2015 为什么 Q 学习需要经验回放和目标网络?
GAE,2015 年首稿 如何在价值预测与实际长程回报之间折中?
PPO,2017 为什么要限制用旧数据更新策略的幅度?
SAC,ICML 2018 连续动作、经验回放与熵目标如何结合?
Offline RL 教程,2020 为什么固定日志上的策略学习比普通监督学习困难?

初次实现离散控制器,不必同时复现这五篇。把 Q-learning 小实验理解清楚,再读 PPO,已经足以进入第一个项目。

16.3 第三轮:与你的视觉方向建立联系

优先精读 RL Meets VO。在纸上分别画出环境、观测、动作、奖励、训练数据、部署输入,重点检查哪些量来自视觉系统,哪些仅用于训练。

接着读 流式感知评测论文,用它重新审视“更快”的含义。关注结果在什么时候真正可用,而不是只看单次前向耗时。

如果你的相机可控,再读 Active Neural SLAMScan-RL。阅读时追问:动作改变的是内部计算还是外部视角?重建、定位、规划和策略分别负责什么?

准备做基础模型选帧时,把 2026 年前馈 VO 选帧稿加入相关工作核查。本文并未对 2026 年所有 RL 与视觉论文进行穷尽综述。

16.4 实现时查的资料

17. 一个四阶段学习计划

下面可以按每阶段约一周安排,也可以按自己的节奏延长。通过标准比日历重要。

阶段 学习内容 亲手完成的产物 通过标准
1:建立决策直觉 第 1–4、13 节 跑通并修改玩具实验,手算回报和一次 TD 更新 能解释为何延迟收益改变第一步动作
2:理解训练机制 第 5–8 节与一份 PPO 实现 在小型标准环境中训练策略,记录回报与失败 能说清 Actor、Critic、优势和采样数据的关系
3:连接视觉程序 第 9–12、14 节前半 一个能重置、回放、切换动作的环境,以及规则基线 相同动作可复现,不同动作确实影响后续状态
4:验证研究假设 第 14–15 节 一个明确场景划分下的小型比较实验 能判断收益来自长期决策,还是信息、预算或主干差异

第一阶段最不该省略。很多“PPO 不收敛”的问题,实际上来自奖励与目标不一致、终止处理错误,或动作根本没有影响环境。

第二阶段使用小环境,是为了把算法调试与昂贵视觉系统调试分开。第三阶段如果环境速度过慢,先解决反馈和回放成本,不要直接扩大训练规模。

到第四阶段,你的成果可以是“在这个设定下,阈值规则已经足够”。这也是有价值且可以支撑下一步选题的结论。

18. 复习、自测与术语速查

18.1 先不看答案,回答八个问题

  1. 当前图像一样,剩余预算不同,为什么策略可能需要不同动作?
  2. 一个动作立即奖励为负,它的 Q 值能不能为正?
  3. 为什么一个固定录制视频也可以构成 RL 环境?
  4. 为什么在同一视频上重复回放并重新计算动作后果,不一定是 offline RL?
  5. 训练奖励使用未来真值,与部署时偷看未来帧有什么区别?
  6. 为什么增加每帧预测准确率,可能降低流式服务质量?
  7. 策略累计奖励上涨、但跟踪覆盖下降,你首先检查什么?
  8. 如果相同预算下监督决策器与 PPO 表现一样,你能得到什么结论?

18.2 参考答案

  1. 预算决定以后还有哪些合法选择及机会,因此是决策相关状态。忽略它会丢失影响后果的信息。
  2. 可以。后续收益折扣后足够大,就能补偿立即损失。
  3. 动作可改变重建器记忆、预算或队列,即使原始图像顺序不变,后续预测仍然不同。
  4. 如果新策略能在可执行环境中产生新的转移,就是持续采集交互;offline RL 指训练只依赖固定的既有转移记录。
  5. 前者是事后评价动作后果;后者改变了当时决策可以使用的信息。训练反馈、Actor 输入和部署接口要分开检查。
  6. 更昂贵的推理可能使结果过时、排队增加或错过截止期。准确率必须与实际输出时间共同评价。
  7. 检查策略是否通过删除困难查询、减少输出或拒绝困难片段取巧,且评测是否惩罚这些缺失。
  8. 当前实验尚未证明多步 RL 训练的额外价值。可能需要重新检查长程机制,也可能直接选择更简单的方法。

18.3 术语速查

英文 中文 一句话记忆
Episode 回合、一次完整任务 从重置到真正结束
Rollout 采样轨迹或轨迹片段 用策略实际运行环境得到的记录
Policy 策略 决定做什么
Reward 奖励 一次动作后的分数
Return 回报 以后分数的累计
Value 价值 对回报的期望预测
Advantage 优势 某动作相对当前策略平均选择的价值差
Credit assignment 信用分配 后果该归功或归咎于哪些动作
Exploration 探索 尝试后果尚不确定的选择
Bootstrap 自举 用价值估计帮助更新价值估计
Replay buffer 经验回放缓冲区 训练用转移记录,区别于关键帧缓存
Behavior cloning 行为克隆 用监督学习模仿示范动作
Contextual bandit 上下文老虎机 根据当前信息优化这一次选择的收益
POMDP 部分可观测决策过程 决策者看不见完整状态
MPC 模型预测控制 每次向前规划一段,只执行开头再重规划
Reward hacking 奖励取巧 分数提高,但真实目标没有改善

18.4 准备开始项目时,写下这六句话

  1. 我要控制的动作是: ______。
  2. 这个动作通过 ______ 改变未来,而不只是影响当前一次预测。
  3. 策略当时实际能看到: ______。
  4. 训练奖励来自 ______;独立评价指标是 ______。
  5. 在相同预算、信息与主干下,我要超过的简单基线是: ______。
  6. 如果实验出现 ______,我就认为当前 RL 假设没有得到支持。

如果这六句已经写清楚,你就具备了把强化学习用于视觉问题的正确起点。接下来最值得做的,是实现一个小而真实的决策环境,观察一次选择怎样改变后面的重建或感知结果。