【论文笔记】用于自然语言处理的动态记忆网络
本文是2016年的一篇文章。文章认为,大多数的自言语言处理任务都可以转换成问答问题。因而作者提出了一种动态记忆网络(Dynamic Memory Network,DMN),该网络处理输入序列和问题,形成情景记忆,并生成相关的答案。在改模型中,问题触发了一个迭代注意力过程,该过程允许模型将其注意力置于输入和之前迭代的结果上。然后用递归序列模型对这些结果进行推理,以生成答案。
论文原文的地址:http://proceedings.mlr.press/v48/kumar16.pdf
1.介绍
DMN首先计算所有输入和问题的表示。问题的表示触发了一个迭代的注意力过程,该过程从输入序列中搜索并提取相关的事实。随后,DMN的记忆模块从提取的事实中抽取原因,并将所有相关信息提供给回答模块,并由该模块生成答案。
下图提供了一个DMN取得很好效果的例子:
1.举例.png
2.动态记忆网络
DMN有输入、问题、情景记忆和答案生成这四个模块,其整体的结构如下图所示:
2.DMN结构图.png
2.1 输入模块
输入模块通过RNN对输入序列进行编码。当输入的是一个单独的句子时,输入模块直接将RNN的隐藏状态输出,也就是说输出序列的长度等于句子的长度;当输入是多个句子时,将这些句子组合成一个长的单词列表,每一句结尾处的隐藏状态作为该句的输出,也就是说,输出序列的长度等于所输入的句子数。
在本文的实验中,作者尝试了GRU和LSTM两种结构的RNN,发现两者表现地差不多,但是LSTM计算销号更大,因而最终采用了GRU。
2.2 问题模块
与单句在输入模块中的处理方案一样,本模块利用RNN对问题进行编码,输出与问题等长的隐藏状态列表。
2.3 情景记忆模块
通常情况下,情景记忆模块由内部记忆装置、注意力机制与循环网络组成,并依靠这些来更新记忆。在迭代过程中,注意力机制通过使用一个控制函数来进行事实表征,并以此来产生情节ei,其中控制函数考虑了问题表示q和之前的记忆mi-1。
随后,ei与mi-1将被作为GRU的输入来生成新的记忆mi。GRU的初始记忆,也就是m0被初始化为问题表示向量本身q。对于一些任务,针对输入进行多次遍历是有益的。在经历TM次遍历后,最终的记忆mTM会被传递给答案生成模块。
本模型的一个实际例子如下图所示。
2.4 答案生成模块
本模块生成答案的向量。根据任务类型,本模块可以在情景记忆结束后或者是在任意一个事件步骤被激发。
本模块再次引入了GRU,并以上一步的结果来进行初始化,即a0=mTM。本模块的迭代更新过程为:
at = GRU([yt-1,q],at-1)
yt = softmax(W(a)at)
本模块的输出采用交叉熵损失函数来计算损失。
2.5 训练
本模型将任务看作有监督的分类任务进行训练,采用交叉熵损失函数。利用反向传播和梯度下降来进行训练。
3.实验
文中,作者将DMN模型应用于问答、情感分析、词性标注,并取得了不错的效果。同时,作者对情景记忆模块进行了定量分析和定性分析。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://ywsun.site/articles/16.html