likes
comments
collection
share

Pointer Networks在自然语言处理领域中的应用

作者站长头像
站长
· 阅读数 6

作者:哈工大SCIR硕士生冷海涛

1.引言

在自然语言领域中,seq2seq模型已经被应用到很多任务中并取得了一定的效果。但是对于seq2seq模型中的decoder部分,使用者必须预先定义好一个固定大小的output dictionary。这导致了seq2seq模型没有办法应用到一些由输入数据决定output dictionary的问题,比如组合问题。由此O Vinyals[1] 等人在2015 年提出了基于attention机制的Pointer Networks模型来解决组合问题。

2.Pointer Networks 模型简介

和常规的seq2seq模型比较起来,Pointer Networks主要在decoder部分发生了变化。这里以LSTM为例。对于给定的训练对(P,Cp), 其中P={P1,...Pn} 是n个向量组成的序列,Cp={C1,…,Cm(P)},其中m(P) 的大小在1到n之间。同时,我们定义encoder和decoder的隐层分别为(e1,…,en) 以及(d1,…,dm(P))。因而有:

Pointer Networks在自然语言处理领域中的应用

而我们的优化目标则是:

Pointer Networks在自然语言处理领域中的应用

其中公式中的 θ 代表了模型中的参数。

Pointer Networks在自然语言处理领域中的应用

图1 seq2seq模型

Pointer Networks在自然语言处理领域中的应用

图2 Ptr-Net模型

 

在如图1这样的传统seq2seq模型中,我们使用了一个固定大小的softmax分布来计算Pointer Networks在自然语言处理领域中的应用,而这样的模型架构并不能解决output dictionary 大小不能确定的组合问题。而在Ptr-Net中我们则可以使用如图2的attention机制来解决这个问题

Pointer Networks在自然语言处理领域中的应用

其中向量 ui 在经过 softmax 规范化后得到的概率分布便是基于输入内容的输出预测分布。公式中的v, W1, W2 都是可学习的参数。在这个过程中,我们直接使用得到的softmax结果去拷贝encoder对应的输入元素作为的decoder输入的向量。

3.Pointer Networks 在NLP上的应用

Ptr-Net最早提出来的时候,是用来解决旅行商、凸包等组合问题,但近两年来,Ptr-Net也广泛应用到NLP的各个任务上。

3.1文摘任务

以前大多数的extractive summarization 都是基于人工特征来完成的,而在ACL2016上,Cheng[2]等发表的Neural Summarization by Extracting Sentences and Words针对extractive summarization任务提出了data-driven的方法,在该论文中的模型分为了如图3 所示的sentence level以及如图4所示的word level两个粒度。其中sentence level把问题看做了一个序列标签问题,每个句子分别标记上提取或者不提取。而对于word level问题,作者认为其是介于abstractive summarization和extractive summarization之间的一个生成问题,而生成的词局限于原文档中出现的词。本文将介绍word level这个模型。

Pointer Networks在自然语言处理领域中的应用

图3 sentence level

Pointer Networks在自然语言处理领域中的应用

图4 word level

如图3所示encoder部分使用了层次化的思想,先利用CNN从词语到句子,再利用RNN(LSTM) 从句子到文档。下面详细介绍一下图4的decoder部分。在decoder中的第t步我们需要计算得到的是 Pointer Networks在自然语言处理领域中的应用。用Pointer Networks在自然语言处理领域中的应用表示encoder 阶段的隐层,用Pointer Networks在自然语言处理领域中的应用表示decoder 阶段的隐层。首先我们需要得到decoder部分中第t步LSTM网络的隐层,其中Pointer Networks在自然语言处理领域中的应用代表第t-1 步的隐层,Pointer Networks在自然语言处理领域中的应用是第t 步的输入。那么有:

Pointer Networks在自然语言处理领域中的应用

 接着利用得到的Pointer Networks在自然语言处理领域中的应用,对文档中的每个句子做attention 操作:

Pointer Networks在自然语言处理领域中的应用

然后再利用通过attention操作得到的Pointer Networks在自然语言处理领域中的应用,在文档中每个词语的基础上做 attention操作,而这一步的attention操作,则使用了 Ptr-Net的思想,直接使用attention结果计算出概率分布。

Pointer Networks在自然语言处理领域中的应用

在上述公式中,Pointer Networks在自然语言处理领域中的应用对应了文档中第i 个词语的embedding。

Pointer Networks在自然语言处理领域中的应用

图5 pointer generator

而对于abstractive summarization,在ACL 2017发表的论文 Get To The Point: Summarization with Pointer-Generator Networks中,Abigail See[3]等人提出了pointer-generator 。Pointer-generator混合了seq2seq+attention模型以及Pointer Networks模型,相比普通的seq2seq+attention 模型,混合模型能够从原文中直接复制词语,因而可以提高摘要的准确率并处理OOV词语,同时还保留下了生成新词语的能力。如图5所示,在该混合模型中,词语的概率分布是由两部分组成的,即seq2seq 模型softmax后的结果与Ptr-Net产生的概率分布叠加得到。

Pointer Networks在自然语言处理领域中的应用

当w是一个OOV的时候,Pointer Networks在自然语言处理领域中的应用 即为0,当w并没有在原文中出现的时候,Pointer Networks在自然语言处理领域中的应用为0 。公式中的Pointer Networks在自然语言处理领域中的应用 是Ptr-Net在做完softmax归一化后的结果。而 pgen 则是一个比例系数。这个系数这样计算得到:

Pointer Networks在自然语言处理领域中的应用

其中Pointer Networks在自然语言处理领域中的应用是利用attention 机制得到的结果:

Pointer Networks在自然语言处理领域中的应用

Pointer Networks在自然语言处理领域中的应用代表了 encoder阶段的各个时间节点的隐层,而 st  则是decoder的状态,x t 是decoder的输入。

3.2信息抽取任务

Pointer Networks在自然语言处理领域中的应用

图6 信息抽取模型

大部分结果显著的信息抽取方法是依赖于token-level标签的,但是得到这些标签是费时费力的,并且这些标签作为一个中间步骤,并不是任务期望的输出结果。因而在2017 年,RB Palm[4]等人提出了End-to-End的信息抽取方法,该方法基于Ptr-Net的思想,在没有使用token-level 标签的情况下便得到了非常有竞争力的结果。如图6所示,该模型的输入是N个词语x = x1,…,xN ,模型中使用了一个共享的encoder,但是decoder则是有多个的,每一个decoder对应一个需要被抽取得到的信息。用k=1,…,K  表示decoder的序号。在每一步j,每一个decoder都需要计算出一个 Pointer Networks在自然语言处理领域中的应用,即softmax归一化前的 attention分数。Pointer Networks在自然语言处理领域中的应用 代表序号为k的decoder 在第j步的输出,Pointer Networks在自然语言处理领域中的应用 代表序号为k的decoder 在第j步的状态,因而有

Pointer Networks在自然语言处理领域中的应用

其中Pointer Networks在自然语言处理领域中的应用 是每个词语的one-hot的向量,因而Pointer Networks在自然语言处理领域中的应用 是一个在词语上的概率分布。所以和普通的Ptr-Net不同的是,普通的Ptr-Net指针指向的是encoder输入中的一个位置,把该位置的输入拷贝到decoder 来,而这个模型中,最后作为decoder输入的是一个词语概率分布。

3.3句子排序任务

Pointer Networks在自然语言处理领域中的应用

图7 句子排序模型

句子排序任务是把一系列的句子调整为连贯、可读性强的文本,是自然语言处理领域中十分重要而又困难的工作。一段好的文档是有很高的逻辑性和主题结构的,因而在许多任务当中都需要用到句子排序。L Logeswaran[5]和J Gong[6]等人,则提出了基于Ptr-Net的句子排序任务。如图7所示,模型的输入是若干句子 s=s1,…,sn,对于训练对(s,o),我们可以得到:

Pointer Networks在自然语言处理领域中的应用

Pointer Networks在自然语言处理领域中的应用 则可以利用Ptr-Net计算得到:

Pointer Networks在自然语言处理领域中的应用

其中ej和di分别表示encoder 第j步和decoder第i步的隐层。而v和W 是可以学习的参数。而如图7所示中的sentence encoder部分则可以通过CNN, RNN等各种方法来完成。

4.结语

Ptr-Net的提出解决了传统seq2seq模型中output dictionary大小固定的问题。从其最初提出到现在,被应用到了NLP 中的许多任务中,在一些任务中,Ptr-Net都完成了End-to-End的模型构建,避免了许多中间步骤,比如信息抽取以及句子排序,而在另外一些其他任务中,Ptr-Net 则是很好的融入到生成模型中,将抽取机制带入生成模型中。根据已有工作,我们可以预期Ptr-Net在NLP任务中将会有较为广泛的应用前景。

5.参考文献

[1] Vinyals O, Fortunato M, Jaitly N.Pointer Networks. Computer Science, 2015.

[2] Cheng J, Lapata M. Neural Summarization by Extracting Sentences and Words. ACL2016.

[3] See A, Liu P J, Manning C D. Get To ThePoint: Summarization with Pointer-Generator Networks. ACL2017.

[4] Rasmus Berg Palm, Dirk Hovy, FlorianLaws, Ole Winther. End-to-End Information Extraction without Token-Level Supervision. SCNLP@EMNLP 2017 2017: 48-52

[5] Logeswaran L, Lee H, Radev D. Sentence Ordering using Recurrent Neural Networks. 2016.

[6] Gong J, Chen X, Qiu X, et al. End-to-EndNeural Sentence Ordering Using Pointer Network. 2016.

本期责任编辑:  丁   效

本期编辑:  刘元兴


“哈工大SCIR”公众号

主编:车万翔

副主编: 张伟男,丁效

责任编辑: 张伟男,丁效,赵森栋,刘一佳

编辑: 李家琦,赵得志,赵怀鹏,吴洋,刘元兴,蔡碧波

长按下图并点击 “ 识别图中二维码”,即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公共号:” 哈工大SCIR” 。

Pointer Networks在自然语言处理领域中的应用