【论文翻译】End-To-End Memory Networks

  •  Astract:

    • 本文提出了一种基于大规模外部记忆的RNN,可以端到端训练,需要更少的监督数据,比前一个版本更实用。它也可以被看作是RNN研究的扩展,在这种情况下,每个输出符号执行多个计算步骤。
  •  1 .Introduction

    • 人工智能研究面临的两大挑战是,建立能够在回答问题或完成任务时执行多个计算步骤的模型,以及能够描述序列数据中长期依赖关系的模型。
    • 本文提出了一种新的RNN架构,在输出的时候可以从一个大的外部存储器读取多次。
  •  2 .Approach

    •  离散的输入 x1, ..., xn  存储在记忆当中 ,查询 q ,输出答案 a 。xi,q,a都包含symbols,来自V个words组成的字典。把所有的x放入一个buffer当中,然后寻找一个连续的表征来表示x和q。接下来处理这些连续的表征,从而得到输出a。这种连续的表征使得误差信号可以反向传递。
    •  2.1 Single Layer

      •  Input memory representation:

        •  x1 , .., xi已经被存储在memory当中。接下来,集合 {xi} 被转化为 记忆向量 {mi} 。mi的维度是d,计算方式是:把每个xi编码到d维连续空间中,在基础版本中使用的是矩阵 A (d × V )。每个查询 q 也进行同样方式的编码到 u,不过是用的另一个相同维度的矩阵 B,从而形成u。在embedding space当中,比较u和每一条mi,具体方式是先内积再softmax。
        • 【论文翻译】End-To-End Memory Networks
      •  Output memory representation:

        • 每个xi对应一个输出向量ci,简单来说——用另一个和AB矩阵相同维度的矩阵C 。答案向量o是这些输出向量ci的加权,权值来自于上一步的softmax计算结果。
        • 【论文翻译】End-To-End Memory Networks
        • 由于输入到输出的映射函数是光滑的,所以很容易使用梯度方法进行更新。
      •  Generating the final prediction: 

        • 前两步,我们得到了 输出向量o 和  输出向量的embedding u 。把这两者相加,通过矩阵 W(V × d)的变换。最后通过softmax产生预测的label:
        • 【论文翻译】End-To-End Memory Networks
      • 训练期间,矩阵A,B,C,W会一起学习,从而通过交叉熵,使用SGD,最小化a和a^的差别。
    • 【论文翻译】End-To-End Memory Networks
    •  2.2 Multiple Layers

      • 相比于单层,改进之处在于:
        • 1.  uk+1 =uk +ok 即:第二层的 u 来自于 第一层的 o + u。
        • 2. 每一层都有自己的 A,C矩阵。所有层的W,B共享,从而实现预测多个输出。【这个地方没仔细看】