【论文笔记】End-To-End Memory Networks

文章目录
  1. 1. 前期知识补充
    1. 1.1. 记忆网络
  2. 2. 论文主要内容
    1. 2.1. 论文概述
    2. 2.2. 模型结构
    3. 2.3. 单跳模型结构
    4. 2.4. 多跳模型结构
    5. 2.5. 实验部分
    6. 2.6. 训练细节

本篇笔记基于《End-To-End Memory Networks》。

注:笔记学习参考深度之眼人工智能Paper训练营NLP方向第二十课时课程。

前期知识补充

记忆网络

记忆网络是通过设计记忆模块存储序列模型的中间结果以防止丢失信息。
意义:可以解决RNN中信息丢失的问题。

论文主要内容

论文概述

作者提出了一个端到端的记忆神经网络模型,它属于先前记忆模型的改进,可以从端到端进行直接训练,拥有更大的记忆并且需要更少的监督,同时在QA系统和语言模型上都取得了较好的结果。

模型结构

文章提出的模型如下:

这个模型的特点在于其多跳结构,图左边部分只包含一跳结构,右边部分结构为3跳。

单跳模型结构

整个模型由I,G,O四个部分组成:
input memory representation:给定的输入x1,x2,…,xi被转换为记忆向量mi存储到记忆模块中,记忆模块的大小是dxV,也就是矩阵A。同时问题q也进行矩阵嵌入作为B,大小和矩阵A相同来获得一个内部状态u。通过u和mi的计算来得到一个内部输出p:

Output memeory representation:每个xi都有一个对应的ci向量形成另外一个嵌入矩阵C,对应的输出通过输入的权重p相乘得到:

Generating the final prediction:在单层结构中,输出向量o和输入的嵌入u的和通过最后的权重矩阵W(Vxd)和一个softmax层来输出预测标签:

多跳模型结构

现在将单跳模型扩展为多跳模型,也就是上图中的右半部分。
上一输出的ok和uk通过k层生成一个新的状态uk+1:

每一层都有通过xi生成自己的嵌入矩阵Ak和Ck,但是,如下文所述,它们受到限制,以方便培训和减少参数数。
最顶层的记忆模块计算如下:

多跳结构中包含两种模型:
Adjacent:当前的输入矩阵是上一层的输出矩阵:

同样也限制了最后的权重矩阵Wt=Ck。(b)问题嵌入,以匹配第一层的输入嵌入,即B=A1。

Layer-wise(RNN-like):即不同的输入和输出层都是一样的,共享同一套参数。


其中可以加入一个参数H来提高训练的准确率:

实验部分

问答对实验:

语言模型实验:

训练细节

10%的bAbI数据集被划分出来作为验证集。学习率设置为0.01,每训练25个epoch,学习率减半,一共训练100个epoch。没有动量和权重设置。权重为初始化的高斯正态分布,δ=0.1。所有的训练的batch-size都是32.梯度中使用了L2范式,大于40的标量会被除以40.当验证损失停止下降时,重新插入Softmax层并重新开始训练。我们称之为线性开始(LS)训练。在LS训练中,初始学习率为设置为η=0.005。记忆能力仅限于最近的50句话。由于句子的数量和每个句子的字数因问题而异,所以空符号把它们都垫到一个固定的大小。空符号的嵌入被限制为零。