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.
1、本站资源针对会员完全免费,站点中所有资源大部分为投稿作者付费教程,切勿轻易添加教程上除本站信息外的任何联系方式,谨防被割,如有疑问请随时联系客服。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。