RNN、Transformer和BERT是受欢迎的自然语言处理(NLP)技术,在序列建模、并行化和下游任务的预训练方面存在权衡。
自然语言处理(NLP)是人工智能领域的一个分支,用于使机器具备理解文本数据的能力。NLP研究已经存在很长时间,但是随着大数据和更高计算处理能力的引入,它变得越来越显著。
随着NLP领域的发展壮大,许多研究人员尝试提高机器对文本数据的理解能力。通过不断进展,许多技术被提出并应用于NLP领域。
本文将比较NLP领域中用于处理文本数据的各种技术。本文将重点讨论RNN、Transformer和BERT,因为它们经常在研究中使用。
RNN
RNN是在1980年开发的,但直到最近才在NLP领域引起关注。RNN是神经网络家族中的一种特殊类型,用于处理顺序数据或无法独立于彼此的数据。顺序数据的示例包括时间序列、音频或文本句子数据,基本上是任何具有有意义顺序的数据。
与常规的前馈神经网络不同,RNN以不同的方式处理信息。在正常的前馈神经网络中,信息会按照层次结构进行处理。然而,RNN在信息输入时使用循环循环。为了理解这些差异,让我们看一下下面的图像。
从上面的图像中可以看出,RNN模型在信息处理过程中实现了一个循环。RNN在处理信息时会考虑当前和以前的数据输入。这就是为什么该模型适用于任何类型的顺序数据。
如果我们以文本数据为例,想象一下我们有一个句子“I wake up at 7 AM”,然后我们将单词作为输入。在前馈神经网络中,当我们到达单词“up”时,模型已经忘记了词汇“I”、“wake”和“up”。然而,RNN会使用每个单词的输出,并将它们循环回来,以便模型不会忘记。
在NLP领域,RNN经常用于许多文本应用,如文本分类和生成。它经常用于词级应用,例如词性标注、下一个单词生成等。
深入研究文本数据上的RNN,有许多类型的RNN。例如,下面的图像是多对多类型的RNN。
从上面的图像中可以看出,每个步骤(时间步长)的输出一次处理一步,并且每次迭代总是考虑以前的信息。
在许多NLP应用中使用的另一种RNN类型是编码器-解码器类型(序列到序列)。该结构在下面的图像中显示。
该结构引入了两个用于模型的部分。第一部分称为编码器,它接收数据序列并创建基于此的新表示。表示将用于模型的第二部分,即解码器。有了这个结构,输入和输出的长度不一定需要相等。例如,语言翻译是一个常见的用例,输入和输出之间的长度通常不相等。
使用RNN处理自然语言数据有多种优点,包括:
但是,也有几个缺点:
Transformer
Transformer是一种NLP模型架构,旨在解决RNN中遇到的序列到序列任务。如上所述,RNN具有短时记忆问题。输入越长,模型忘记信息的问题就越突出。这就是注意机制可以帮助解决该问题的地方。
注意机制在Bahdanau等人(2014)的论文中引入,用于解决长输入问题,特别是对于RNN的编码器-解码器类型。我不会详细解释注意机制。基本上,它是一层允许模型在输出预测时专注于模型输入中的关键部分的层次。例如,如果任务是翻译,并且单词输入为“Clock”,则它将与“Jam”在印度尼西亚语中高度相关。
Transformer模型由Vaswani等人(2017)提出。该架构受到编码器-解码器RNN的启发,并以注意机制为基础构建,并且不按顺序处理数据。整体Transformer模型的结构如下图所示。
在上面的结构中,Transformer将数据向量序列编码为带有位置编码的单词嵌入,并使用解码器将数据转换回原始形式。通过注意机制,编码可以根据输入的重要性进行加权。
与其他模型相比,Transformer提供了一些优势,包括:
然而,Transformer模型仍存在一些缺点:
BERT
BERT是由Devlin等人(2019)开发的一个模型,包括两个步骤(预训练和微调)来创建该模型。与之对比,BERT是一堆变换器编码器(BERT Base有12层,BERT Large有24层)。
BERT的整体模型开发如下图所示。
预训练任务同时启动了模型的训练,一旦完成,模型就可以针对各种下游任务进行微调(问答、分类等)。
BERT的独特之处在于它是第一个在文本数据上进行预训练的无监督双向语言模型。BERT先在整个维基百科和书籍语料库上进行预训练,包括超过30亿个单词。
BERT被认为是双向的,因为它不是按顺序阅读数据输入(从左到右或从右到左),而是Transformer编码器同时读取整个序列。
为了实现双向性,BERT使用了两种技术:
在NLP领域使用BERT有几个优点,包括:
然而,BERT仍然存在一些缺点,包括:
结论
NLP最近变得更加突出,许多研究都集中在改进应用程序上。每种技术都有其优点和缺点,但总的来说,我们可以看到模型以更好的方式发展。