论文阅读Ask me anything: Dynamic memory networks for natural language processing

Posted 桥本环奈粤港澳分奈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论文阅读Ask me anything: Dynamic memory networks for natural language processing相关的知识,希望对你有一定的参考价值。


在这里插入图片描述

paper地址:https://arxiv.org/pdf/1506.07285v5.pdf

代码地址:https://github.com/radiodee1/awesome-chatbot


一、简介

自然语言处理中的许多问题都可以当作QA问题来处理,动态记忆网络(DMN)是一种处理输入序列和问题、形成情景记忆并生成相关答案的神经网络结构。

DMN使用input-question-answer三元组作为输入,可用于解决序列标注问题,分类问题,sequence-to-sequence 任务以及问答任务。(当作QA任务)

问题会触发一个迭代注意过程,该过程允许模型将其注意条件设置为输入和先前迭代的结果。然后用递归序列模型对这些结果进行推理,生成答案。


二、方法/模型

模型架构

(主要基于GRU)
动态记忆网络DMN包括输入模块、问题模块、情境记忆模块、应答模块:

  • Input Module 输入模块:将任务中的原始文本输入编码为分布式向量表示
  • Question Module 问题模块:将任务中的问题编码为分布式向量表示
  • Episodic Memory Module 情境记忆模块:根据输入的表示来检索新信息
  • Answer Module 应答模块:Answer模块从内存模块的最终内存向量中生成一个答案

在这里插入图片描述
流程如下:

  1. 计算输入和问题的向量表示
  2. 根据问题触发Attention机制,使用门控的方法选择出跟问题相关的输入
  3. 情景记忆模块会结合相关的输入和问题进行迭代生成记忆,并且生成一个答案的向量表示。
  4. 应答模块结合该向量以及问题向量,生成最终的答案

Input Module

可以利用RNN编码输入的句子,word embeddings作为循环网络的输入,在每个时间步长t处,网络更新其隐藏状态ht= RNN(L[wt], ht−1),其中L为嵌入矩阵,wt为输入序列第t个单词的单词索引。

输入单句时,输出递归网络的隐藏状态;输入多句时,将句子连接成一个单词标记的长列表,并在每个句子之后插入一个句子结束标记,每个句子结束标记处的隐藏状态就是输入模块的最终表示。

本文的循环神经网络选取的是GRU:
在这里插入图片描述
简写为: h t = G R U ( x t , h t − 1 ) h_t= GRU(x_t, h_{t−1}) ht=GRU(xt,ht1)

Question Module

给定问题 T Q T_Q TQ个词, t时刻问题编码器的隐藏状态为: q t = G R U ( L [ w t Q ] , q t − 1 ) q_t= GRU(L[w^Q_t], q_{t−1}) qt=GRU(L[wtQ]qt1) L表示上一节中的word embedding矩阵, w t Q w^Q_t wtQ表示问题中第 t t t个单词的索引。输入模块和问题模块之间共享word embedding矩阵。与输入模块不同,问题模块输出递归网络编码器的最终隐藏状态 q = q T Q q = q_{T_Q} q=qTQ

Episodic Memory Module

情景记忆模块在输入模块输出的表示上迭代,同时更新其内部情景记忆。在一般形式下,情景记忆模块由注意机制和不断更新记忆的循环网络组成。在每次迭代过程中,注意机制参与事实表征c,同时考虑问题表征q和之前的记忆 m i − 1 m^{i−1} mi1生成事件 e i e^i ei, 然后这个情节和之前的记忆 m i − 1 m^{i−1} mi1一起被用来更新情景记忆: m i = G R U ( e i , m i − 1 ) m^i = GRU(e^i, m^{i−1}) mi=GRU(ei,mi1) 这个GRU的初始状态被初始化为问题向量本身,即 m 0 = q m^0= q m0=q。对于某些任务来说,对输入进行多次传递是有利于情景记忆模块的。在 T M T_M TM通过之后,最后的内存 m T M m^{T_M} mTM传递给答案模块。

内存更新

为了计算第i步的情节,对输入序列 c 1 , … , c T C c1,…, c_{T_C} c1cTC应用共享了 g i g^i gi权重的GRU。GRU最终的隐藏状态作为传递给应答模块的episode vector。t时刻GRU隐藏状态的更新方程和episode情景计算方程分别为:
在这里插入图片描述

Answer Module

answer模块根据给定的向量生成一个答案。根据任务类型的不同,答案模块要么在情景记忆结束时触发一次,要么在每个时间步中触发一次。

使用另一个初始状态被初始化为最后一个内存 a 0 = m T M a_0= m^{T_M} a0=mTM的GRU。在每个时间步中,它将最后一个隐藏状态为 a t − 1 a_{t-1} at1的问题q以及之前预测的输出 y t − 1 y_{t−1} yt1作为输入。
在这里插入图片描述
在这里,我们将最后生成的单词和问题向量连接起来作为每个时间步的输入。输出通过正确序列的交叉熵错误分类进行训练,并附加一个特殊的序列结束标记。


三、实验

1. 数据集

  • Facebook的bAbI数据集(问答),用于测试模型检索事实和推理的能力

  • SST(情感分类),提供了短语级的细粒度标签,所有完整的句子(根节点)的测试集分为:非常消极的、负面的、中性的、积极的,或非常积极。

  • WSJ-PTB(词性标注)
    在这里插入图片描述

2. 实验设置

使用GloVe对单词向量进行预先训练

3. 实验结果

QA:
在这里插入图片描述
情感分析:
在这里插入图片描述

词性标注:
在这里插入图片描述

四、结论

DMN模型是各种NLP应用程序的潜在通用体系结构,包括分类、问题回答和序列建模。


有帮助的话可以点个赞喔~
在这里插入图片描述

以上是关于论文阅读Ask me anything: Dynamic memory networks for natural language processing的主要内容,如果未能解决你的问题,请参考以下文章

A_Machine_Vision_Apparatus_and_Method_for_Can-End_Inspection-论文阅读笔记

分割anything

5分钟paper基于近似动态规划的学习规划和反应的集成架构

论文解读:Ask, Attend and Answer: Exploring Question-Guided Spatial Attention for VQA

论文阅读:Bringing Old Photos Back to Life

论文解读:Dynamic Memory Networks for Visual and Textual Question Answering