自然语言处理(Natural Language Processing,简称NLP)是人工智能领域中一门研究文本数据理解能力的技术。NLP研究存在已久,但随着大数据和更高的计算处理能力的引入,它近年来变得更加突出。
随着NLP领域的扩大,许多研究人员也努力改进机器对文本数据的理解能力。在取得了很大进展后,我们在NLP领域中提出并应用了许多技术。
本文将对NLP领域中处理文本数据的各种技术进行比较。文章将重点讨论RNN、Transformers和BERT,因为它们经常被用于研究。让我们开始吧。
循环神经网络
循环神经网络(Recurrent Neural Network,简称RNN)于1980年被开发出来,但直到近年来才在NLP领域引起了关注。RNN是神经网络家族中的一种特殊类型,用于处理顺序数据或不能独立于彼此的数据。顺序数据的例子包括时间序列、音频或文本句子数据,基本上是任何具有有意义顺序的数据。
RNN与常规前馈神经网络不同,它们以不同的方式处理信息。在常规前馈网络中,信息是按层处理的。然而,RNN在信息输入时使用了一个循环周期作为考虑因素。为了理解这些差异,请看下面的图片。
如您所见,RNN模型在信息处理过程中实现了循环循环。当处理这些信息时,RNN会考虑当前和先前的数据输入。这就是为什么该模型适用于任何类型的顺序数据。
以文本数据为例,假设我们有句子“I wake up at 7 AM”,我们需要对每个单词进行输入。在常规前馈神经网络中,当我们达到“up”这个词时,模型已经忘记了“I”、“wake”和“up”这几个单词。然而,RNN会使用每个单词的输出,并将它们循环回来,以便模型不会遗忘。
在NLP领域,RNN经常用于许多文字应用,如文本分类和生成。它经常用于基于词级的应用,如词性标注、下一个词的生成等。
深入研究文本数据上的RNN,可以发现有许多类型的RNN。例如,下面的图片是”many-to-many”类型的。
从上图可以看出,每个步骤(RNN中的时间步)的输出按顺序逐步处理,每次迭代都会考虑到先前的信息。
NLP应用中另一种常用的RNN类型是编码器-解码器类型(Sequence-to-Sequence)。其结构如下图所示。
该结构引入了两个用于模型的部分。第一部分称为编码器,它接收数据序列并基于之创建新的表示。这个表示将在模型的第二部分——解码器中使用。有了这个结构,输入和输出的长度不一定需要相等。例如,语言翻译就是一个没有输入和输出长度相等的常见情况。
使用RNN处理自然语言数据的各种好处包括:
- RNN可用于处理没有长度限制的文本输入。
- 模型在所有时间步上共享相同的权重,使得神经网络可以在每个步骤中使用相同的参数。
- 具有过去输入的记忆使得RNN适用于任何顺序数据。
但是,它也有一些缺点:
- RNN对消失和爆炸梯度都很敏感。这是指梯度结果接近零值(消失),导致网络权重只更新了一小部分,或者梯度结果非常大(爆炸),将不切实际的巨大重要性分配给网络。
- 由于模型的顺序性质,训练时间较长。
- 短期记忆意味着模型在训练时间越长时会开始遗忘。为了缓解这个问题,有一种称为LSTM的RNN扩展。
变压器
变压器是一种自然语言处理(NLP)模型架构,旨在解决以前在RNN中遇到的序列到序列任务。如上所述,RNN在短期记忆方面存在问题。输入文本越长,模型遗忘信息的问题越突出。这就是注意机制可以帮助解决这个问题的地方。
注意机制是由Bahdanau et al. (2014)在论文中引入的,旨在解决长输入问题,特别是对于编码器-解码器类型的RNN。我不会详细解释注意机制。基本上,它是一个允许模型在输出预测时集中关注模型输入关键部分的层。例如,如果任务是翻译,输入词”钟”可能与印尼文中的”果酱”高度相关。
变压器模型是由Vaswani et al. (2017)介绍的。该架构受到编码器-解码器RNN的启发,专注于注意机制,不按顺序处理数据。整体变压器模型的结构如下图所示。
在上述结构中,变压器将数据向量序列编码为带有位置编码的词嵌入,并使用解码器将数据转换回原始形式。通过注意机制,编码可以根据输入进行重要性排序。
与其他模型相比,变压器提供了一些优势:
- 并行处理可以提高训练和推断速度。
- 能够处理更长的输入,对上下文的理解更好。
变压器模型仍然存在一些缺点:
- 计算处理和需求高。
- 由于长度限制,注意机制可能需要将文本分割。
- 如果分割处理不正确,上下文可能会丢失。
BERT
BERT,即双向变压器编码器表示,是由Devlin et al. (2019)开发的模型,包括两个步骤(预训练和微调)来创建模型。与之相比,BERT是一堆变压器编码器(BERT Base有12层,BERT Large有24层)。
BERT的整体模型发展可以在下图中展示。
预训练任务同时启动模型的训练,一旦完成,模型可以针对各种下游任务进行微调(问答、分类等)。
BERT之所以特别,是因为它是第一个使用文本数据预训练的无监督双向语言模型。BERT之前曾在整个维基百科和书籍语料库上进行预训练,包含超过30亿个单词。
BERT被认为是双向的,因为它不是按顺序顺序阅读数据输入(从左到右或相反),而是变压器编码器同时读取整个序列。
与定向模型不同,定向模型按顺序(从左到右或从右到左)阅读文本输入,变压器编码器同时读取整个单词序列。这就是为什么模型被认为是双向的,并且允许模型理解输入数据的整个上下文。
为了实现双向性,BERT使用了两种技术:
- 掩码语言模型(MLM)——单词掩码技术。该技术会掩盖输入单词的15%并尝试根据非掩盖的单词预测此掩盖的单词。
- 下一个句子预测(NSP)——BERT试图学习句子之间的关系。该模型将句子对作为数据输入,并试图预测后续句子是否存在于原始文档中。
使用BERT在NLP领域中具有几个优点,包括:
- BERT易于用于预训练各种NLP下游任务。
- 双向性使BERT更好地理解文本上下文。
- 它是一个受到社区支持的流行模型。
尽管如此,还存在一些缺点,包括:
- 某些下游任务微调需要较高的计算能力和较长的训练时间。
- BERT模型可能导致需要更大存储空间的大模型。
- 对于简单任务的性能与使用更简单模型没有太大差异,更适合用于复杂任务。
结论
NLP近年来变得更加突出,许多研究都致力于改进应用。在本文中,我们讨论了三种经常使用的NLP技术:
- RNN
- 变换器
- BERT
每种技术都有其优点和缺点,但总体而言,我们可以看到模型的发展越来越好。 Cornellius Yudha Wijaya是一位数据科学助理经理和数据作家。他在Allianz Indonesia全职工作时,喜欢通过社交媒体和写作媒体分享Python和数据技巧。
[Cornellius Yudha Wijaya](https://www.linkedin.com/in/cornellius-yudha-wijaya/)是一位数据科学助理经理和数据作家。他在Allianz Indonesia全职工作期间,喜欢通过社交媒体和写作媒体分享Python和数据技巧。