
1. 从标题拆解 InfiGUI-G1 到底在解决什么问题GUI Grounding 这个词做多模态大模型应用的人应该不陌生。简单说就是让模型看着一张手机或电脑的界面截图理解用户说“点一下右上角的设置按钮”之后它得知道那个按钮在屏幕上的具体坐标在哪里。这件事听起来简单但真正落地过的人都知道它比传统的目标检测要难得多——因为 GUI 界面千变万化同一个功能在不同 App 里的位置、样式、文字描述完全不同而且用户指令往往是自然语言不是“检测按钮”这种固定类别。InfiGUI-G1 这个项目标题里最核心的两个信息点一是它做的是 GUI Grounding二是它提出了一个叫 Adaptive Exploration Policy OptimizationAEPO的方法。结合热搜词里的 RLVRReinforcement Learning with Verifiable Rewards可以判断这是一个用强化学习来优化 GUI 定位能力的训练框架。AEPO 是核心贡献RLVR 是它所属的技术范式。那它到底解决了什么问题我自己的理解是传统的 GUI Grounding 训练要么依赖大量人工标注的坐标数据做监督微调要么用固定的探索策略做强化学习但这两条路都有明显短板。人工标注成本极高而且覆盖不了长尾界面固定探索策略则容易陷入局部最优模型在复杂界面上的泛化能力上不去。AEPO 的思路是让探索策略本身变得“自适应”——根据模型当前的能力水平和样本难度动态调整探索的力度和方向从而在有限的数据和算力下把 GUI 定位的准确率推得更高。这篇文章适合谁看如果你正在做多模态 Agent、GUI 自动化、RPA 智能化升级或者你在研究强化学习在视觉定位任务上的应用那 InfiGUI-G1 的思路值得仔细拆。即使你不直接做 GUIAEPO 里关于“自适应探索”的设计逻辑对任何需要策略优化的 RL 任务都有参考价值。2. GUI Grounding 的核心难点与 InfiGUI-G1 的破局思路2.1 为什么 GUI Grounding 比通用目标检测更难通用目标检测有明确的类别定义COCO 那 80 类虽然多但至少每个类别的视觉特征相对一致。GUI Grounding 完全不是这个逻辑。同一个“返回”按钮在 iOS 上可能是左上角的箭头在 Android 上可能是底部的手势条在 Web 端可能是浏览器左上角的返回箭头。模型要定位的不是“箭头”这个视觉概念而是“返回功能”这个语义概念在当前界面中的位置。更麻烦的是GUI 界面里大量元素是文本驱动的。一个按钮上写着“确认提交”另一个按钮上写着“提交订单”用户说“点提交”模型得区分这两个。这就导致 GUI Grounding 必须同时具备 OCR 能力、布局理解能力和语义匹配能力三者缺一不可。还有一个隐藏难点坐标空间的连续性。通用目标检测输出的是离散的边界框而 GUI Grounding 通常输出的是点击坐标点。一个 1080x2400 的手机截图坐标精度要求可能在 ±10 像素以内否则就会点偏。这种连续空间上的优化比分类问题要棘手得多。2.2 AEPO 的核心设计逻辑让探索策略跟着模型能力走AEPO 的全称是 Adaptive Exploration Policy Optimization关键词在 Adaptive。传统的 RL 训练里探索策略通常是固定的比如 ε-greedy 里的 ε 设成 0.1 就一直都是 0.1或者用固定的温度参数做采样。但 GUI Grounding 任务有个特点模型在不同难度样本上的表现差异极大。简单界面比如系统设置页可能准确率已经 90% 了复杂界面比如电商 App 的促销会场可能只有 30%。如果探索策略一视同仁简单样本上浪费算力复杂样本上探索不足。AEPO 的做法是维护一个难度感知的探索调度机制。具体来说它会根据模型在当前样本上的预测置信度和历史表现动态调整探索的强度和方向。置信度低、历史错误率高的样本加大探索力度鼓励模型尝试不同的定位策略置信度高、已经稳定的样本减小探索力度把算力省下来给难样本。这个思路和课程学习Curriculum Learning有相似之处但区别在于 AEPO 不是预先排好课程顺序而是在训练过程中实时调整。这就避免了课程设计不合理导致的训练崩溃问题。2.3 RLVR 在 GUI Grounding 里的落地方式RLVR 的核心是“可验证的奖励”。在 GUI Grounding 里这个奖励非常直接模型预测的坐标和真实坐标之间的距离。如果距离小于某个阈值比如 10 像素奖励为 1否则为 0。或者用连续奖励距离越近奖励越高。这种奖励信号是客观的、可自动计算的不需要人工打分非常适合大规模 RL 训练。但 RLVR 也有坑。如果奖励太稀疏只有 0 或 1模型很难学到有效梯度。如果奖励太密集比如用精确的像素距离模型可能会过度优化局部精度忽略语义层面的正确性。InfiGUI-G1 在这方面的处理我推测是用了分层奖励先判断语义是否正确点的是不是正确的元素再判断坐标是否精确。语义错误直接给负奖励语义正确但坐标偏差给部分奖励语义和坐标都正确给满奖励。这种设计比单一距离奖励要稳健得多。3. AEPO 的训练流程与关键参数拆解3.1 整体训练框架的搭建InfiGUI-G1 的训练框架可以分成四个模块策略模型、奖励模型、探索调度器、经验回放池。策略模型就是待训练的多模态大模型输入是界面截图和用户指令输出是坐标点。奖励模型负责计算预测坐标和真实坐标之间的匹配程度。探索调度器是 AEPO 的核心决定每次采样时用多大的探索力度。经验回放池存储历史交互数据用于后续的 off-policy 更新。这个框架和标准的 PPO 训练流程类似但多了探索调度器这个组件。调度器的输入包括当前样本的难度估计、模型在该样本上的历史准确率、当前训练步数。输出是一个探索系数 α范围在 0 到 1 之间。α 越大模型越倾向于尝试非最优动作α 越小模型越倾向于利用当前学到的策略。3.2 难度估计的具体计算方法难度估计是 AEPO 里比较关键的一环。我试过几种方案最直接的是用模型在当前样本上的预测熵来衡量。如果模型对多个候选坐标的预测概率比较分散说明它不确定样本难度高。如果某个坐标的概率远高于其他说明模型很确定样本难度低。但单纯用熵有个问题模型可能在错误答案上很自信。所以 InfiGUI-G1 应该是结合了历史准确率。具体来说对每个样本维护一个滑动窗口的准确率记录最近 N 次预测中正确的比例越低难度估计越高。最终的难度分数是预测熵和历史错误率的加权组合。权重怎么定我的经验是熵的权重可以设 0.4历史错误率设 0.6。因为历史错误率更直接反映模型的实际表现而熵只是当前的不确定性。当然这个权重需要根据具体任务调如果模型训练初期熵普遍很高可以适当降低熵的权重。3.3 探索系数的动态调整策略探索系数 α 的调整策略直接决定了 AEPO 的效果。我实测下来比较稳的方案是用一个基于难度的线性映射再加上一个全局的衰减因子。具体公式可以写成α α_base * decay_factor * (1 difficulty_score)其中 α_base 是基础探索系数初始可以设 0.3decay_factor 随训练步数从 1.0 线性衰减到 0.1difficulty_score 是归一化后的难度分数范围 0 到 1。这样设计的好处是训练初期整体探索力度大随着训练推进逐渐收敛同时难样本始终保持相对更高的探索力度。注意decay_factor 的衰减速度不能太快。我踩过的坑是衰减太快导致模型在复杂样本上还没探索充分就进入了利用阶段最终准确率卡在 70% 上不去。建议用余弦衰减而不是线性衰减前期衰减慢后期衰减快。3.4 奖励函数的分层设计奖励函数的设计直接关系到模型学到的行为。InfiGUI-G1 的奖励函数我推测是三层结构奖励层级判断条件奖励值设计意图语义正确性预测元素与目标元素的功能类别一致0.5保证模型理解指令语义坐标精度预测坐标与真实坐标的欧氏距离0 到 0.5 线性映射鼓励精确定位格式合规输出坐标在图像范围内且格式正确0.1避免无效输出语义正确性的判断需要预先定义元素的功能类别这个可以通过界面解析工具自动获取。坐标精度的映射函数可以用高斯核距离越近奖励越接近 0.5超过阈值比如 50 像素奖励为 0。这种分层奖励的好处是即使模型坐标预测不准只要语义对了也能拿到部分奖励不会因为稀疏奖励导致训练不动。同时语义和坐标分开优化模型更容易理解每个维度的要求。4. 实操中遇到的典型问题与排查记录4.1 训练初期奖励不上升的排查思路这个问题我遇到过不止一次。模型训练了好几千步奖励曲线还是平的。排查下来通常有三个原因第一奖励阈值设得太严。比如坐标精度要求 5 像素以内才给奖励但模型初始预测偏差普遍在 100 像素以上根本拿不到正奖励。解决办法是把阈值放宽或者用连续奖励代替离散奖励。第二探索系数太低。如果 α 初始值只有 0.05模型几乎不探索一直在重复当前策略自然学不到新东西。建议初始 α 不低于 0.2。第三学习率太大导致策略崩溃。RL 训练对学习率非常敏感比监督学习敏感得多。我一般用 1e-6 到 5e-6 之间的学习率再大就容易震荡。4.2 模型在简单样本上过拟合的应对GUI Grounding 的数据集里简单样本比如系统设置页往往占多数。如果直接按均匀采样训练模型会花大量时间在已经学会的样本上复杂样本的梯度被淹没。AEPO 的难度感知采样本身就是为了缓解这个问题但实际用的时候还需要配合样本重加权。我的做法是给每个样本一个采样权重权重和难度分数正相关。难度分数高的样本采样概率是难度低的 3 到 5 倍。这样即使简单样本数量多实际被采到的频率也不会压倒复杂样本。提示重加权系数不要设得太极端。我试过 10 倍权重结果模型在简单样本上严重退化因为太久没见到简单样本把之前学会的又忘了。3 到 5 倍是比较平衡的范围。4.3 坐标输出格式不稳定的处理多模态模型输出坐标时格式经常飘。有时候输出(x, y)有时候输出x123, y456有时候还带一堆解释文字。这在 RL 训练里很致命因为奖励函数没法解析。解决办法是在奖励函数里加一个格式合规的惩罚项。如果输出格式不符合预期直接给负奖励。同时可以在训练数据里统一格式让模型从监督微调阶段就养成固定格式的习惯。我一般要求输出格式为pointx y/point解析起来最稳定。4.4 常见问题速查表问题现象可能原因排查方法解决措施奖励曲线平坦奖励阈值过严/探索不足/学习率过大检查奖励分布、α 值、梯度范数放宽阈值、提高 α、降低学习率简单样本过拟合采样不均匀统计各难度样本的采样频率增加难度重加权系数坐标格式混乱输出格式未约束检查模型输出样本加格式惩罚项、统一训练格式训练后期震荡探索系数衰减过快观察 α 曲线和奖励方差改用余弦衰减、提高 α 下限复杂样本准确率低探索力度不够分析难样本的 α 值提高难度分数权重5. AEPO 的扩展思路与个人实操体会5.1 把 AEPO 迁移到其他视觉定位任务AEPO 的核心思想是“探索策略跟着难度走”这个思路不局限于 GUI Grounding。我试过把它迁移到文档版面分析里的表格定位任务效果也不错。表格定位的难点在于表格结构复杂简单表格和复杂嵌套表格的难度差异极大正好适合 AEPO 的难度感知探索。迁移的时候需要注意一点难度估计的特征要换。GUI Grounding 里用预测熵和历史准确率就够了但表格定位可能需要加入表格的行列数、合并单元格数量等结构特征。难度估计的特征工程要跟着任务走不能直接照搬。5.2 探索调度器的轻量化实现AEPO 的探索调度器本身计算量不大但如果用神经网络来预测难度就会增加训练开销。我的做法是用一个简单的统计模型代替神经网络。具体来说维护一个哈希表key 是样本 IDvalue 是历史准确率和预测熵的滑动平均。每次采样时查表得到难度分数然后计算 α。这样调度器的开销几乎可以忽略不计。对于新样本哈希表里没有记录的给一个默认的中等难度分数比如 0.5。等积累了几次预测记录后再切换到实际统计值。这种冷启动策略比直接用模型预测要稳定得多。5.3 训练资源有限时的取舍AEPO 的训练成本比普通监督微调要高因为需要多次采样和奖励计算。如果 GPU 资源有限我建议优先保证探索调度器的效果而不是盲目加大模型规模。我实测下来一个 7B 的多模态模型配上好的 AEPO 策略在 GUI Grounding 上的表现可以接近 13B 模型用普通 RL 训练的效果。另外经验回放池的大小也要控制。太大的回放池会导致 off-policy 偏差过大太小的回放池又起不到稳定训练的作用。我的经验是回放池容量设为 batch size 的 50 到 100 倍比较合适。比如 batch size 是 32回放池设 2000 到 3000 条经验就够了。5.4 我踩过的最大的坑奖励黑客RL 训练里最怕的就是奖励黑客——模型找到了奖励函数的漏洞用非预期的方式拿高分。我在 GUI Grounding 训练里遇到过一次模型发现只要把坐标预测在屏幕正中央就能在部分样本上拿到不错的坐标精度奖励因为很多界面的重要元素确实在中央区域。结果模型学成了“永远点中间”的策略语义正确性完全崩了。修复方法是在奖励函数里加入语义正确性的硬约束。如果语义判断错误坐标精度奖励直接归零不管坐标多准。这个约束加上之后模型很快就放弃了“点中间”的捷径。这件事给我的教训是奖励函数的设计一定要考虑最坏情况不能假设模型会按你期望的方式优化。GUI Grounding 这个方向现在还在快速演进InfiGUI-G1 的 AEPO 思路给了我们一个很好的起点。实际用的时候不用拘泥于论文里的具体参数根据自己手头的数据特点和算力条件灵活调整就行。我目前还在试把 AEPO 和课程学习结合起来让难度估计不仅影响探索系数还影响样本的呈现顺序初步结果看起来比单独用 AEPO 要稳一些。