2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019
一:发展脉络
记忆网络Memory Network - DeepWordThinker的文章 - 知乎 https://zhuanlan.zhihu.com/p/52302672
Seq2seq中的记忆依靠rnnCell或者lstmell实现,但是rnn和lstm的记忆能力实在有限,最多也就记忆十几个时间步长。因此当句子长度增长时或者需要添加先验知识时,seq2seq就不能满足此时对话系统的需求了。
比起人工增加RNN隐藏状态大小,我们更愿意任意增加加入模型的知识量,同时对模型本身做出最小限度的改变。基本上,我们能用独立存储器——作为一种神经网络能够按需读写的知识库——来增强模型。你可以把神经网络视为CPU,而且将这种新的外部存储器视为RAM。下面按照facebook ai研究所和google deepmind研究所的进展回顾一下:
Facebook AI:
2015你提出MEMORY NETWORKS,使用记忆网络增强记忆。(引用数:475)
2015年提出End-To-End Memory Networks,针对上一篇文章中存在的无法端到端训练的问题,提出了端到端的记忆网络。(引用数:467)
2016年提出Key-Value Memory Networks for Directly Reading Documents,在端到端的基础上增加了记忆的规模(引用数:68)
2017年提出TRACKING THE WORLD STATE WITH RECURRENT ENTITY NETWORKS,论文提出了一种新的动态记忆网络,其使用固定长度的记忆单元来存储世界上的实体,每个记忆单元对应一个实体,主要存储该实体相关的属性(譬如一个人拿了什么东西,在哪里,跟谁等等信息),且该记忆会随着输入内容实时更新(引用数:27)
Google DeepMind:
2014年提出Neural Turing Machines,神经图灵机,同facebook团队的记忆网络一样,是开篇之作。(引用数:517)
2015年提出Neural Random Access Machines,神经网络随机存取机。(引用数:55)
2015年提出Learning to Transduce with Unbounded Memory,使用诸如栈或(双端)队列结构的连续版本。(引用数:99)
2016年提出Neural GPUs Learn Algorithms,神经网络GPU,使用了带有读写磁头的磁带。(引用数:86)
本篇就从facebook团队的Memory Networks开始。
Memory Network出现之前,大多数机器学习的模型都缺乏可以读取和写入外部知识的组件,例如,给定一系列事实和故事,然后要求回答关于该主题的问题。原则上这可以通过如RNN等模型进行语言建模来实现,因为这些模型可以被训练在阅读了一串文字之后用来预测下一个输出。然而,它们的记忆(隐藏状态和权重编码)通常太小,并且不能精确地记住过去的事实(知识被压缩成秘籍的向量)。
一个Memory Network由一个记忆数组m(一个响亮的数组或者一个字符串数组, index by i)和四个组件(输入I,泛化G,输出O,回答R)组成。
四个组件的作用:
I:(输入特征映射) - 将输入转换为记忆网络内部特征的表示。给定输入x,可以是字符、单词、句子等不同的粒度,通过I(x)得到记忆网络内部的特征。
G:(更新记忆) - 使用新的输入更新记忆数组m。
二:End-To-End Memory Networks
记忆网络之End-To-End Memory Networks - 呜呜哈的文章 - 知乎 https://zhuanlan.zhihu.com/p/29679742