返回目录
公开知识笔记 · 不进入目录
交叉注意力与自注意力
公开知识笔记
交叉注意力与自注意力
一句话理解:自注意力让同一组token彼此交流;标准交叉注意力让一组token主动查询另一组token。A3Net的代码更接近“把两组token拼起来后做无mask自注意力”。
1. 共同的注意力公式
直觉上,是“我想找什么”,是“我有什么标签”,是“真正要取回的内容”。计算匹配程度,softmax把同一查询对应的分数变成权重。
2. 自注意力
若都来自同一组token :
这就是self-attention。无mask时,每个token都能查看同组的全部token。
3. 标准交叉注意力
假设有药物原子token 和副作用token 。若药物查询副作用:
此时药物只从副作用中读取信息。还可以反向再做一次,让副作用查询药物。两组输入在结构上保持分开。
4. 拼接后自注意力
另一种做法是先拼接:
再对做self-attention。这样注意力矩阵同时包含四块:
| 查询→键 | 药物原子 | 副作用 |
|---|---|---|
| 药物原子 | 药物内部交互 | 药物→副作用交互 |
| 副作用 | 副作用→药物交互 | 副作用内部交互 |
它确实包含跨组交互,但也包含组内交互,所以不等同于严格的双流cross-attention。
5. A3Net代码为何值得警惕
A3Net将一个PyG训练batch中所有药物的原子与994个副作用拼成二维token序列,并送入未设置mask的Transformer。于是训练batch包含10种药物时,不同药物的原子也能彼此注意;测试batch为1时,这种跨药物上下文消失。
这会带来两个问题:
- 同一药物的输出可能随同批其他药物变化;
- 训练与推理时可见上下文不同,形成分布差异。
若设计目标是“每种药物独立地与副作用交互”,应按药物分别构造序列,或使用attention mask隔离不同药物。
6. 为什么softmax不能在推导中随便省略
softmax不只是把数值缩放一下,它会把一行分数非线性归一化,改变相对权重。省略softmax后的矩阵展开可以帮助看见四个交互块,却不能当作与真实注意力严格等价的计算。
相关概念
- 注意力机制:更基础的直觉说明
- 图注意力网络GAT:只在图邻居中计算的注意力
- 特征聚合与多模态融合:注意力输出如何与图通路结合
相关论文
- A3Net精读笔记(A3Net)
被以下札记引用
2026-W35