最近几年来,Transformer机器学习模型已经成为深度学习和深度神经网络技术进展的主要亮点之一它主要用于自然语言处理中的高级应用谷歌正在用它来增强其搜索引擎结果OpenAI用Transformer创造了著名的GPT—2和GPT—3模型

自2017年首次亮相以来,Transformer架构已经发展并扩展到许多不同的变体,从语言任务到其他领域它们已被用于时间序列预测它们是DeepMind的蛋白质结构预测模型AlphaFold背后的关键创新OpenAI的源代码生成模型Codex也是基于Transformer的Transformer最近进入了计算机视觉领域,它们正在许多复杂的任务中慢慢取代卷积神经网络

研究人员仍在探索改进Transformer的方法,并将其用于新的应用这里有一个简短的解释,为什么变压器是令人兴奋的,以及他们如何工作

1.用神经网络处理序列数据。

传统的前馈神经网络不是设计来跟踪序列数据并将每个输入映射到输出的它适用于图像分类等任务,但不适用于文本等序列数据用于文本处理的机器学习模型不仅要处理每个单词,还要考虑单词是如何按顺序排列的,以及它们之间的关系而且一个单词的意思可能会伴随着句子中出现在它前后的其他单词而改变

在Transformer出现之前,递归神经网络是自然语言处理的首选解决方案当提供单词序列时,递归神经网络将处理第一个单词,并将结果反馈给处理下一个单词的层这使得它能够跟踪整个句子,而不是单独处理每个单词

递归神经网络的缺点限制了它们的实用性首先,它们的处理速度非常慢因为他们必须按顺序处理数据,所以在训练和推理中无法使用并行计算硬件和图形处理单元其次,他们不能处理长序列的文本伴随着递归神经网络深入到文本摘录中,句子中前几个词的作用逐渐减弱当两个相连的单词在文本中相距很远时,这称为渐变消失问题就出现了第三,它们只捕捉一个单词和它前面的单词之间的关系实际上,单词的意思取决于它们前面和后面的单词

长时和短时记忆网络是递归神经网络的继承者,可以在一定程度上解决梯度消失的问题,可以处理更大的文本序列可是,长时和短时记忆的训练速度甚至比递归神经网络还要慢,并行计算仍然不能得到充分利用它们仍然依赖于文本序列的串行处理

2017年发表的一篇题为注意力就是一切的论文介绍了Transformer,指出Transformer做出了两个关键贡献:首先,他们使并行处理整个序列成为可能,从而将序列深度学习模型的速度和容量扩展到了前所未有的速度其次,他们引入了注意机制,它可以跟踪正向和反向超长文本序列中单词之间的关系

在讨论变压器模型的工作原理之前,有必要先讨论一下序列神经网络解决问题的类型。

向量到序列该模型采用单个输入并生成数据序列到矢量将模型的系列数据作为输入,如产品评论或社交媒体帖子,并输出单个值,如情感得分序列到序列该模型将一个序列作为输入,例如一个英语句子,并输出另一个序列,例如该句子的法语翻译

尽管存在差异,所有这些类型的模型都有一个共同点mdashmdash他们学会表达自己神经网络的工作是将一种类型的数据转换成另一种在训练期间,神经网络的隐藏层以最能代表输入数据类型特征的方式调整其参数,并将其映射到输出最初的Transformer被设计为用于机器翻译的序列到序列模型它由一个编码器模块组成,该模块将来自源语言的输入字符串压缩成一个向量,该向量表示单词及其相互之间的关系解码器将编码向量转换成目标语言的文本串

2.标记和嵌入

输入的文本必须经过处理并转换成统一的格式才能输入到Transformer中一,正文通过Marker ,它被分解成可以单独处理的字符块标记算法可以取决于应用大多数情况下,每个单词和标点符号大致算一个标记一些后缀和前缀算作单独的标签标记器生成一个表示输入文本的标记ID的数字列表

然后把标签转换成嵌入单词单词嵌入是一个向量,试图捕捉多维空间中单词的价值比如Cat 和狗这两个词在某些维度上可能有相似的价值,因为它们都用在关于动物和宠物的句子中可是,在区分猫和狗的其他维度上,Cat LdquoRdquo更接近狮子同样,巴黎和伦敦可能彼此距离更近,因为都是城市但是,伦敦更接近Rdquo英格兰,,巴黎更接近法国Rdquo,这是因为在一个国家的分化维度上单词嵌入通常有数百个维度

单词嵌入是通过嵌入模型创建的,嵌入模型是与Transformer分开训练的有几种用于语言任务的预训练嵌入式模型

3.注意图层

句子一旦转换成单词嵌入列表,就会被输入到Transformer的编码器模块中与递归神经网络以及长期和短期记忆模型不同,Transformer不会一次接收一个输入它可以接收整个句子的嵌入值,并并行处理它们这使得Transformer的计算效率比他们的前辈更高,也使他们能够以正向和反向序列检查文本的场景

为了保持句子中单词的顺序,Transformer应用代码,这基本上意味着它修改每个嵌入向量的值来指示它在文本中的位置。

接下来,输入被传递到第一个编码器模块,该模块通过注意层治疗它注意力层试图捕捉句子中单词之间的关系例如,考虑一只大黑猫碰掉了一个瓶子,然后穿过了马路这句话这里,模型必须设置it用cat关联,its用瓶子关联因此,它应该建立其他协会,如big和cat或者crossed和cat否则,关注层接收表示单个单词值的单词嵌入列表,并生成表示单个单词及其关系的向量列表注意,该层包含多个注意事项,每个注意事项可以捕捉单词之间不同类型的关系

注意层的输出被馈送到前馈神经网络,前馈神经网络将其转换成向量表示,并将其发送到下一个注意层Transformers包含几个关注块和前馈层,以逐渐捕捉更复杂的关系

解码器的任务是将编码器的注意力向量转换成输出数据在训练阶段,解码器可以访问编码器生成的注意力向量和预期结果

解码器使用相同的标记,单词嵌入和注意力机制来处理预期结果并创建注意力向量然后,它在编码器模块中传递注意向量和注意层,从而建立输入和输出值之间的关系在翻译应用程序中,这是源语言和目标语言中的单词相互映射的部分和编码器模块一样,解码器的注意力向量是通过前馈层传递的然后结果映射到一个非常大的向量池,也就是目标数据的大小

火车变压器

在训练期间,Transformer提供了一个非常大的成对示例语料库编码器模块接收并处理完整的输入字符串可是,解码器接收输出字符串的屏蔽版本,并试图在编码的注意力向量和预期结果之间建立映射编码器试图预测下一个单词,并根据其输出和预期结果之间的差异来纠正它这种反馈使转换器能够修改编码器和解码器的参数,并逐渐创建输入和输出语言之间的正确映射

Transformer拥有的训练数据和参数越多,它在长文本序列中保持连贯性和一致性的能力就越强。

5.5的变化。变压器

在上面研究的机器翻译例子中,Transformer的编码器模块学习英语单词和句子之间的关系,而解码器学习英语和法语之间的映射。

但并非所有变压器应用都需要编码器和解码器模块例如,GPT家族的大型语言模型使用一堆解码器模块来生成文本BERT是谷歌研究人员开发的Transformer模型的另一种变体,但它只使用了编码器模块

其中一些架构的优势在于,它们可以通过自我监督学习或无监督方法来训练例如,通过获取大量未标记的语料库,BERT可以阻止其中的一些,并尝试预测大部分训练的缺失部分然后,它根据与实际数据的接近程度或距离来调整其参数通过重复这个过程,伯特抓住了不同场景中不同单词之间的关系在这个预训练阶段之后,BERT可以通过对几个标记的例子进行训练来微调下游任务,如问答,文本摘要或情感分析使用无监督和自我监督的预训练可以减少注释训练数据所需的工作量

还有更多关于Transformer和他们正在开发的新应用程序的内容,这超出了本文的范围研究人员仍在寻找从Transformer获得更多帮助的方法

《变形金刚》也引发了关于语言理解和通用人工智能的讨论显然,Transformer和其他神经网络一样,是一个统计模型,它可以用巧妙复杂的方式捕捉数据中的规律性虽然他们不像人类一样了解语言,但它的发展仍然令人兴奋,可以提供更多的新事物