论文札记之 - End-To-End Memory Networks-阿里云开发者社区

开发者社区> 人工智能> 正文

论文札记之 - End-To-End Memory Networks

简介:     Yann Le Cun 大犇在 nips2016 列举 AI 的一些 obstacles,其中提到 Intelligence & Common Sence = Preception + Predictive Model + Memory  + Reasoning & Planning,其后有一些 slide 专门介绍了 Memory Netwo
    Yann Le Cun 大犇在 nips2016 列举 AI 的一些 obstacles,其中提到 Intelligence & Common Sence = Preception + Predictive Model + Memory  + Reasoning & Planning,其后有一些 slide 专门介绍了 Memory Network 在 bAbI tasks ( Facebook AI 的文本理解/推理任务生成器 ) 上的应用。

摘要
    文章提出 End-To-End 的 Memory Networks 框架,是一种新型的 RNN 架构,在输出最终结果之前会从一个外部存储器中多次循环读取数据,同时对2015年 J.Weston 提出的 Memory networks 进行对比,认为是其模型的连续形式,并且之前的模型不是很容易用bp进行训练,而且在网络的每一层需要监督学习。作者认为 End-To-End 是其模型的一大特点,能够从 input 到 ouput 直接训练,可以在很多任务上进行拓展,包括一些实现监督学习比较困难的任务,如语言模型,现实领域的监督问答等等。

bAbI 简介

    下图是这篇 ETE Memory Network 在 bAbI Tasks 上应用的截图,方便了解下 bAbI  任务,左上是存储在 memory 中的 story ,也就是上下文,左下是 Question 和 Answer , 右边是 Answer生成的概率分布,整体来看类似于阅读理解任务。

    s3

实现方法
    摘要中和 J.Weston 15年提出的网络进行了对比,简要的介绍下 J.Weston 的 Memory Networks。 网络是由一个 memery m 和 I、G、O、R 四个组件构成,I 对输入特征进行 map,映射到特征表示空间 input ;G 组件利用 input 更新 memory ;O 组件类似 RNN 的输出,根据最新的输入 input 和 memory 中的状态 state , 输出 output 向量. R 组件就是对 output 进行解码,转换成设计好的输出形式,如 actions, labels。看起来和 LSTM 区别不大, memory 类似 LSTM 的 cell 。
    本文中的 End-To-End Memory Networks 实现方法也基本类似,模型包含了 memory,就是一串输入向量,一个 query,一个 output,和一个最终的 answer。
    看下模型的框架,如下图所示,(a)是单层的结构,(b) 是多层的结构,就好比是左边是 RNN 的一个神经元,右边是一串。
 framework
   在一层模型中有如下的计算流
  1. Input memory represention :  上下文首先通过 embedding 矩阵 A 得到 m , 然后 输入 query embedding 为 u , 经过s1 , 生成 weight 向量 p .
  2. Output memory represention : 上下文再通过 embedding 矩阵 C 得到 c,将weight向量 pc 做点积  s2 ,的,得到输入向量 o .
  3. Generating the final prediction:  输出向量 o 和 query 的 embedding 向量 u sum 后 接一个softmax s3产出最终结果 a 。
  4. 模型的参数应该是不少的,AC 参数矩阵的 size 是 d * V ; W 参数矩阵的 size 是 V * d , V是词典的大小,d 是embedding 的维度。
   对把单层结构连成串之后,如右图所示,计算过程比较直观,就不赘述了,作者提出了两种节约参数的方法:
  1. Adjacent : 当前层的 embedding 权值矩阵,是上一层的输入 embedding 权值矩阵 s4
  2. Layer-wise (RNN-like) : 参考 RNN 的方式,在时间序列上的参数共享 s5s6 .
实验细节

   总体来看,模型框架不是很复杂,作者对实验中的一些细节进行提及,比如,如何做 sentence representation ,第一种做法是采用 BoW 方法,对句子中所有的 word 的 embedding 进行 sum ,但是缺点很明显,失去了word的位置信息。 因此需要把位置信息 encode 进去,称为 position encoding (PE ) , 做法也比较简单,如下
  1. 对于句子 xi , 有 j 个 words,  A 是 embedding 矩阵, BoW 的做法  s6
  2. 加入 position encoding 后,s7 , l 是一个列向量,s8 , J  是句子中词的个数.
   另外一个细节是,对于上下文语料而言,对 memory 的要求不仅仅局限于对阅读语料进行 embedding ,而是需要进行上下文推理,比如 bAbI 图中的 "mary went back to the bathroom" , "mary moved to the office",模型需要定位到 mary 的时间线,从而推理 mary 现在不在 bathroom,而是在 office 。所以作者提出 temporal encoding , 将 memory 的计算调整为 s8 , s9是一个专门encodes 时序信息的参数矩阵 s9的第 i 行,对输出 c 也是同样的操作 s9 ,s9 和 s11 都是在训练过程中进行学习。

结语
   文章开始提出的模型框架并不复杂,但是在实验过程中不断的优化,提出 position encoding 和 temporal encoding 方法进行优化,还是值得学习的,在实际例子中也可以尝试下。

References

[1] J. Weston, S. Chopra, and A. Bordes. Memory networks. In International Conference on Learning Representations (ICLR) , 2015.

[2] Sainbayar Sukhbaatar,Arthur Szlam,JasonWeston, and Rob Fergus.End-To-End Memory Networks.Proceedings of NIPS, 2015.

[3] https://github.com/facebook/MemNN/blob/master/README.md
   


    

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章