Advertisement

《End-to-end memory networks》

阅读量:

该系统概述了这一项基于端到端训练的记忆网络MemN2N,并依赖外部知识库进行运算。

贡献

  • 可以端到端训练
  • multiply hop attention
  • 许多实现细节可以参考

任务

任务说明:该文章基于问答数据集构建了一个知识库系统,并将这些句子作为知识库存储起来。系统能够根据具体问题进行查询与解答,并最终的回答结果以单个单词形式呈现。

在这里插入图片描述

模型

模型的架构如下所示:

在这里插入图片描述

左边(a)体现了单hop attention的架构;右边(b)构成了多hot attention的结构。

统计所有句子中涉及的所有词汇、查询中的词汇以及答案中的词汇总数为V;同时将每个词汇表示为纬度d的空间向量。

对于知识库,每个句子表示为xi,整个知识库表示为{xi}。

分别定义三个d维词向量表示矩阵\mathbf{A}\mathbf{C}\mathbf{B}。其中\mathbf{A}用于将输入序列\{\mathbf{x}_i\}中的每一个句子转换为对应的input向量\{\mathbf{m}_i\};类似地,在编码器中使用矩阵\mathbf{C}对输入序列进行编码生成输出向量序列\{\mathbf{c}_i\};其中查询词\mathbf{q}经过变换后得到编码器输出u(维度仍为d)。具体变换机制将在后续内容中详细阐述。

该研究提出了一种基于注意力机制的矢量化方法:具体而言,在输入数据经过预处理后,
首先将目标矢量u与辅助矢量集合{mi}之间的相似性关系建模,
随后通过该模型计算出各个辅助矢量在目标矢量中的重要性权重,
最后在该辅助矢量集合上按照计算出的权重进行加权累加,
从而得到最终的目标输出矢量o。

p i = Softmax(u Tm i) o = ∑ p i*c i
5.

向量o与代表query的向量u连接后经过线性变换随后通过Softmax函数获得最终回答单词aˆ。如公式所示其中W同样是d*V维矩阵

aˆ = Softmax(W (o + u)) 以上就是单hop 的结构,下面看多hop的结构。

右图结构如下:

  1. 在上面第4步得到向量o之后,计算下一hop的query向量:迭代公式如下:

u k+1 = u k + o k 2. 最终结果aˆ的计算公式如下(总共进行了K跳): aˆ = Softmax(W (o K + u K))

实现细节

本文有一些重要的实现细节需要说明:

相邻权重绑定:在多跳模型中存在多个矩阵Ak与Ck这一现象会导致提升模型复杂度。为此作者提出了一种创新方法即通过让相邻两个矩阵共享权重的方式使得Ck等于Ak+1。同时为了简化计算过程我们假设初始值A等于A₁并令W等于最终输出层的结果层节点数CK。

l kj =(1−j/J)−(k/d)(1−2j/J)

式中

  1. 位置编码机制引入了句内单词顺序的信息。此外,在处理不同句子之间顺序关系时,作者采用了与A、C相同的权重共享方法,并引入了额外的矩阵TA和TC。从而解决了任务示例中的kitchen与bedroom分类问题。进而表明,在计算每个句子对应的向量表达时,在前一步骤的基础上(即对2中的单词进行加权求和),需进一步加入TA(i)以获得最终表达。此外,在优化过程中,作者还随机将TA矩阵的一部分(约10%)置为空阵以进一步提升模型性能。

全部评论 (0)

还没有任何评论哟~