自然语言处理(NLP)是计算机科学与人工智能领域的重要分支,专注于研究人机间通过自然语言进行有效沟通的各种理论和方法。这一领域的研究不仅具有重要的实际应用价值,还蕴含着革命性的理论意义。
自然语言处理被视为解决人工智能完备问题的核心之一,因为理解自然语言需要广泛的知识和运用这些知识的能力。对自然语言处理的研究充满了魅力和挑战。
本文源自自然语言处理领域知名博主Sebastian Ruder的文章,主要从神经网络技术的角度探讨了自然语言处理领域近15年来的重要进展,并总结了8个关键里程碑事件。尽管文章省略了一些其他重要工作,但重点放在了神经网络技术上,这并不意味着在此期间其他技术领域没有重要进展。实际上,许多神经网络模型都是建立在同期非神经网络技术的基础上的。
语言模型是预测给定已出现词语的文本中下一个单词的任务,这一任务虽简单,但具有广泛的实际应用,例如智能键盘和电子邮件回复建议。神经语言模型,尤其是前馈神经网络(feed-forward neural network),最早于2001年由Bengio等人提出。这些模型以先前出现的n个词语作为输入向量,今天这种向量被称为词嵌入(word embeddings)。这些词嵌入在级联后进入隐藏层,然后通过softmax层进行输出。
近年来,前馈神经网络已被循环神经网络(RNNs)和长短期记忆神经网络(LSTMs)取代。虽然后来提出的新模型大多在经典的LSTM基础上进行扩展,但LSTM仍然是一个强大的基础模型。词嵌入的训练也在不断发展,更好地理解语言模型捕捉的信息依然是当前研究的重点领域。
多任务学习是指在多个任务下训练模型时共享参数的方法,这可以通过捆绑不同层的权重轻松实现。1993年,Rich Caruana首次提出了多任务学习的思想,并将其应用于道路追踪和肺炎预测。多任务学习鼓励模型学习对多个任务有效的表征,尤其适用于学习一般、低级的描述形式、集中模型的注意力或在训练数据有限的环境中。
2008年,Collobert和Weston等人首次在自然语言处理领域应用了多任务学习。他们的模型通过共享词嵌入矩阵实现了这一目标。共享的词嵌入矩阵使模型能够相互协作,共享低层级信息。这项工作不仅推动了多任务学习的发展,还开创了诸如预训练词嵌入和使用卷积神经网络处理文本的方法,影响深远。
传统的词袋模型(bag-of-words model)通过稀疏向量表示文本已有悠久历史。然而,稠密向量的词嵌入(word embeddings)在2001年首次出现。2013年,Mikolov等人通过去除隐藏层和近似计算目标,显著提高了词嵌入模型的训练效率。尽管这些改进在本质上是简单的,但它们与高效的word2vec模型结合,使得大规模词嵌入模型的训练成为可能。
Word2vec有两种实现方法:连续词袋模型(CBOW)和跳字模型(skip-gram)。它们在预测目标上有所不同:一种是根据周围词语预测中心词语,另一种则是相反。这些嵌入能够捕捉诸如性别、动词时态和国际事务等单词之间的特定关系。预训练的词嵌入矩阵能够提高大量下游任务的性能,这使得词嵌入成为自然语言处理领域的重要组成部分。
2013年和2014年是自然语言处理领域神经网络时代开始的标志。常用的三种神经网络类型包括循环神经网络(RNNs)、卷积神经网络(CNNs)和结构递归神经网络(SRNs)。
循环神经网络(RNNs)是处理动态输入序列的自然选择,尤其是在自然语言处理领域。经典的长短期记忆网络(LSTM)因其更好的解决梯度消失和梯度爆炸问题的能力而受到青睐。双向的LSTM通常用于同时处理左右两侧的文本内容。卷积神经网络(CNNs)则在两个维度上操作,具有更好的并行性,能够涵盖更广泛的上下文内容。循环神经网络和卷积神经网络都将语言视为一个序列,但结构递归神经网络(SRNs)通过树形结构来表示语言,以自下而上的方式构建序列的表示。
2014年,Sutskever等人提出了序列到序列学习,即使用神经网络将一个序列映射到另一个序列的一般化框架。在这个框架中,编码器神经网络对输入句子进行处理并压缩成向量表示,解码器神经网络则根据编码器的状态逐个预测输出符号。这一框架在自然语言生成任务上被广泛应用,例如基于图片生成描述、基于表格生成文本等。
序列到序列学习甚至可以应用于自然语言处理领域常见的结构化预测任务,即输出具有特定结构的任务。例如,输出可以像选区解析一样被线性化。神经网络已经被证明能够产生线性输出并识别命名实体。
注意力机制是神经网络机器翻译(NMT)的核心创新之一,它解决了序列到序列学习的主要瓶颈,即需要将源序列的全部内容压缩为固定大小的向量。注意力机制通过让解码器回顾源序列的隐藏状态,提供加权平均值的输入,从而缓解了这一问题。注意力机制被广泛应用于各种任务,如句法分析、阅读理解和单样本学习。
注意力机制不仅限于输入序列,自注意力机制可以观察句子或文档中的单词,获得包含更多上下文信息的词语表示。多层的自注意力机制是Transformer模型的核心,该模型是一个基于自注意力机制的全新神经网络架构。
基于记忆的神经网络引入了明确的记忆单元,例如神经图灵机(NTMs)、记忆网络(Memory Networks)、端到端记忆网络(End-to-end Memory Networks)、动态记忆网络(Dynamic Memory Networks)、神经可微计算机(Neural Differentiable Computer)和循环实体网络(Recurrent Entity Networks)。这些模型通过注意力机制相似的方式访问记忆,基于与当前状态的关联读取和写入记忆。这些模型在需要长时间保留信息的任务中表现出色,例如语言模型构建和阅读理解。
预训练的语言模型在2015年首次提出,但直到最近才被证明在大量不同类型的任务中均十分有效。语言模型嵌入可以作为目标模型中的特征,或者根据具体任务进行调整。预训练的语言模型在数据量很少的情况下也能有效学习,特别是在低资源语言中。
除了上述里程碑之外,还有一些其他进展也产生了广泛的影响。例如,基于字符的描述(Character-based representations)在形态丰富的语言中得到了广泛应用,减轻了固定词汇表的问题。对抗学习(Adversarial learning)和强化学习(Reinforcement learning)也在自然语言处理领域发挥了重要作用。
通过这些里程碑事件,我们可以看到自然语言处理领域在过去15年中的巨大进步和发展。