self-attention

匿名 (未验证) 提交于 2019-12-03 00:11:01

RNN不容易被平行化,先计算得到b1,再计算得到b2,再b3,再b4
Self-attention输入和输出也和RNN一样都是sequence,每一个输出和Bi-RNN一样,都由所有的输入序列得到。但是不同之处在于输出是同时得到的,不需要再按照顺序得到。

每一个q和所有k做一次attention得到对应的值。
把值经过softmax:

得到α^与对应的v相乘,再累加得到b,可以看到b是把所有的输入值都利用到了。

要得到b2:只需要用q2与每一个k做乘积:

矩阵表示:

但是这个网络没有关于输入的位置信息,它不考虑哪一个和它更近,哪一个更远。所以在得到的ai还要加上一个代表位置信息的值ei

等同于是我把xi后面接一个pi,pi代表目前的xi处于哪个位置:

但是Wp是手动设置的:

对于Seq2seq我们是直接把里面的RNN部分给取代掉,都变成self-attention:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!