注意力机制简介

之前的回归和影像分类都是有着简单的假设,且输入是一个向量。如果输入是一排向量且长度可能会改变,应该怎么处理?

首先引入一个概念:独热编码(One-Hot Encoding)是一种将分类变量转换为二进制向量的编码方法。其核心思想是将每个分类变量用一个独特的二进制向量来表示,其中只有一个位置为1,其余位置为0。这样可以使分类变量在机器学习算法中更易于处理。

文字处理,就是输入一串多个词编码的向量。声音讯号、图(Graph)也都是一堆向量。

Sequence Labeling任务

该类任务output与input的数量相同,一个简单的思路是使用全连接层依次处理,但这对于句子理解等任务是不适用的,比如“I saw a saw(锯子)”,模型无法区别不同词性,所以需要考虑上下文信息。

自注意的代表作是Google的论文“attention is all you need”。self-attention就是变形金刚的火种源。

如下图所示,每个b都考虑了整个input的sequence才输出得到的。那么是怎么考虑的呢?

以a1为例,首先是找到Sequence中的其余元素与之的相关联程度α,它的计算方法有很多,常用的方法有Dot-product。接下来就要根据α的值大学区抽取Sequence的重要信息。

依次进行计算关联性。将α计算attention score,其计算是使用dot-product结果。谁的α越大,谁的k越大,说明对应的v就会对结果有更大的影响。

根据以上思路,使用矩阵的方式表示运算:

其中,只有W^qW^kW^v是需要从训练数据中学习的。

Multi-head Self-attention(多头注意力机制)

为什么要引入多头的概念?因为向量之间可能有多种相关性,一个head难以理解。下面以两个head为例,对多头注意力机制进行演示。

在分别得到b^{i,1}b^{i,2}之后,拼接起来乘上一个W,送往下一层。

但到目前为止,该方法还缺少一个位置信息,比如语义理解中,词序没有被考虑。所以又引入了一个Positional Encoding的方法,对每个位置设定一个专属的位置向量e^i,具体的编码方式是多种多样的。

Self-attention在图像中的应用

上图可以看做5×10个长度为3的向量,这样就可以应用自注意力机制。卷积的感受野是认为设定的(马看见什么,是run决定的!)。但self-attention不同的地方在于,图片中哪个像素与中心像素有关,是网络学出来的。这里宏毅老师推荐一篇文章“On the Relationship between Self-Attention and Convolutional Layers”。Self-attention是更有弹性的CNN,在训练资料多的时候可能表现较好。

RNN(Recurrent Neural Network,循环神经网络),是一种用于处理序列数据的人工神经网络。与传统的前馈神经网络(如全连接网络和卷积神经网络)不同,RNN具有循环的结构,能够保留序列数据的上下文信息。这使得RNN特别适合处理时间序列数据或序列数据,如文本、语音、视频等。下图对比了RNN和Self-Attention的机制,RNN是没有办法平行处理所有的数据。如果想深入了解两者的关联,可以读一篇文章“Transformers are RNNs”。

Self-Attention在Graph上的应用

图包含Node信息和Edge信息,之前讲到了Self-Attention会自动学出向量之间的关联性,现在可以只考虑邻接节点的相关性。

文章“Long Range Arena: A Benchmark for EfficientTransformers”介绍了Self-Attention的多种变形。其最大的缺点是参数多,计算代价很高。如何设计又快又好的Self-Attention,是值得考虑的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值