【NLP Transformer】机器学习中自回归、自编码、Seq2Seq模型的区别

机器学习中自回归、自编码、Seq2Seq模型的区别

转译自Differences between Autoregressive, Autoencoding and Sequence-to-Sequence Models in Machine Learning
December 29, 2020 by Chris

Transformers改变了机器学习在自然语言处理中的应用。这类模型取代了LSTMs成为可以通过机器学习解决多种语言和文本相关任务的最先进(SOTA)方法。

然而,正如我们之前看到的,当范式转向不同 的方法时,一个突破会催生大量的新研究,从而产生大量的小改进。例如,我们已经在计算机视觉中的卷积神经网络(ConvNet/CNN)中看到了这一点:在20123年提出AlexNet之后,这个方法以前所未有的优势赢得了ImageNet比赛,接着各式各样的卷积框架被提出、测试和构建用于图像相关任务。

对于Transformers来说也是这样:在2017年该项工作被Vaswani等人提出后(Attention Is All You Need),改变了sequence-to-sequence模型的性质,许多不同的架构进而被提出。

但是,这些拓展研究的共同点是它们都用各式各样的术语来描述模型的各部分。当你阅读相关文献的时候,你会发现有一些模型被称为自回归(autoregressive),另一些被称为自编码(autoencoding)或者序列到序列(sequence-to-sequence / seq2seq)。作为初学者,这可能会令人困惑,因为当你尝试理解Transformers时,你会将所有东西和基础的Vaswani Transformer进行比较。

这正是本文讨论这三种编码器-解码器(encoder-decoder)架构的重叠差异的原因。我们首先会介绍编码器-解码器架构的基础知识,以提供最必要的背景知识。本文还简要介绍了经典或Vanilla(香草,计算机领域是普通的标准的、无扩展的意思)Transformer架构。接着,我们转向自回归模型,紧接着会介绍自编码模型,并且会看到当这两种模型组合时,我们就得到了Seq2Seq或者叫序列到序列模型。在总结之前,我们最后还会提到多模态(Multimodal)和基于检索(retrieval-based)的架构。

准备好了吗,让我们来看一下!😎

编码器-解码器架构介绍

本文中,我们将介绍自然语言处理中使用的三种(一般)模型架构的重叠和差异。为了做到这点,首先我们需要了解所谓的编码器-解码器架构,因为其他每一种架构类型都和这种架构的思维方式有关。

编码器-解码器架构由编码器和解码器构成。编码器能够接收输入,例如用德语写的句子(序列),然后将它们映射到高维表示(representation)上。编码器在这里学习输入的哪些部分是重要的,并将其传递给表示,而不太重要的方面被忽略。我们人类并不容易理解表示,因为没有涉及语义,而是学习其映射关系。

然而, 当我们在架构中增加一个解码器,我们可以将这个高维表示转化为另外一个序列。举个例子,这个序列可以是一个用英语写的句子。添加一个解码器和一个编码器允许我们构造一个能够将“一种形态”转换(即无语义损失的映射)为“另一种形态”的模型,比如德语转为英语。通过同时训练编码器和解码器,我们就建立了所谓的序列到序列模型。如果我们只训练其中一部分,我们就会得到一个自回归模型或者自编码模型。接下来会逐一介绍。

编码器-解码器架构

什么是Seq2Seq模型?

序列到序列(sequence-to-sequence)模型能够摄取特定类型的序列,并输出另一种类型的序列。通常来说,就如上图所示的模型架构。这类模型也叫做Seq2Seq模型。

有许多应用都是用到序列到序列学习。

序列到序列学习在许多任务中都取得了成功,比如机器翻译、语音识别、……和文本摘要等。

Gehring等人 (2017)

虽然这种框架不是严格必要的(例如,想想普通RNNs),但是大多数当代的Seq2Seq模型都是用了编码器-解码器架构。在这种架构下,编码器被训练成将转换输入序列为隐藏表示。通常,这是一个高维的隐藏状态向量

接下来,应用经过训练的解码器,该解码器能够将隐藏状态向量转换为期望的输出。

通过将编码器和解码器链接到一个机器学习任务中,比如使用德语输入和英文输出进行翻译,编码器和解码器的权重矩阵共同学习如何执行这项转导任务。

(Seq2Seq模型)最重要的部分是一个解码器和一个编码器网络。解码器将每一个项转换为包含该项和其上下文的相应隐藏向量。解码器逆向该过程,将向量转化为输出项,使用之前的输出作为输入上下文。
Wikipedia (2019)

Seq2Seq可视化

更直观地看,这个模型如下图所示。假设我们有一个包含4个标记(token/词元)的输入序列,比如句子“I am going home.”的词元化版本。当将这个序列输送给解码器的时候,编码器会生成一个高维表示。在训练过程中,编码器已经被训练成该这样做。

Seq2Seq模型的编码器

然后我们可以将这个高维表示输送给解码器,解码器会再次生成一个词元化序列。比如说在翻译的场景下,这个可能是“Je vais à la maison”或者I am going home的法语。

Seq2Seq模型的解码器

原始版的Transformer是一个Seq2Seq模型

在另一篇文章中,我们介绍了由Vaswani等人在2017年提出的原始Transformer架构。接下里你会看到其架构的可视化版本。即使这个流程比上面所示的例子更垂直,你也能看到其本质上是一个执行序列到序列学习的编码器-解码器架构:

  • 我们有N个编码器部分,它们接受输入(以学习嵌入的形式)并将其编码为高维的中间表示(在原始版Transformer中,它输出512维的状态向量)。编码器要么接收之前编码的状态作为输入,要么接受源序列(即英语中的短语)。
  • 我们有N个解码器部分,它们以最终编码状态作为输入,以及前一个解码器或者目标输入序列(即法语中的短语)的输出。

编码器部分确保输入被转换为抽象的高维中间表示。解码器部分接收这些包含输入上下文的表示和目标序列,并确保可以由源语言中预测目标语言的正确序列。

这种原始版Transformer模型,即vanilla或者经典Transformers,因此是序列到序列模型。

原始Transformer架构

来源:机器学习中Transformers介绍,基于Vaswani等人(2017)

什么是自回归模型?

序列到序列模型通常用来将整个序列从源格式转换为目标格式。这是一个在序列级别执行的转换,并且它应用与每个单独的标记。

当然自然语言处理(Natural Language Processing,NLP)中还有更多的任务。其中之一是语言生成,或者以更正式的术语说是自然语言生成(Natural Language Generation, NLG)。使用能够转换序列的模型来生成文本是十分困难的,因为我们还不知道完整的序列。这就是为什么需要一种不同的方法。

创建能够生成文本的模型的答案在于自回归模型这一类别中。

如果一种统计模型根据过去的值预测未来的值,那么它就是自回归的。比如,自回归模型可能会根据股票过去的表现来预测其未来的价格。
Incestopedia(日期不详)

在上述面向统计学但也适用于本文的定义中,你已经了解了文本生成的关键:使用过去值来预测未来值。或者换句话说,使用之前预测的一系列词汇来预测接下来的单词。

一个自回归模型因此可以被视为利用其先前的预测来生成新的预测。这样一来,它能够无限地继续下去,或者——在NLP模型的情况下——直到预测到一个停止信号。

自回归Transformers

GPT架构(基于Radford等人,2018)

在研究了Vaswani等人(2017)提出的原始版Transformer之后,许多研究人员和工程师也寻找将自回归应用到Transformers上的方法。

他们成功了: Transgormers确实可以用于自回归,从而用于文本生成。

这一类叫作GPT(实际上,甚至包括GPT-2和GPT-3)的Transformers是自回归的(Radford等人,2018)。GPT很大程度上受到原始版Transformer的解码器部分的启发,正如下图所示。

GPT架构

  • 首先嵌入输入。这种嵌入是一个矩阵(位置嵌入矩阵),因此实际输入是具有一个许多标记的向量(意思是其能够被反复使用,即有自回归特性)。
  • 12个解码器模块,带有掩码多头注意力(masked multi-head attention)部分、前馈(feedforward)部分和层归一化(layer normalization)部分来解释输入值。
  • 输出可以是文本预测;这种情况下,这个任务就是语言建模。当然,它也可以用于其他任务,比如相似度检测和选择题回答等。

借助预训练,模型学习到语言建模。随后可以对它进行微调用于上面提到的附加任务。

什么是自编码模型?

自回归模型在目标为语言建模,即执行自然语言生成(Natural Language Generation)时,自回归模型效果非常好。然而,还有另一种类型的任务不能从自回归模型中受益。同时在Seq2Seq模型中也不受益。我们所说的就是自然语言理解(Natural Language Understanding)活动。

  • 虽然需要Seq2Seq模型理解语言,但它们使用这种理解来执行不同的任务(通常是翻译)。
  • 如果生成能够成功地执行,自然语言生成任务和其自回归模型不一定需要理解语言。

自编码模型可以在这里提供帮助。

自编码模型的目标是通过训练网络去忽略信号“噪声”,来学习一组数据的表示(编码),通常是为了降维。伴随着降维侧,同时还学习一个重建侧,其中在重建侧,自编码器尝试从缩减编码中生成尽可能接近原始输入的表示,正如它的名字。
WIkipedia(2006)
自编码模型是通过以某些方法破坏输入标记并尝试重建为原始句子来训练的。
HuggingFace(日期不详)

自编码Transformers

自编码Transformer的一个例子就是由Devlin等人(2018)提出的BERT模型,。它首先破坏输入,并目标于预测原始输入,从而学习可用于下游任务的编码。

这正是类似BERT的模型所使用的信条:在无监督的数据集上进行预训练,之后就可以对下游任务(如问题回答)进行模型微调。

自回归还是自编码取决于任务和训练,而不是架构

虽然到目前为止我们已经对Seq2Seq、自回归、自编码模型有一些了解,但对我来说,当我在这一点上时仍有一些不清楚的地方。

如果自编码模型学习了一个编码,为什么自回归模型之后也能被用来微调呢?

答案很简单。一个模型是否是Seq2Seq、自回归和自编码并不取决于其架构。原始版Transformer的解码器部分,传统上用于自回归任务,同时也可以用于自编码(但考虑到该部分的掩码特性,这可能不是明智之举)。对于编码器部分和自回归任务也是如此。那么是什么让一个模型属于某一特定的类别呢?

是其解决的任务以及训练的类型(HuggingFace,日期不详)

  • 如果意图是模型作为一个整体转导(即在不改变语义的情况下转换)一个序列到另一个,那么所说的就是Seq2Seq模型。
  • 如果意图是通过破坏输入并生成原始输入的变体来学习编码表示,所说的就是自编码模型。
  • 如果意图是使用所有之前所有的预测来产生下一个预测,并以一种周期性的方式,所说的就是自回归模型。

请注意,自回归模型和自编码模型唯一的区别在于模型预训练的方式上。因此,同样的架构能够被用于自回归和自编码模型。当给定的模型被用于两种类型的预训练时,我们将其放在首次介绍该模型的文章对应的类别中。
HuggingFace(日期不详)

希望这能让你们更清楚一些。

总结

Transformers极大地改变了机器学习在NLP在各种任务中应用的方式。在关于这些Transformers的文献中也使用了大量的术语——Seq2Seq模型、自回归模型和自编码模型。

这篇文章,我们更详细地研究了这些术语。首先我们关注编码器-解码器架构方面,通过使用带中间表示的两个部分,我们可以创建一个执行广泛种类NLP任务的模型。

接下来关注Seq2Seq模型方面。我们看到当模型被传输一个序列并产生另一个序列,我们称其为Seq2Seq模型。通常但不必须的是,这种模型是按照编码器-解码器架构的理念来构建的。

自回归模型接收之前的预测来生成新的预测。因此训练此类模型包含了语言建模的任务:模型需要学习一种语言和词汇短语之间的相互依赖关系,包括语义。文本生成是自回归模型执行的经典任务。

自编码模型破坏文本输入并返回生成原始输入。其产生结果是一个可以用作于其他下游任务的编码,比如问题回答。

让事情变得有点困惑的是,当说我们在执行一个Seq2Seq、自回归或者自编码任务时,并不取决于其架构,许多SOTA方法,比如GPT和BERT,只使用原始Transformer架构的一部分。更确切地说,他们将训练任务调整为他们想要执行的任务:文本生成或文本理解。因此,一个模型是否是自回归或自编码很大部分取决于任务和其训练的类型。

我希望你能从这篇文章中有所收获。如果是,欢迎在评论区留言,我很高兴听到你的声音。如果你有意见或改进建议,同样欢迎。如果你有问题,请点击上面的提问按钮或者在下方留言。感谢你今天阅读MachineCurve,祝你工程愉快!😎

参考
HuggingFace. (n.d.). Summary of the models — transformers 4.1.1 documentation. Hugging Face – On a mission to solve NLP, one commit at a time. https://huggingface.co/transformers/model_summary.html

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, 30, 5998-6008.

Gehring, J., Auli, M., Grangier, D., Yarats, D., & Dauphin, Y. N. (2017). Convolutional sequence to sequence learning. arXiv preprint arXiv:1705.03122.

Wikipedia. (2019, December 17). Seq2seq. Wikipedia, the free encyclopedia. Retrieved December 29, 2020, from https://en.wikipedia.org/wiki/Seq2seq

Investopedia. (n.d.). What does autoregressive mean? https://www.investopedia.com/terms/a/autoregressive.asp

Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). Improving language understanding by generative pre-training.

Wikipedia. (2006, September 4). Autoencoder. Wikipedia, the free encyclopedia. Retrieved December 29, 2020, from https://en.wikipedia.org/wiki/Autoencoder

Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.

  • 16
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
传统NLP方法主要使用规则和统计学习方法来处理自然语言文本,例如基于n-gram的语言模型、基于HMM的分词和词性标注算法等。这些方法需要手动设计特征和规则,并且通常难以处理长文本和复杂语法。 End-to-End Seq2Seq模型是一种基于神经网络的序列到序列模型,可以将一个序列映射为另一个序列。它广泛用于机器翻译、文本摘要、对话系统等任务。它通常由两个循环神经网络(RNN)组成,一个编码器将输入序列编码为固定长度的向量,另一个解码器将此向量解码为输出序列。 Encoder-Decoder模型也是一种基于神经网络的序列到序列模型,它与Seq2Seq模型类似,但它通常使用卷积神经网络(CNN)或递归神经网络(RNN)作为编码器和解码器。它常用于机器翻译、语音识别等任务。 Transformer模型是一种基于自注意力机制的神经网络模型,它可以在不使用RNN和CNN的情况下捕捉序列的长期依赖关系。它广泛用于机器翻译、文本摘要、问答系统等任务,例如Google的翻译系统就是基于Transformer模型实现的。 BERT模型(Bidirectional Encoder Representations from Transformers)是一种基于Transformer模型的预训练语言模型,它可以在大规模无标注文本上进行预训练,然后在少量标注数据上进行微调,用于各种自然语言处理任务,例如文本分类、命名实体识别、机器翻译等。 GPT模型(Generative Pre-training Transformer)也是一种基于Transformer模型的预训练语言模型,它可以在大规模无标注文本上进行预训练,然后在特定的任务上进行微调,例如文本生成、对话系统等。与BERT不同的是,GPT是一个单向的语言模型,只能生成单向的文本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值