2014年,Sutskever等人提出了序列到序列学习,这是一种通过神经网络将一个序列映射到另一个序列的通用框架。在这个框架中,编码器神经网络逐个处理句子并将其压缩为向量表示;然后,解码器神经网络根据编码器的状态逐个生成目标序列,每一步都将前一步的预测作为输入。这种框架在机器翻译领域取得了显著成功。2016年,谷歌宣布用基于神经网络的机器翻译模型(NMT)取代了传统的短语基机器翻译模型。根据Jeff Dean的说法,这相当于用500行神经网络代码取代了50万行基于短语的代码。
由于其灵活性,该框架现在是自然语言生成任务的主要选择。不同的模型可以担任编码器和解码器的角色。更重要的是,解码器不仅可以根据序列进行条件生成,还可以根据任意形式的数据进行条件生成。例如,基于图像生成标题(Vinyals等人,2015)、基于表格的文本生成(Lebret等人,2016)以及基于源代码变化的描述(Loyola等人,2017)等任务都可以应用这一框架。
注意力机制(Bahdanau等人,2015)是神经机器翻译(NMT)模型的核心创新之一,也是NMT优于传统短语基翻译系统的关键。序列到序列学习的主要瓶颈在于需要将源序列压缩为固定大小的向量。注意力机制通过允许解码器回顾源序列隐藏状态,并将其作为加权平均值提供给解码器的额外输入,从而解决了这一问题。注意力机制在多种任务中都表现出色,如句法分析(Vinyals等人,2015)、阅读理解(Hermann等人,2015)和一次性学习(Vinyals等人,2016)等。
注意力机制不仅可以应用于输入序列,还可以应用于其他形式的数据,如图像字幕(Xu等人,2015)。注意力机制的一个重要副产品是,它可以帮助我们识别哪些输入部分与特定任务相关。
注意力机制可以被视为一种模糊的记忆机制,其中记忆由模型的隐藏状态组成,模型选择从记忆中检索哪些部分。许多具有更明确记忆的模型已经被提出,如神经网络图灵机(Graves等人,2014)、记忆网络(Weston等人,2015)、端到端记忆网络(Sukhbaatar等人,2015)、动态记忆网络(Kumar等人,2015)、可微神经计算机(Graves等人,2016)和递归实体网络(Henaff等人,2017)。
这些模型通常基于与当前状态的相似性来访问记忆,类似于注意力机制,并且通常可以写入和读取存储器。例如,端到端记忆网络会多次处理输入并更新记忆,以支持多个推理步骤。神经图灵机还具有基于位置的寻址功能,允许它们学习简单的计算机程序,如排序。基于记忆的模型通常用于需要长时间记忆的任务,如语言建模和阅读理解。
近年来,一系列监督任务被用于预训练神经网络,如Conneau等人(2017)、McCann等人(2017)和Subramanian等人(2018)的研究。相比之下,语言模型只需要未标记的文本,因此可以扩展到数十亿个token。2015年底,首次提出了预训练语言模型(Dai & Le,2015);直到最近,它们才被证明对各种任务都有益。语言模型嵌入可以用作目标模型中的特征(Peters等人,2018),或者可以通过微调语言模型来适应目标任务(Ramachandran等人,2017;Howard & Ruder,2018)。语言模型嵌入的加入显著提升了多项任务的表现,如图13所示。
预训练语言模型可以在更少的数据下进行学习,因为它们只需要未标记的数据。这对标记数据稀缺的语言尤其有益。
基于字符的表示:在字符级别运用卷积神经网络(CNN)或长短期记忆网络(LSTM)来获取基于字符的词表示,在形态学丰富的语言和需要大量形态信息的任务中较为常见。基于字符的表示减少了处理固定词汇表的需求,并可以实现完全基于字符的神经机器翻译(NMT)。
对抗性学习:对抗性方法已经在机器学习(ML)领域引起了广泛关注,并在自然语言处理(NLP)中得到应用。对抗性示例被广泛用于测试模型的鲁棒性和识别其失败案例。对抗性训练是一种有效的正规化方法,可以增强模型的鲁棒性。生成对抗网络(GAN)在自然语言生成中仍处于探索阶段,但在匹配分布时显示出潜力。
强化学习:强化学习在具有时间依赖性的任务中表现良好,如在训练过程中选择数据和建模对话。强化学习对于直接优化非可微评估指标(如ROUGE或BLEU)非常有效,尤其是在摘要生成和机器翻译中。反向强化学习在奖励难以明确定义的环境中也可能有用,例如视觉叙事任务。
本文由阿里云云栖社区组织翻译。