谷歌在2017年发表了一篇论文《Attention Is All You Need》,论文中提出了transformer模型,其核心就是self-attention的架构,这一突破性成果不仅洗遍了NLP的任务,也在CV中取得了非常好的效果,有大道至简的感觉。本文通过一个通俗易懂的例子1来介绍self-attention。
(注:本文例子完全来在参考文章,包括文章的gif动图,感谢作者的文章)
介绍
接下来将通过一下几个步骤来介绍2:
- 预处理输入数据
- 初始化权重
- 计算key,query 和value
- 计算输入值的注意力得分
- 计算softmax层
- 注意力得分与value相乘
- 对6中结果加权求和,并得到第一个输出值
- 重复4-7,计算其余输入数据的输出值
预处理输入数据
本例中我们选择三个输入值,已经通过embedding处理,得到了三个词向量。
Input 1: [1, 0, 1, 0]
Input 2: [0, 2, 0, 2]
Input 3: [1, 1, 1, 1]
初始化权重
权重包括三个,分别是query的 W q W_q Wq,key的 W k W_k Wk以及value的 W v W_v W