Grounding
Grounding
给出三种 Grounding 的解决方案:
- 预先通过 MLLM 筛选数据
- 设计连续的奖励函数, 并通过 GRPO 强化对 bounding box 的感知
- 通过观察 LLM attention 层的数值, 把 attention 层映射到原图上, 来把失败的损失值忽略掉

1. data curation
分为 Instruction quality, Bounding box accuracy, Task difficulty 来评判数据质量
2. GRPO
使用如下奖励函数表示 Grounding 的准确度:
d=(Wx−2⋅Wx1+x2)2+(Hy−2⋅Hy1+y2)2,
Rp=⎩⎨⎧1.0+(1−dmaxd)2,(1−dmaxd)2,if {x1≤x≤x2,y1≤y≤y2otherwise
3. attention
将原本的注意力层的第 i,j 个权重记为 attn[i,j]
那么使用如下 binary 函数来判定损失是否有效:
f(attn,gtbbox,τ)={1,0,if Ppeak∧Pglobalotherwise
其中的两个 P:
Pglobal=1(HgtWgt1i=x1∑x2j=y1∑y2attn[i,j]>HW1i=0∑H−1j=0∑W−1attn[i,j]),
Pglobal 表示 bounding box 内的注意力权重平均是否高于全局平均, 如果是, 则有效地注意到了 bounding box 内的内容
Ppeak=1((i,j)∈[x1,x2]×[y1,y2]maxattn[i,j]>τ),
Ppeak 表示 bounding box 内是否有某一权重大于阈值 τ, 说明注意到峰值
最后使用过滤函数 f 进行 GRPO:
L(θ)=f(attn,gtbbox,τ)×Et[−πold(at∣st)πθ(at∣st)At+γ⋅KL[πold(⋅∣st),πθ(⋅∣st)]],
Memory
Memory
使用类似 RAG 的方法, 把历史互动 ci 用大模型生成一些相关的总结, 并把这些文字通过 encoder 生成一个向量 ei
计算 cosine similarity 判断哪个记忆与现在相关, 把这些记忆与现在记忆生成一个 link
之后对于 link 到的记忆进行更新
在 LLM Agents 行动时查询 Memory 来更好地理解任务
对于 GUI Agent, 既可以在一次任务过程中的每个决策时调用 A-MEM 的更新记忆 / 获取记忆功能; 同时在不同的任务之间也能长期记忆, 回忆起相似任务的行动细节

1. Node Construction
一条记忆表示为
mi={ci,ti,Ki,Gi,Xi,ei,Li}
其中 ci 是原始互动内容
Li 是与其他语义相似的记忆的链接
ParseError: KaTeX parse error: Can't use function '$' in math mode at position 44: …i||t_i||P_{s1})$̲$
$$e_i=f_{en…
2. Link Generation
语义 cosine similarity topk 相似的记为 Mnearn
Li=LLM(mn∣∣Mnearn∣∣Ps2)
3. Memory Evolution
对于 Mnearn 中的每个 mj∗, 让 LLM 决定是否对其进行 update neighbor 或者 strengthen (更新 neighbor 的内容, 或者加入新的 link)
4. Memory Retrieval
选择 cosine similarity topk 的记忆给 LLM Agents
Task decomposition
Task decomposition, (Memory)
类似 MoE, 先把用户要求输入给 Planner 产生粗粒度的子任务, 之后 Task Scheduler 把每个子任务分配给最优的 Decision Agent
对于每个 Decision Agent 循环进行细粒度地拆分并进行原子化操作, 让 Reviewer 根据环境评判任务完成度, 直到整个子任务完成才停止循环
同时记忆模块与 A-MEM 类似, 只不过区分长短期记忆

1. Planner
Tcg={s1,⋯,sk}=PL(q,LTtn,STtm)
PL 为 Planner, 通过用户询问 q, 长期记忆前 n 相关与短期记忆前 m 最近使用地记忆作为 prompt, 来产生 subtask
2. Task scheduler
D={(role1,rt1),⋯,(rolek,rtk)}=TS(Tcg,DAdesc,LTtn,STtm)
对于每个 Agent 给一个描述, 组成 DAdesc, 之后结合上一步, 输出每个 Agent rolei 和对应的子任务
3. Decision Agent Pool
(I,O,Tfg)=DArolek(q,rtk,Pt,J,LTtn,STtm)
Pt 是通过 visual backbone 识别环境 Et 得到 (对 PC 环境进行 OCR), J 为 Reviewer 对 Agent 的行为做出的判断
O 是输出的原子化操作, I 是对应的意图
之后每一步都更新 Tfg, 直到所有 Tfg 都完成, 这个 Agent 的子任务完成, task scheduler 分配进行下一个子任务
Task decomposition, (Grounding)
使用 Active Perception Module 来增强 Grounding 等与环境互动的部分

同时将任务拆分成三层: 最上层先将指令拆分, 中间层由 Progress Agent 管理子任务的进度, 最底层由使用 APM 增强的 MLLM Agent 完成任务, 并由另一个 MLLM Agent 进行评估

1. Active Perception Module (APM for Grounding)
-
Interactive element perception
使用 pywinauto API 来获取元素坐标与描述
-
Text perception
使用 MLLM-driven 的意图理解 Agent 和 OCR 来确定文本的范围
2. Hierarchical Multi Agent
1. Instrcuction level
使用一个 Manager Agent 将 instruction 分解成 subtasks
同时管理子任务之间的关系
一共四种, 完全独立, 与前面子任务有关, 给后面子任务提供信息, 以及两者都有
2. Subtask level
根据 decision agent 和 reflection agent 总结子任务的进度
3. Action level
decision agent 根据当前任务进度, 以及要求来行动
reflection agent 根据 decision agent 的行为意图以及结果判断是否成功
Task Decomposition
与 PC-Agent 类似
先用一个 Planner 进行基于 query 的任务拆分 (可以接受一个 video)
再使用一个 GUI Parser 把 PC element 解析出来
最后由 Actor 决定行动, 并由 Critic 进行评估反馈给 Actor

总结
上面三种方法都是先使用 Planner 将用户需求分解成粗粒度的子任务, 之后分配给多个 expert 来执行 (可由统一的 agent 分配并管理); 最后 expert 分成 actor 和 critic, 一个 agent 负责根据回报与当前状态产生行动, 另一个 agent 对于行动与环境变化产生回报
Task Decomposition
任务不在分割成一条链, 而是用有向无环图表示, 这样允许 task 并行处理, 同时可以使用 Graph-enhanced LLM 来当 Agent
其他部分与上述大框架基本一致
- 使用 DAG 比链式的子任务结构似乎只有并行运行有提升, 对于具体的任务分割没帮助
Dynamic Task Decomposition
同样先进行 Task Planning, 交给 Coordinator 进行任务分工, 每个 Worker Nodes 中的 Agent 根据独立上下文完成子任务
同时任务结果返回给 Task Channel, Coordinator 从中获取任务结果并总结发给 Planner


1. Replanning Mechanism
如果子任务全部成功, Planner 总结并结束总任务; 如果子任务失败, Planner 重新规划 subtasks
2. Optimized Workforce Learning (OWL)
同时对于 Planner, 可以进一步通过训练加强表现
先使用 GPT-4o-mini 作为底座, 应用 Workforce 进行整体运行 trajectory 的记录, 通过不同数据集的不同指标筛选高质量 trajectory, 进行 SFT
再使用 SFT 后的 LLM 生成 n 个不同的轨迹, 标记一条偏好的轨迹, 使用 DPO 学习这个偏好
Dynamic Task Decomposition
与其他静态方法对比, ADAPT 可以动态调整 plan; 同时 plan 之间不是简单的顺序完成, 而是允许条件判断


1. Planner
使用 LLM 作为 Planner, 生成粗粒度的子任务以及任务之间的逻辑运算符, 如子任务之间的关系是 AND 还是 OR
2. ADaPT
把 Planner 规划出的子任务交给 Executor 执行, 如果失败就进一步细分, 直到任务完成或达到最大深度

Others
Planning, MultiApp
这篇讲的是多应用的场景下, 可以先对每个应用手动写出有限状态机, 之后对每个 app 分解出对应的有限状态机 ϵj 和目标行为 Aj, 之后用 BFS 找出每个 ϵj 的最短路径解
之后用 LLM 把路径改写成自然语言的计划, 用 MLLM 执行计划

-
第一步 Application Modeling vis EFSM 是人工的, 是否可以换成 LLM 自动探索
-
对于复杂应用, 如包含搜索的应用, 有限状态机是否会过于复杂

