在过去几年中,机器学习和自然语言处理领域取得了显著进展。个人助理(如Siri和Alexa)、聊天机器人和问答机器人等应用程序正在彻底改变我们与机器互动的方式以及日常生活。
自然语言处理(NLP)中的自然语言生成(NLG)是人工智能发展最为迅速的应用之一。人们越来越需要从语言中理解和提取意义,而语言本身却充满了歧义和不同的结构。本文将探讨NLG的历史及其未来的发展方向。
自然语言生成的目标是通过预测句子中的下一个单词来传达信息。利用语言模型可以在数百万种可能性中预测出哪个单词的可能性最高。语言模型可以在字符级别、n-gram级别、句子级别甚至段落级别构建。例如,为了预测“I need to learn how to _”中的下一个单词,模型会为可能的单词(如“write”、“drive”等)分配一个概率值。近年来,神经网络(如RNN和LSTM)的发展使得处理长句子成为可能,显著提升了语言模型的准确性。
马尔可夫链是最早用于语言生成的算法之一。它们通过当前单词来预测句子中的下一个单词。例如,如果模型仅使用以下句子进行训练:“我早上喝咖啡”和“我喝茶吃三明治”。它预测“喝”之后是“咖啡”的概率为100%,而“我”后面是“喝”的概率为50%,是“吃”的概率也为50%。马尔可夫链考虑每个单词之间的关系来计算下一个单词的概率。早期的智能手机键盘就使用了这种方法为句子中的下一个单词提供预测建议。
然而,马尔可夫链只关注当前单词,忽略了句子中后续单词的上下文和结构,这可能导致错误的预测,从而限制了其在许多生成场景中的适用性。
神经网络是受人脑工作原理启发而设计的模型,通过建模输入和输出之间的非线性关系来提供一种新的计算方法。在语言建模中的应用被称为神经语言建模。
循环神经网络(RNN)是一种利用输入序列特性的神经网络。它通过前馈网络传递序列的每一项,并将模型的输入作为序列中下一项的输入,从而允许存储来自前面步骤的信息。RNN拥有“记忆”,使其非常适合语言生成,因为随着时间的推移,它们可以记住对话的上下文。RNN与马尔可夫链的主要区别在于,它们不仅观察前一个单词,还会观察之前看到的单词来进行预测。
在RNN的每次迭代中,模型都会将之前遇到的单词存储在内存中,并计算下一个单词的概率。例如,如果模型生成了文本“我们需要租一辆”,那么它现在必须找出句子中的下一个单词。对于字典中的每个单词,该模型根据它之前看到的单词分布概率。在这个例子中,“房子”或“汽车”的概率高于“河流”或“晚餐”。选择概率最高的单词并存储在内存中,然后模型继续下一个迭代。
RNN有一个主要限制——梯度消失问题。随着序列长度的增加,RNN无法记住很久以前遇到的单词,只能根据最近的单词进行预测。这限制了RNN在生成连贯长句方面的作用。
长短期记忆网络(LSTM)是RNN的一种变体,能够更准确地处理输入序列中的长期依赖关系。LSTM具有类似于RNN的链状结构;但是,它们由四个部分组成:细胞状态、输入门、输出门和遗忘门。这使得RNN可以通过调节细胞内外的信息流,在任意时间间隔内记住或忘记单词。
在LSTM中,如果模型接收到输入:“我是西班牙人,我精通__”,为了准确预测下一个单词是“西班牙语”,模型会重点放在句子中的“西班牙”上,并利用细胞的状态“记住”它。该信息在处理序列时由细胞存储,然后用于预测下一个单词。当遇到句号时,遗忘门会注意到句子上下文发生了变化,可以忽略当前的细胞状态信息。这使得网络能够选择性地跟踪相关信息,同时最小化梯度消失问题,从而在更长时间内记住信息。
然而,由于仍然存在从先前细胞到当前细胞的复杂顺序路径,LSTM可以记住的序列长度受到限制。此外,LSTM由于计算需求较高而难以训练,其顺序性限制了其利用现代计算设备(如GPU和TPU)的能力。
Transformer在2017年由谷歌首次提出,引入了一种名为“自注意力机制”的新方法。Transformers目前广泛应用于各种自然语言处理任务,如语言建模、机器翻译和文本生成。Transformers由一组编码器和另一组解码器组成,前者处理任意长度的输入,后者生成输出句子。
在下面的例子中,编码器处理输入句子并生成表示形式。解码器使用该表示形式逐字创建输入句子。每个单词的初始表示/嵌入由未填充的圆圈表示。然后,模型运用“自注意力机制”将所有其他单词的信息聚合起来,生成每个单词的新表示,由填充的圆圈表示,由整个上下文告知。然后,模型对所有单词并行地重复这一过程多次,持续生成新的表示。同样,解码器从左到右一次生成一个单词。它不仅关注之前生成的其他单词,还关注由编码器生成的最终表示形式。
与LSTM相比,Transformers仅执行少量且固定的步骤,同时运用自注意力机制,该机制直接模拟句子中所有单词之间的关系,而不受它们各自位置的影响。当模型处理输入序列中的每个单词时,自注意力允许模型查看输入序列的其他相关部分以更好地编码单词。它运用多个注意力头,扩展了模型聚焦在不同位置的能力(无论它们在序列中的距离如何)。
最近,对原始Transformer架构进行了改进,显著提高了速度和精度。在2018年,谷歌发布了一篇关于双向编码器表示(BERT)的论文,该模型为各种自然语言处理任务提供了最先进的结果。同样,在2019年,OpenAI发布了一个基于Transformer的模型,该模型包含约15亿个参数,只需几行输入文本即可生成连贯的大段文章。
最近,Transformers也被用于语言生成。在用于语言生成的Transformers中,最著名的例子是OpenAI的GPT-2语言模型。该模型通过将注意力集中在与预测下一个单词相关的单词上,来学习预测句子中的下一个单词。
例如,对于句子“她的裙子上有粉色、白色和_”,模型会预测“蓝色”。通过自注意力机制分析列表中之前的单词(如颜色“白色”和“粉色”),并理解预期的单词也应是一种颜色。自注意力允许模型选择性地关注每个单词的句子的不同部分,而不是仅仅记住循环块(如RNN和LSTM中)的一些特征。这有助于模型回忆起前一句的更多特征,并导致更准确和连贯的预测。与之前的模型不同,Transformers可以在上下文中运用所有单词的表示,而无需将所有信息压缩为单个固定长度表示。这种架构允许Transformers在更长的句子中保留信息,而不会显著增加计算要求。它们在各种任务中的表现也优于之前的模型,无需特定领域的调整。
在这篇文章中,我们回顾了语言生成的演变,从简单的马尔可夫链生成句子到使用自注意力模型生成更长距离的连贯文本。然而,我们正处于生成语言建模的初级阶段,Transformers只是迈向真实文本生成的一小步。生成模型也在开发其他类型的内容,如图像、视频和音频。
然而,作为一个社会,我们必须谨慎对待生成模型的使用,因为它们为生成虚假新闻、虚假回复和在线身份冒用提供了多种可能性。OpenAI决定不发布他们的GPT-2语言模型,因为它可能会被误用,这表明我们现在已经进入了语言模型足以引起关注的时代。