Attention 2015-今

现在attention的热度已经过去了,基本上所有的attention都是transformer的kqv形式的,甚至只要说道attention,默认就是transformer的attention。
为避免遗忘历史,我这里做一个小总结。繁杂的att我就不去了解了,只了解下经典的。

以下以\(h_i\)代表想要att聚合的各个向量,以\(s_0\)表示当前向量。

鼻祖Bahdanau Attention

2015,Bengio组。文章https://arxiv.org/pdf/1409.0473.pdf

att的获得

\(\alpha_i=func(h_i,s_0)\).
\(alpha\)是att权重(加权平均的weight系数)。

att的使用

即加权平均:

\[h_{before} \]

\[h_{after}=\sum_{i\in N} \alpha_i*h_i \]

其中\(N\)\(h\)的(可能包括自己的)邻域。

func的形式

也就是att系数的获得方式。

形式1

\[\alpha =v^Ttanh(W_ih_i + Us_0) \]

其中\(V\)\(W\)都是可学习参数.
可参考实现:https://github.com/mhauskn/pytorch_attention/blob/main/model.py

形式2

\(\alpha=V*tanh(W*(h_i||s_0))\)

然后对各个\(\alpha\) softamx即可。

出自视频:https://www.bilibili.com/video/BV1YA411G7Ep
可参考实现:https://github.com/lukysummer/Bahdanau-Attention-in-Pytorch/blob/master/Attention.py

形式3

\(k=W_K*h_i\)
\(q=W_Q*s_0\)
\(\alpha=k^Tq\)
然后softmax。
其中\(W_K\), \(W_Q\)是学习参数。

注:此Transformer模式本质上与此方式一致。
不同的是,Transformer直接把\(h_i\)\(s_0\)直接变成了一个训练参数\(V\),组成了\(K,Q,V\)三者。

参考

参考视频:https://www.bilibili.com/video/BV1YA411G7Ep

posted @ 2023-12-11 14:45  ZephyrYin  阅读(43)  评论(0)    收藏  举报