Attention跟一维卷积有什么区别?


来自 | 知乎  

链接 | https://www.zhihu.com/question/288081659

本文仅供交流,如有侵权,请联系删除

   问题

Attention跟一维卷积的区别是啥?

权重形成机制不同?

   高质量回答

莫驚蟄

前咨询民工,现苦逼博士

https://www.zhihu.com/question/288081659/answer/1222002868

拿NLP中序列建模来做个例子,有几点区别:

1、Context Window:因为一维卷积需要指定窗口的大小,比如图中,就是每次只看3个词。而且attention,这里是self-attention,他的context window是“无限”的,无限是指序列的长度是多少,窗口的大小就是多少,因为attention权重的计算涉及到一个序列里面所有的词。如上图所示,句子有5个词,窗口大小就是5. 所以一维卷积是“local”的,attention可以说是“global”的。

2、Time Complexity:这个其实也是刚才的窗口大小不同导致的,因为一维卷积只看k个词(窗口大小为k),如果序列长度为n,那么复杂度就是kn。而attention因为在每个位置,每个词的权重计算都要考虑到所有的词,所以复杂度就是n^2.

3、Dynamic Weights: 和二维卷积一样,一维卷积的权重是不变的,就是不会随着在序列位置中的变化而改变,但是attention不一样,每个位置的权重都是不一样的,attention scores(weights)是由dot-product计算出来的,具体地, softmax(qk/d^1/2).

但由于self-attention复杂度高,对长序列建模效果没有那么好,所以对一维卷积有很多改进的工作,比如上图的Pay Less Attention with Lightweight and Dynamic Convolutions (ICLR19, FAIR)1。还有比较新的Time-aware Large Kernel Convolutions (TaLK)2。

在NMT,LM等任务上的效果都能和attention-based模型扳手腕。基本上就从动态权重和动态窗口大小上面对一维卷积进行改进,而另一方面又有一些对attention的改进工作,比如将无限窗口限制一下,或者层次化一下,有太多文章这里就不赘述了。

Ref:

https://arxiv.org/abs/1901.10430

https://arxiv.org/abs/2002.03184

树朋

数据分析,自然语言处理

https://www.zhihu.com/question/288081659/answer/1227308595

如果只是从运算的算子看,也就是矩阵乘法的角度看,区别不是很大。所以,可以继承同一个实现。

attention输入的key vector 和query matrix,得到的是attention score logits。一维卷积也是类似的。卷积操作在自然语言处理中也不算少见,比如TextCNN,还有ELMO中的char CNN,你看过代码的话,其实也就是卷积核乘以输入,然后卷积核高度为1,宽度为对应的嵌入长度。

如果说区别,那么第一就是输入的特征的意义是什么?第二就是输出的特征的意义是什么,以及应该如何处理这种特征。

比如key dot product query得到的是相似度,attention list要归一化,甚至在transformer中要先对attention score的方差归一化,然后再做softmax归一化。一维卷积得到的是信息提取,所以对于卷积得到的feature map,为了更有效的提取信息,需要池化。

当然,这里只是说了最简单的点积attention。你看过Luong论文的话会了解到更加丰富的attention实现。

总的来说,你有这样的疑问,应该也是了解了一些的,在知其然的基础上多研究一下所以然会帮助更大,特别是未来某一天你需要定制自己的attention或者有效特征提取器的时候。

你认为呢?


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值