End-To-End Memory Networks

2019-05-20 14:37:35

Paperhttps://papers.nips.cc/paper/5846-end-to-end-memory-networks.pdf

Codehttps://github.com/facebook/MemNN

1. Background and Motivation:

现在人工智能研究的两个挑战性的问题是:第一是能够构建模型,使其能够进行多个计算步骤,以服务于回答问题或者完成一个任务;另一个是可以建模时序数据中的长期依赖关系。最近,基于存储和 attention 机制的模型开始复兴,而构建这种存储对解决上述两个问题,提供了可能的方向。在前人的工作中,存储是建立在连续的表达上;从该存储中进行读取和写入的操作,以及一些其他的操作步骤,都通过神经网络的动作来建模。

在本文中,作者提出了一种新颖的 RNN 结构,其能够循环的从一个可能的大型额外记忆单元中多次进行读取,然后输出一个符号。我们的模型可以看做是连续的 Memory Network。我们的模型也可以看做是一种 RNNsearch 的版本,每输出一个符号都带有多个 hops。 我们的实验证明,长期记忆的 the multiple hops 对取得较好的效果,具有关键性的作用。训练这些记忆表达,可以以一种 end-to-end manner 来将其接入到我们的模型中。

2. Approach:

我们的模型将离散元素集合 x1, x2, .... xn(存储在 memory 中)和 query q 作为输入,然后输出一个 answer a。每一个 xi,q,a 都包含从字典中得到的符号表达。模型将所有的 x 写入到 memory,直至达到一个固定的 buffer size,然后为 x 和 q 找到一个连续的表达。这个连续的表达然后通过 multiple hops 来进行处理,输出 a。这就允许误差信号可以沿着多次记忆的访问进行传播,在训练过程中传递到输入。

2.1 Single Layer

Input memory representation:

假设我们给定了一个输入集合 x1, x2, ... , xi 并且存储在记忆单元中。整个 {xi} 的集合可以转换为 memory vector {mi},通过将每一个 xi 映射到连续的空间,最简单的情况就是,利用 an embedding matrix A。Query q 然后也被映射,得到一个中间状态 u。在 embedding space 中,我们通过采用内积,然后用 softmax 函数,计算 u 和 每一个 memory mi 之间的匹配:

通过这种方式定义的 p,是基于输入的概率向量。

Output memory representation :

每一个 xi 都有一个对应的输出向量 ci(通过另一个 embedding matrix C 来进行转换)。从记忆 o 中得到的响应,用概率向量 p 和 转换输入 ci 之间的加权求和:

因为从输入到输出的函数是平滑的,我们可以简单的计算其梯度,然后进行反传即可。其他最新提出的一些 memory 和 attention 的方法,也是采用这种方法。

Generating the final prediction :

在单个 layer 的情况下,输出向量 o 的和,以及 输入映射 u 都被用一个权重矩阵 W 进行传递,然后用 softmax 得到其预测的 label:

总体的模型如图 1 (a)所示。

2.2 Multiple Layers:

我们现在将模型拓展为可以处理 K hop operations 的情况。这些 memory layers 可以通过如下的方式进行堆叠:

1). 第一层上面的那些 layers 的输入是:来自 layer k 的输出 $o^k$ 以及输入 $u^k$ 的和:

    $u^{k+1} = u^k + o^k$.

2). 每一层都有其各自的 embedding matrices $A^k, C^k$,用于映射其输入 $x_i$。

3). 在网络的顶端,W 的输入也考虑了 the top memory layer 的输入和输出:

$\hat{a} = Softmax(W u^{K+1}) = Softmax(W (o^K + u^K))$。

作者在这个模型中,考虑了如下两种加权的方式:

1. Adjacent:某一层的输出是上一层的输入,即: $A^{k+1} = C^{k}$。我们也给定了如下的约束:a). 答案预测矩阵 要和 最终输出的映射相同,即:$W^T = C^K$, b). question embedding 要和 第一层的 input embedding 保持一致,即:$B = A^1$。

2. Layer-wise (RNN-like):  输入和输出 embedding 在不同layers 之间是相同的,即:$A^1 = A^2 = ... = A^K$ and $C^1 = C^2 = ... = C^K$。我们已经发现,在 hops 之间用一个线性映射 H 来更新 u 是有效的;即,$u^{k+1} = H u^{k} + o^k$。这个映射是沿着剩下的参数学习的。

==

End-To-End Memory Networks的更多相关文章

  1. LSTM学习—Long Short Term Memory networks

    原文链接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ Understanding LSTM Networks Recurren ...

  2. 论文笔记:Learning Dynamic Memory Networks for Object Tracking

    Learning Dynamic Memory Networks for Object Tracking  ECCV 2018Updated on 2018-08-05 16:36:30 Paper: ...

  3. Improving Sequential Recommendation with Knowledge-Enhanced Memory Networks(知识图谱)

    本文作者:杨昆霖,2015级本科生,目前研究方向为知识图谱,推荐系统,来自中国人民大学大数据管理与分析方法研究北京市重点实验室. 引言 经常上购物网站时,注意力会被首页上的推荐吸引过去,往往本来只想买 ...

  4. 论文阅读:Memory Networks

    一.论文所解决的问题 实现长期记忆(大量的记忆),而且实现怎样从长期记忆中读取和写入,此外还增加了推理功能 为什么长期记忆非常重要:由于传统的RNN连复制任务都不行,LSTM预计也够玄乎. 在QA问题 ...

  5. Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks(1)

    今天和陈驰,汪鑫讨论了一下,借此记录一下想法. 关于这篇论文,要弄清的地方有: 1.LSTMtree到底是从上往下还是从下往上学的,再确认一下 2.关于每个节点的标注问题 3.label的值到底该怎么 ...

  6. Sequence Models and Long-Short Term Memory Networks

    LSTM’s in Pytorch Example: An LSTM for Part-of-Speech Tagging Exercise: Augmenting the LSTM part-of- ...

  7. 论文阅读及复现 | Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks

    两种形式的LSTM变体 Child-Sum Tree-LSTMs N-ary Tree-LSTMs https://paperswithcode.com/paper/improved-semantic ...

  8. Attention and Augmented Recurrent Neural Networks

    Attention and Augmented Recurrent Neural Networks CHRIS OLAHGoogle Brain SHAN CARTERGoogle Brain Sep ...

  9. Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks-paper

    Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks 作者信息:Kai Shen ...

随机推荐

  1. mysql8.x 新版本jdbc连接方式

    旧版本,MySQL Connector/J 5.x 版本的连接方式:url = jdbc:mysql://localhost:3306/thrcloud_db01?useUnicode=true&am ...

  2. 远程桌面远程代码执行漏洞(CVE-2019-0708)Poc

    此漏洞影响范围: Windows 7 Windows Server 2008 R2 Windows Server 2008 Windows 2003 Windows XP Windows 8和Wind ...

  3. Multiple declaration for 'fd_set'

    如果程序编译时报 [C++ Error] winsock2.h(109): E2238 Multiple declaration for 'fd_set' 这样的错误,可以尝试在,winsock2.h ...

  4. 前端知识总结--2 js部分

    1. JavaScript的『预解释』与『变量提升』 先看以下代码输出啥? var a= 1; function f() { console.log(a); var a = 2; } f(); 首先答 ...

  5. vscode beautiful配置

    在工作目录下建立.jsbeautifyrc文件 官方文档 { "brace_style": "none,preserve-inline", "inde ...

  6. GITHUB下载ANDRIOD源码

    1 git clone https://android.googlesource.com/device/common.git 2 git clone https://android.googlesou ...

  7. new char()与new char[]区别

    char *pc = new char(15); //开辟一个内存单元,并用括号里的初始化(用15来初始化你定义的指针所指向的那个char)char *pc = new char[15]; //开辟一 ...

  8. es 启动问题

    max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] vim / ...

  9. [LuoguP1462]通往奥格瑞玛的道路

    题目链接 题意简述:现在有一个图,每经过一个点就会交钱,走一条路就会扣血.在血量>0的前提下,要从1走到n点,并且要求路径上交钱的最大值最小. 解题思路:首先最大值最小,我们选择二分.目前有两个 ...

  10. Linux https认证原理

    HTTPS在传输的过程中会涉及到三个密钥:服务器端的公钥和私钥,用来进行非对称加密客户端生成的随机密钥,用来进行对称加密一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步.1.客户端向服务 ...