HATT v3.1:针对 HATT v2.0 的改进
HATT v2.0 的局限
v2.0 的贡献
- 引入了 Coalition Aggregation:任务表示包含已加入联盟的成员信息。
- CandidateEdgeDecoder 让 logits 显式对应 agent-task 边。
- 相比 Legacy GAT 和 MAPPO 有显著提升。
v2.0 仍缺少什么?
- 静态任务上下文:任务表示只描述"当前联盟是什么样",没有显式建模"我加入后联盟会怎样变化"。
- 缺少能力匹配量化:没有显式计算联盟能力与任务需求之间的差距。
- 能力数值尺度不一致:不同能力维度的数值范围差异大,影响注意力学习。
- 噪声任务干扰:已完成/未发现的任务仍参与 decoder 计算。
HATT v2.0 的决策逻辑:
task_context_m = MLP([ task_h_m ‖ coalition_sum_m ‖ coalition_mean_m ‖ count_m ])
↓
score_{i,m} = Decoder(agent_context_i, task_context_m, edge_{i,m})
问题:task_context_m 是静态快照,没有回答 "agent i 加入任务 m 能带来多少边际改善"。
---
HATT v3.0 的尝试与问题
v3.0 引入的三个新机制:
- Pre/Post Coalition 边际推理:计算 agent 加入前后的联盟状态差异 $\Delta$。
- Capability Residuals:显式量化任务需求与联盟能力的 deficit/surplus 变化。
- Signed Interaction:区分正负成员交互,建模协作与竞争。
v3.0 的问题:residuals 和 signed interaction 是
硬编码加入网络的,训练初期就强制引入复杂特征,导致优化不稳定:
- v3.0a(仅 pre/post):成功率 93.8%,奖励 -0.91
- v3.0b(+ residuals):成功率 43.8%,奖励 -35.63 → 崩溃
- v3.0c(+ signed):成功率 78.1%,奖励 -12.70 → 不稳定
洞察:边际推理方向是对的,但复杂特征需要渐进式引入,不能一上来就强行加入。
---
HATT v3.1 的四个核心改进
| 改进 |
解决的问题 |
具体做法 |
| 1. 门控残差特征 |
v3.0b residuals 导致崩溃 |
$g_{\text{res}} = \text{sigmoid}(-4.0)$ 初始接近 0,训练稳定后再逐步打开 |
| 2. 门控符号交互 |
v3.0c signed interaction 不稳定 |
$g_{\text{signed}} = \text{sigmoid}(-4.0)$ 控制正负交互强度 |
| 3. 能力归一化 |
能力/需求数值尺度不一致 |
$\text{cap} / \text{capability\_scale}$,默认 scale=5.0 |
| 4. 可用任务掩码 |
已完成/未发现的噪声任务 |
仅对 req ≠ 0 的任务应用 residuals;用 available_actions 过滤 signed interaction |
效果:v3.1a 成功率 96.9%,奖励 +15.38;v3.1b 成功率 96.9%,奖励 +15.15。相比 v2.0 的奖励 +4.24,提升约 3.6 倍。
---
公式:边际推理 + 门控残差
1. Pre/Post Coalition 上下文
$$\text{base\_sum}_m = \sum_{n \in m} \text{other\_h}_n \cdot \mathbb{1}[n \text{ alive}]$$
$$\text{post\_sum}_m = \text{base\_sum}_m + \text{self\_h}_i$$
$$\text{base\_context}_m = \text{TaskContext}(\text{task\_h}_m, \text{base\_sum}_m, \text{base\_count}_m)$$
$$\text{post\_context}_m = \text{TaskContext}(\text{task\_h}_m, \text{post\_sum}_m, \text{post\_count}_m)$$
$$\Delta_m = \text{post\_context}_m - \text{base\_context}_m$$
2. 能力残差(Capability Residuals)
$$\text{base\_cap}_m = \frac{\sum_{n \in m} \text{cap}_n}{\text{capability\_scale}}, \quad \text{post\_cap}_m = \frac{\text{base\_cap}_m \cdot \text{capability\_scale} + \text{cap}_i}{\text{capability\_scale}}$$
$$\text{deficit\_delta}_m = \text{ReLU}(\text{req}_m - \text{base\_cap}_m) - \text{ReLU}(\text{req}_m - \text{post\_cap}_m)$$
$$\text{surplus\_delta}_m = \text{ReLU}(\text{post\_cap}_m - \text{req}_m) - \text{ReLU}(\text{base\_cap}_m - \text{req}_m)$$
$$\text{residuals}_m = [\text{deficit\_delta}_m \;\|\; \text{surplus\_delta}_m]$$
3. 门控机制
$$g_{\text{res}} = \text{sigmoid}(\text{residual\_gate}), \quad \text{residual\_gate 初始值} = -4.0$$
$$\text{residual\_context}_m = g_{\text{res}} \cdot \text{MLP}_{\text{res}}(\text{residuals}_m) \cdot \mathbb{1}[\text{task } m \text{ 有效}] \cdot \mathbb{1}[\text{residuals}_m \neq 0]$$
初始时 $g_{\text{res}} \approx 0.018$,网络几乎忽略 residuals;训练稳定后 gate 值上升,逐步引入边际能力信息。
---
公式:门控符号交互 + 最终解码
4. 符号交互(Signed Interaction)
$$\text{pos\_context}_m = \text{Attention}(\text{self}_h^{(+)} + \text{task}_h^{(+)}, \{\text{other\_h}_n^{(+)}\}_{n \in m})$$
$$\text{neg\_context}_m = \text{Attention}(\text{self}_h^{(-)} + \text{task}_h^{(-)}, \{\text{other\_h}_n^{(-)}\}_{n \notin m})$$
$$g_{\text{signed}} = \text{sigmoid}(\text{signed\_gate}), \quad \text{signed\_gate 初始值} = -4.0$$
$$\text{signed\_context}_m = g_{\text{signed}} \cdot \text{MLP}_{\text{signed}}([\text{pos\_context}_m \;\|\; \text{neg\_context}_m]) \cdot \mathbb{1}[m \text{ 已占用}] \cdot \mathbb{1}[m \text{ 可用}]$$
5. CandidateMarginalDecoder
$$\text{parts}_m = [\text{agent\_context}_i \;\|\; \text{base\_context}_m \;\|\; \Delta_m \;\|\; \text{edge}_{i,m} \;\|\; \text{residual\_context}_m \;\|\; \text{signed\_context}_m]$$
$$\text{score}_{i,m} = \text{MLP}_{\text{decoder}}(\text{parts}_m)$$
$$\text{logits}_i = [\text{score}_{i,1}, \dots, \text{score}_{i,M}]$$
6. 动作分布
$$\pi_i = \text{softmax}(\text{logits}_i)$$
---
实验结果:v2.0 → v3.0 → v3.1
来源:runs/20260628-0357_macf_hatt-v31-small-scale/eval_summary_best.csv(full_random,best checkpoint)
| 方法 |
success |
reward |
length |
关键机制 |
| HATT v2.0 |
96.9% |
+4.24 |
499 |
Coalition Aggregation + CandidateEdgeDecoder |
| HATT v3.0a |
96.9% |
+20.18 |
— |
v2.0 + Pre/Post Coalition 边际推理 |
| HATT v3.0b |
43.8% |
-35.63 |
— |
v3.0a + residuals(无门控)→ 崩溃 |
| HATT v3.0c |
78.1% |
-12.70 |
— |
v3.0b + signed interaction(无门控)→ 不稳定 |
| HATT v3.1a |
96.9% |
+15.38 |
505 |
v3.0a + Gated Residuals + Capability Scale |
| HATT v3.1b |
96.9% |
+15.15 |
509 |
v3.1a + Gated Signed Interaction |
关键结论:
- 边际推理是最大收益来源:v3.0a 奖励 +20.18,是 v2.0(+4.24)的 4.8 倍。
- 门控机制是稳定性关键:v3.0b/c 因硬编码复杂特征崩溃,v3.1 用 gate 恢复稳定。
- v3.1 的奖励(+15)略低于 v3.0a 峰值(+20),但稳定性更好,适合作为最终版本。
---
文字总结:v3.1 相对 v2.0 改进了什么?
- 从静态快照到边际推理:v2.0 的任务上下文只描述当前联盟;v3.1 显式计算"加入当前 agent 后"的能力变化,让决策基于边际改善。
- 显式能力匹配:通过 deficit/surplus residuals 量化联盟能力与任务需求的匹配度,解决 v2.0 中能力与需求关系隐式、难学习的问题。
- 数值尺度归一化:capability_scale=5.0 统一能力/需求数值范围,提升 attention 学习效率。
- 噪声过滤:可用任务掩码过滤无效任务,减少 decoder 噪声。
- 渐进式特征引入:门控机制让复杂特征在训练稳定后逐步生效,避免优化崩溃。
一句话:HATT v3.1 在保留 v2.0 边级解码优势的基础上,引入了边际推理和渐进式门控,把任务选择从"看当前状态"提升到"看加入后的改善",同时保持训练稳定。