返回介绍

PaperWeekly 第十一期

发布于 2025-01-21 00:48:33 字数 8806 浏览 0 评论 0 收藏 0

引言

Memory Networks 是由 Facebook 的 Jason Weston 等人提出的一个神经网络框架,通过引入长期记忆组件(long-term memory component) 来解决神经网络长程记忆困难的问题。在此框架基础上,发展出许多 Memory Networks 的变体模型,本期精选了 5 篇 Memory Networks 相关的论文,分别如下:

1、Memory Networks

2、End-To-End Memory Networks

3、Ask Me Anything: Dynamic Memory Networks for Natural Language Processing

4、THE GOLDILOCKS PRINCIPLE: READING CHILDREN’S BOOKS WITH EXPLICIT MEMORY REPRESENTATIONS

5、Key-Value Memory Networks for Directly Reading Documents

Memory Networks作者

Jason Weston, Sumit Chopra, Antoine Bordes

单位

Facebook AI Research

关键词

Question Answering, Memory Network

文章来源

ICLR 2015

问题

为解决长期记忆问题,提出一类称为 Memory Networks 的模型框架,基于该框架构造的模型可以拥有长期(大量) 和易于读写的记忆。

模型和思路

Memory Networks 可以理解为一种构造模型的框架,该类模型由如下五部分组成:

1、记忆 m: 模型记忆的表示,由一个记忆槽列表[m1-mi]组成,可被 G,O 组件读写

2、组件 I (input feature map): 将模型输入转化模型内部特征空间中特征表示

3、组件 G (generalization): 在模型获取新输入时更新记忆 m,可以理解为记忆存储

4、组件 O (output feature map): 根据模型输入和记忆 m 输出对应于模型内部特征空间中特征表示,可以理解为读取记忆

5、组件 R(response): 将 O 组件输出的内部特征空间的表示转化为特定格式,比如文本。可以理解为把读取到抽象的记忆转化为具象的表示。

假设模型输入为 x:

  • 记忆的更新过程表示为 mH(x) = G(mi, I(X), m), ∀i, H(x) 为选择记忆和遗忘机制
  • 记忆的读取过程表示为 r = R(O(I(x), m))

再次强调 Memory Networks 是一类模型框架,组件 I,G,R,O 可以使用不同的实现

资源

  • facebook MemNN 实现

简评

文章提出了一个通用的解决长期记忆问题的算法框架,框架中的每一个模块都可以变更成新的实现,可以根据不同的应用场景进行适配。

End-To-End Memory Networks作者

Sainbayar Sukhbaatar, Arthur Szlam, Jason Weston, Rob Fergus

单位

Dept. of Computer Science Courant Institute, New York University

Facebook AI Research

关键词

Memory Networks, End-to-end, Question Answer

文章来源

NIPS 2015

问题

本文提出了一个可以端到端训练的 Memory Networks,并且在训练阶段比原始的 Memory Networks 需要更少的监督信息。

模型

本文提出的模型包括单层和多层两种情况。下面先介绍单层情况。

1、单层

如图(a) 所示,输入的序列可以通过不同的 Embedding 矩阵 A 和 C 分别被表示成 Input 和 Output 向量的集合。同样的,通过 Embedding 矩阵 B,我们将 Question 表示成一个向量 u,向量 u 和 Input 向量集合中的每个向量计算内积,然后通过 softmax 得到一个概率向量 p(attention 过程),概率向量 p 中的每一个概率值表示每个 Output 向量对应输出的权重大小。通过 p 和 Output 向量集合,对 Output 中的向量进行加权求和得到输出向量 o,将输出向量 o 和问题向量 u 相加,再最后通过一个权值矩阵 W 和 softmax 来预测最终的 label。

2、 多层

多层的情况如图(b) 所示,每层的输出向量 oi 和问题向量 ui 相加获得新的问题表示 ui+1,然后重复上述单层的过程,直到最后一层通过 softmax 来预测 label。

本文在 bAbi 数据集、Penn Treebank 以及 Text8 三个数据集上进行实验,均取得了较好的实验效果。

资源

  • [bAbi] (https://research.facebook.com/research/babi/)

简评

本篇论文提出的模型是在 Facebook 提出的原始 Memory networks 基础上进行的改进。在 Memory networks 的框架下,将原来依赖于中间监督信息的非端到端 Memory networks 改进为端到端的 Memory networks。基础模型之外,本文针对时序编码提出了一些有趣的 trick,可作参考。

Ask Me Anything: Dynamic Memory Networks for Natural Language Processing作者

Ankit Kumar, Ozan Irsoy, Peter Ondruska, Mohit Iyyer, James Bradbury, Ishaan Gulrajani, Victor Zhong, Romain Paulus, Richard Socher

单位

MetaMind

关键词

Memory Networks, Neural Networks, Question Answering

来源

arXiv

问题

Question Answering: 给定一段 Context,一个与此 Context 相关的 Question,利用模型生成一个单词的 Answer。

模型

下图给出了 dynamic memory networks 的框架。

首先 Context 和 Question 都经过 Gated Recurrent Unit(GRU) 转换成成 vector 形式,分别作为 episodic memories e 和 m 储存下来。e 代表的是一连串 vectors,Context 中每句话都会被转换成一个 e vector,然而 Question 只会被转换成一个 m vector。

下一步是 episodic memory updates,在每一个 episode, 每一个 e vector 会和 m 计算一个 attention,本文中使用一个 two layer feed forward neural network 计算 attention score。然后利用 attention scores 来 update episodic memories。

输出答案也采用了一个 GRU decoder

这里的 a0 是最后一个 memory state m。

简评

总体来说这是一篇很有趣的文章。其中应用了 episodically update memory 的想法,期望模型能够借此学到一些 logical reasoning 的能力。并且模型中多次用的 GRU,每一层都使用 GRU 的 encoding 或者 decoding,比较有趣。

然后我认为本文的写作有一些问题,比如我自始至终也没有找到 e 的下标究竟代表什么,我的理解是每一句话都被 encode 成一个 e 作为 episodic memory,那么每次 Update 其中一个 e 都要经过所有其他的 e 是为了更好的融合所有 context sentences 的信息吗?那么每一层的 hidden states h 究竟又是什么?上一层的 hidden state 如何更新到下一层?文章中似乎没有给出明确的公式,也没有在 model figure 中展示出来,似乎写作不够明确。既然 e 是有 h 穿过层层 GRU 得到,我会揣测下一层的 h 是上一层 e 的一个 function。

THE GOLDILOCKS PRINCIPLE: READING CHILDREN’S BOOKS WITH EXPLICIT MEMORY REPRESENTATIONS作者

Felix Hill, Antoine Bordes, Sumit Chopra & JasonWeston

单位

Facebook AI Research

关键词

Memory Networks,self-supervised training,window-based memories,The Children’s Book Test(CBT)

文章来源

ICLR2016

问题

本文对于语言模型(RNN/LSTM/Memory Network 生成)到底能够多好或者在多大程度上表示 The Children’s Book 做了一项测试。测试结果表面 Memor Network 上的效果最好。

模型

文中主要对比了一系列 state-of-the-art 的模型,每个用不同的方式对之前已经读过的文本进行编码,然后进行 CBT 评比。

实验中使用的模型以及结果如下:

CBT 简介:数据来自 Project Gutenburg 所创建的数据集,里面的内容都选自儿童书籍。每 20 句话产生一个问题,让不同的语言模型去进行预测,看谁预测的效果更好。

问题产生于 20 句话中的某一句话抠掉一个词 A。候选集产生分为如下两步:

1、从构成 20 句话的词表中随机选出和抠掉词 A 具有相同词性的词集合 C 。

2、从 C 中随机抽选 10 个词作为答案的备选集。

实验最后在 CNN QA 的语料上进行测试,在新闻文章中识别命名实体,得到的准确率能到 69.4%.

资源

  • n-gram language model:the KenLM toolkit (Scalable modified Kneser-Ney language model estimation.)

简评

本文提供了一种测试语言模型效果的测试方法,这对于语言模型的评判做出了贡献。在做实验过程中,作者还发现在单层记忆表示中文本被编码的数量对结果有很大的影响:存在一个范围,使得单个词信息和整个句子的信息都得以较好的保留。

Key-Value Memory Networks for Directly Reading Documents作者

Alexander H. Miller, Adam Fisch, Jesse Dodge, Amir-Hossein Karimi, Antoine Bordes, Jason Weston

单位

Facebook AI Research

Language Technologies Institute, Carnegie Mellon University

关键词

Memory Networks, Key-Value, Question Answering, Knowledge Bases

文章来源

arXiv 2016

问题

鉴于知识库有知识稀疏、形式受限等问题,本文提出了一种可以通过直接读取文档来解决 QA 问题的新方法 Key-Value Memory Networks。

模型

如下图所示,Key-Value Memory Networks(KV-MemNNs) 模型结构与 End-to-end Memory Networks(MemN2N) 基本相同,区别之处在于 KV-MemNNs 的寻址(addressing)阶段和输出阶段采用不同的编码(key 和 value)。

本文主要提出了以下几种 Key-value 方法:

1、KB Triple

针对知识库中的三元组(subject, relation, object),将 subject 和 relation 作为 Key,object 作为 Value。

2、Sentence Level

将文档分割成多个句子,每个句子即作为 Key 也作为 Value,该方法与 MemN2N 相同。

3、Window Level

以文档中每个实体词为中心开一个窗口,将整个窗口作为 Key,中间的实体词作为 Value。

4、Window + Center Encoding

该方法与 Window Level 基本相同,区别之处在于中心实体词与窗口中的其他词采用不同的 Embedding。

5、Window + Titile

很多情况下文章的题目可能包含答案,因此在上述提出的 Window 方法基础上,再添加如下 Key-value 对:Key 为窗口,Value 为文档对应的 title。

本文为了比较使用知识库、信息抽取和直接采用维基百科文档方法之间的效果,构建了新的语料 WIKIMOVIES。实验结果表明,KV-MemNNs 直接从文档读取信息比信息抽取方法的效果好,却仍比直接利用知识库的方法差不少。其中几种 Key-Value 方法中,“Window + Center Encoding”方法效果最好。此外,本文还在 WikiQA 上进行实验,验证了 KV-MemNNs 的效果。

资源

  • [WikiQA](https://www.microsoft.com/en-us/download/details.aspx?id=52419)
  • [WikiMovies](https://research.facebook.com/research/babi/)

简评

本篇论文提出了一个在新的 Memory Networks 变体 Key-Value Memory Networks,旨在探索在 QA 过程中,如何消除采用知识库和自由文本(维基百科)之间的效果差距(gap),并为此构建了一个新的数据集 WikiMovies。

总结

长程记忆(long-term memory)问题一直是深度学习中的一个难点,Attention 机制就是解决这一问题的经典方法。本文介绍的几篇 Memory Networks 试图通过构建长期存储记忆组件来解决过去神经网络无法存储过长内容的问题。如何存储大量的外部信息以及如何利用这些外部信息推断是 Memory Networks 乃至很多 NLP 任务的难点。本期引入的这几篇论文中,Memory Networks 提出了一个整体的框架,End-To-End Memory Networks 使 memory networks 可以端到端的训练学习。Key-Value Memory Networks 主要解决外部信息如何存储表示,而 THE GOLDILOCKS PRINCIPLE 这篇论文则在推理方面有所创新,直接利用 attention 的打分来预测答案。目前深度学习方法中,无论是存储更新长期记忆的方法还是结合长期记忆进行推理的方法都还很初级,仍需诸君努力前行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文