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

小白学视觉

共 2351字,需浏览 5分钟

 ·

2021-05-30 01:47

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

本文转自:视学算法

 问题

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或者有效特征提取器的时候。

下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报