论文重构:

标题:动态内存网络在自然语言处理中的应用:问答系统

一、引言和问题概述

自然语言处理的问答系统(Question answering,QA)是一个复杂的任务,它要求具备出色的文本理解力和推理能力。QA涵盖了众多NLP子领域的任务,例如机器翻译("这句话翻译成法语是什么?")、序列标注问题(如词性标注、命名实体识别)以及情感分类等。为此,作者提出了一种名为动态神经网络(Dynamic Memory Networks,DMN)的框架,旨在用统一的方式来处理这类问题。该框架能够生成语义和情景记忆,以形成问题序列的输出,并最终提供相应的答案。

二、动态神经网络架构

DMN包括五个模块:输入模块、语义记忆模块、问题模块、片段记忆模块和回答模块。具体结构如下:

1)输入模块

输入模块是DMN的起始点,其作用是将中间过程转换为向量表示。通过将中间值发送给片段记忆模块,输入模块实现了对特定函数的计算。这个模块主要采用循环神经网络(GRU),用于处理词向量数据,这些词向量可以通过Glove或word2vec获得。GRU的输入是词嵌入矩阵和上一个时间步的隐藏状态,然后根据特定的公式计算出当前时间步的隐藏状态。

2)语义记忆模块

虽然在本文中并未使用,但在图示中展示了语义记忆模块实际上就是用来产生词向量的模块,作为输入模块的信息输入。

3)问题模块

问题模块与输入模块的结构相同,并共享网络结构和词嵌入权重。它的主要目的是帮助片段记忆模块提取信息。其隐藏状态计算公式与输入模块相同,但输出仅为最后一个时刻的向量值。

4)片段记忆模块

片段记忆模块的作用主要是存储输入序列的信息,以及根据问题序列生成答案。其具体工作方式是基于问题模块提供的最后时刻的隐藏状态,利用一定的算法来选择最可能的回答。

三、结论

本文提出了一种新的神经网络框架——动态内存网络(DMN),用于解决自然语言处理中的问答任务。该框架由五个模块组成,包括输入模块、语义记忆模块、问题模块、片段记忆模块和回答模块。通过这种方式,DMN能够有效地处理各种类型的QA问题,从而在实际应用中具有广泛的应用前景。

这段文字描述了一个片段记忆网络,它基于问题模块中的问题来检索输入模块中的有用信息。然后推断这些信息生成一个最终的信息表示(也称为记忆),回答模块会基于这个信息表示生成回答。片段记忆模块允许多词输入信息,通过注意机制关注每次输入的不同信息。每个输入都会产生一个片段,最后将这些片段归结为记忆。这样我们的模块就可以由多个片段组成,注意机制会关注每个片段的重要信息。这样就行成了传递式推理,因为第一次输入后也许会发现我们需要更多的信息才能得到好的结果。

例如上图中的例子:

$ question :\ Where\ is\ the\ football?$

$ inpyt\ :\ John\ put\ down\ the\ football.$

通过上面的输入和并不能很好地解决问题,而且又引入了新的问题,因此需要进一步迭代无寻找关于 $John$ 的输入,正如上图中一个问题对应了三个输入一样。值得注意的是在第二次迭代时错误的给予了输入模块中句子2一些权重(0.3)。

片段记忆模块中的模型是GRU网络,在这里使用门函数作为注意机制,表达式如下:

$ g_t^i = G(c_t, m^{i-1}, q) $

在这里 $c_t$ 表示本次输入的值,$m^{i-1}$ 表示 $i-1$ pass时的值,$q$ 表示问题向量。具体的门函数表达式如下:

$$

G(c, m, q) = \sigma(W^{(2)} tanh(W^{(1)}z(c,m,q) + b^{(1)}) + b^{(2)})$

$$

隐藏层更新表达式:

$$

h_t^i = g_t^iGRU(c_t, h_{t-1}^i) + (1-g_t^i)h_{t-1}^i

$$

第 $i $ 次pass的计算片段,为第 $i$ 个序列的隐藏层最后的输出值,其表达是如下:

$$

e^i = h_{T_C}^i

$$

第 $i $ 次pass之后的记忆值,其计算公式如下:

$$

m^i = GRU(e^i, m^{i-1})

$$

模型的损失函数主要是回答序列的交叉熵。为了训练这个模型,我们的目标是最小化回答序列的交叉熵。