Transformers是一种近年来在NLP领域表现非常出色的模型,现已成为许多NLP任务的标配。它不仅刷新了多项NLP任务的最佳成果,而且在机器翻译、文本生成、文本分类、情感分析等方面都取得了令人惊讶的成果。其中,ChatGPT作为近期比较火的应用之一,在智能客服、主题聊天、在线教育等场景中获得了广泛应用。

本文将介绍Transformers的基本结构,详细介绍其基本原理,希望帮助大家对它们有比较直观的认识。

Attention三要素:Query,Key和Value

在Attention机制中,query、key和value都是向量,分别代表着查询、键和值。简单来说,可以将它们看做是一组映射关系:给定一个query向量,通过于key向量进行匹配,得到一个或多个相关的value向量。

如下图所示:

具体来说,query向量()代表当前Token的隐藏状态,Key向量()代表历史Token的隐藏状态,Value向量()代表各个Token的输出向量,其计算公式如下图所示:

其中,和表示第个(key, value)向量对,权重

通常可以通过距离相似度来计算:

Scaled Dot Product Attention

我们来拆解下使用Gaussian kernel来计算的方法:

由于对所有的都是相同的,我们可以通过Normalization将转换为单位向量,即,从而使。此外resnet结构,对应的是网络中经过了各种Normalization操作(如Batch Normalization和Layer Normalization等,关于Normalization的方法可以参考之前的文章)之后的结果,因此可以认为是一个常数。所以,将公式中的常数项,即和,删除并不影响最终的相对结果:

虽然经过Normalization之后的和是均值和方差的向量,但是均值为,方差为(向量维数)的向量。为了保证无论向量维数如何,方差仍然保持为,使用对其进行缩放,得到Scaled Dot production attention:

最终对其进行归一化得到:

如下图所示:

关于Attention的更多内容可以参考之前的文章和,这里就不赘述了。

Multi-head Attention

在实际应用中,针对一组相同的、和,我们希望模型通过Attention能尽可能多的挖掘不同的知识,例在一个序列中捕获各种范围的依赖关系,Multi-head attention就顺理成章的被提出了。

简单来说:通过线性变换将、和映射到多个表示子空间(representation subspaces)中。然后在每个表示子空间中采用Attention机制得到相应的结果。最后将所有输出拼接到一起,再经过一个线性变换得到最终结果。

下面简单给出Multi-head attention的公式化描述。令query向量为,key向量为,value向量为,则每个attention的输出可以表示为:

其中,,,是线性变换权重。

最后,Multi-head attention通过线性变换得到最终输出:

Self-attention

针对序列类型的输入数据(如文本、图片等),怎么使用Attention机制来处理它们呢?这就要提到self-attention了,具体如下:

假设输入token序列为,对应的query,key和value分别为,和,则在计算第个token对应的attention向量时,self-attention会用分别与所有token的和进行计算得到个输出值,然后将它们相加得到token的最终输出,如下图所示:

从图中可以看到,self-attention机制通过对所有value向量的加权求和,能使每个query向量能够获得与其相关联的所有token的信息,其中key向量起到分配权重的作用。通过这种分配权重的方法,模型可以精确地捕捉序列之间的依赖关系和相关性,从而提高了其对序列数据的处理能力。

Position Encoding

从self-attention的计算过程可以看到,由于token和token之间是两两并行计算的,并没有保留token之间的顺序关系。对于输入token顺序很重要的任务,该如何让模型知道token之间的顺序关系呢?

Position encoding就是通过将token的位置信息进行编码之后附加到Token的embedding中,然后送给模型,从而保留token之间的顺序信息的。原始Transformers论文中给出了一种比较简单的基于cos和sin函数的Sinusoidal Position Encoding方法:

对于第个位置的token(对应的embedding向量维),其对应的维position embedding向量如下:

最后,将作为token的最终embedding向量。

从上图可以看到,由于“sin”曲线在一定周期内重复,不同位置的position embedding向量不同,从而实现对位置的编码。

需要说明的是在NLP中,上述方法只是固定位置编码的Sinusoidal Position Encoding的一种实现,还有其他的方法,大致分为两类:

这些方法在不同的情况下都有不同的应用,我们可以根据具体的任务和数据集来灵活选用。

Transformers Architecture

现在让我们来具体看下Transformers框架。标准的Transformers是Encoder-Decoder框架的一种,由若干个Encoder和Decoder层构成,如下图所示:

从框架图来看,Transform主要包含如下三大部分:

至此,我们已经基本了解了Transformers结构了,下面就来看下Transformers在CV领域是怎么应用的。

Vision Transformers (ViT)

在NLP领域大杀四方之后,2019年研究者们开始尝试将Transformers应用到CV领域,看能否替代CNN。最终在2021年,研究者们证明了Transformers具有比CNN更好的可扩展性:在更大的数据集上训练更大的模型时,Transformers要明显ResNets。但在常规数据集上resnet结构,CNN的地位还是无法撼动的。不过通过在超大规模数据集上(论文中是JFT-300M:1.8万的类别,3亿的样本量)预训练之后的ViT模型,在下游任务中进行fine-tune,能够得到比ResNet更好的效果:

ViT的结果如下图所示:

从上图可以看出,ViT包含如下几部分:

最终,ViT将输入图片表示为一个特征向量。我们可以使用这个特征向量,进行后续任务,如图片分类等。

总结

Transformers框架自提出开始迅速在NLP各领域得到广泛应用,并取得了惊人的效果。此外也逐步在CV领域站稳脚跟。本文对Transforms框架做了详细的拆解,包括Scaled dot product、Multi-head attention、Self-attention和Position embedding等。

Transformers给人的感受还是大力出奇迹,需要有足够多的数据量和足够强的算力才能让它发挥出强大的能力。在超大规模数据上与训练好Transformers模型之后,通过迁移学习将它应用于我们的求解问题上。

不过,对于传统特殊领域的常规规模任务,由于没有相应的与训练模型,可能还是要依靠传统的深度学习框架。

总之,Transformers是我们在机器学习路上绕不过点,加深对其理解有助于我们对后续大模型的深入研究。

参考文献

[1] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., … Polosukhin, I. (2017). Attention is all you need.Advances in neural information processing systems(pp.5998–6008).

[2] Dosovitskiy, A., Beyer, L., Kolesnikov, A., Weissenborn, D., Zhai, X., Unterthiner, T., … others. (2021). An image is worth 16×16 words: transformers for image recognition at scale.International Conference on Learning Representations.

[3] Kalchbrenner, N., Grefenstette, E., & Blunsom, P. (2014). A convolutional neural network for modelling sentences.arXiv preprint arXiv:1404.2188.

[4] Sutskever, I., Vinyals, O., & Le, Q.V. (2014). Sequence to sequence learning with neural networks.Advances in neural information processing systems(pp.3104–3112).

[5] Ba, J.L., Kiros, J.R., & Hinton, G.E. (2016). Layer normalization.arXiv preprint arXiv:1607.06450.

[6] Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., … Liu, P.J. (2020). Exploring the limits of transfer learning with a unified text-to-text transformer.Journal of Machine Learning Research,21, 1–67.

[7] Karim, R. Illustrated: Self-Attention. 2019.

[8] Tamura, Y. Multi-head attention mechanism: “queries”, “keys”, and “values,” over and over again. 2021.

发表回复

后才能评论

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源