【如果笔记对你有帮助,欢迎关注&点赞&收藏,收到正反馈会加快更新!谢谢支持!】
一、Attention Mask
- Attention Mask的作用:限定注意力的范围
- 纵坐标为query,横坐标为key,黄色部分表示每个query能看到哪几个key(即query要和哪些key算注意力权重)
二、常见掩码类型
1. 因果掩码(Causal Mask)
- 作用:生成当前 token 时,只能看到自己和之前的 token
- 图中,"is" 对应token,只能看到 "It"和"is",看不到后面的token
- 掩码值:一般情况,值为 0 表示可以“看见”(图中黑色部分),值为 -inf 表示“看不见”(图中白色部分),但不同的模型掩码值的设置可能不同
-
Block-wise Causal Mask 块级因果掩码
-
将序列划分为多个块,在每个块里面做因果掩码
-
适用任务:1. 长序列【限制attention关注区域,节省训练开销】2. 多模态任务【区别不同模态】
-
2. 前缀掩码(Prefix Mask)
- 前缀(条件信息)既能看到之前的token,也可看到后面的前缀 token
- 主体部分为因果掩码
三、Vision-Language任务中的掩码设计
以 Show-O中的Omni-Attention Mechanism为例 (https://arxiv.org/pdf/2408.12528)
- 多模态理解(Multimodal Understanding)
- 任务:根据图像,生成文本(图像token可以理解为前缀)
- 任务:根据图像,生成文本(图像token可以理解为前缀)
- 文生图(Text-to-Image Generation)
- 任务:根据文本,生成图像
- 图像的生成可以看到所有的token,因为同一张图的token之间,没有时间先后关系
- 文本部分用因果掩码,更符合文字的理解过程(一个一个看)
-
文本生成(Language Modeling)