Transformers是一种近年来在NLP领域表现非常出色的模型,现已成为许多NLP任务的标配。它不仅刷新了多项NLP任务的最佳成果,而且在机器翻译、文本生成、文本分类、情感分析等方面都取得了令人惊讶的成果。其中,ChatGPT作为近期比较火的应用之一,在智能客服、主题聊天、在线教育等场景中获得了广泛应用。 本文将介绍Transformers的基本结构,详细介绍其基本原理,希望帮助大家对它们有比较直观的认识。 Attention三要素:Query,Key和Value在Attention机制中,query、key和value都是向量,分别代表着查询、键和值。简单来说,可以将它们看做是一组映射关系:给定一个query向量,通过于key向量进行匹配,得到一个或多个相关的value向量。
如下图所示: 具体来说,query向量()代表当前Token的隐藏状态,Key向量()代表历史Token的隐藏状态,Value向量()代表各个Token的输出向量,其计算公式如下图所示: 其中,和表示第个 通常可以通过距离相似度来计算:
Scaled Dot Product Attention我们来拆解下使用Gaussian kernel来计算的方法: 由于对所有的都是相同的,我们可以通过Normalization将转换为单位向量,即,从而使。此外,对应的是网络中经过了各种Normalization操作(如Batch Normalization和Layer Normalization等,关于Normalization的方法可以参考之前的文章《DNN中那些绕不过的Norm》)之后的结果,因此可以认为是一个常数。所以,将公式中的常数项,即和,删除并不影响最终的相对结果: 虽然经过Normalization之后的和是均值和方差的向量,但是均值为,方差为(向量维数)的向量。为了保证无论向量维数如何,方差仍然保持为,使用对其进行缩放,得到Scaled Dot production attention: 最终对其进行归一化得到: 如下图所示: 关于Attention的更多内容可以参考之前的文章《浅入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函数的 对于第个位置的token(对应的embedding向量维),其对应的维position embedding向量如下: 最后,将作为token的最终embedding向量。 从上图可以看到,由于“sin”曲线在一定周期内重复,不同位置的position embedding向量不同,从而实现对位置的编码。 需要说明的是在NLP中,上述方法只是固定位置编码的
这些方法在不同的情况下都有不同的应用,我们可以根据具体的任务和数据集来灵活选用。 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。但在常规数据集上,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 16x16 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. https://. 2019. [8] Tamura, Y. Multi-head attention mechanism: “queries”, “keys”, and “values,” over and over again. https://. 2021. |
|
来自: taotao_2016 > 《it》