Memory Network是深度学习的一个小分支,从2014年被提出到现在也逐渐发展出了几个成熟的模型,我比较关注的是其在QA领域的应用和发展。本专栏会选择几篇论文比较系统的介绍Memory Network相关的模型和应用。对一些论文也会结合TensorFlow的实现进行介绍。
第一篇要介绍的论文是FaceBook在2014年发表的论文“Memory Networks”,与其同期提出的“Neural Turing Machine ”也是采用相似的方法(外部记忆)。传统的深度学习模型(RNN、LSTM、GRU等)使用hidden states或者Attention机制作为他们的记忆功能,但是这种方法产生的记忆太小了,无法精确记录一段话中所表达的全部内容,也就是在将输入编码成dense vectors的时候丢失了很多信息。所以本文就提出了一种可读写的外部记忆模块,并将其和inference组件联合训练,最终得到一个可以被灵活操作的记忆模块。接下来我们看一下其框架:
首先来说,模型主要包含一系列的记忆单元(可以看成是一个数组,每个元素保存一句话的记忆)和I,G,O,R四个模块。结构图如下所示:
简单来说,就是输入的文本经过Input模块编码成向量,然后将其作为Generalization模块的输入,该模块根据输入的向量对memory进行读写操作,即对记忆进行更新。然后Output模块会根据Question(也会进过Input模块进行编码)对memory的内容进行权重处理,将记忆按照与Question的相关程度进行组合得到输出向量,最终Response模块根据输出向量编码生成一个自然语言的答案出来。各模块作用如下: