Memory Network
- 参考和理解
- Memory Networks
- End-To-End Memory Networks
- Ask Me Anything: Dynamic Memory Networks for Natural Language Processing(DMN)
- Large Memory Layers with Product Keys
- Episodic Memory in Lifelong Language Learning
- Improving Chinese Word Segmentation with Wordhood Memory Networks
- ⭐Neural Symbolic Machines: Learning Semantic Parsers on Freebase with Weak Supervision(使用键值记忆的 seq2seq 模型)
- 思考
参考和理解
深度学习和自然语言处理中的attention和memory机制
Memory Networks
Facebook AI Research
ICLR 2015
原文:https://arxiv.org/abs/1410.3916
论文总结:记忆网络之Memory Networks
memory network核心思想就是为传统的推理模型加了一个可读写的外部memory component(记忆组件)以便更好地记忆long-term memory,从而成为一个动态的知识库(类似于freebase)来为推理组件提供更完整的推理信息。论文作者将该模型用在Q&A上来对其进行详细的说明。
End-To-End Memory Networks
Facebook AI Research / New York University
原文:https://arxiv.org/abs/1503.08895v4
论文总结:记忆网络之End-To-End Memory Networks
这篇文章是上面一篇文章的基础之上提出来的端到端的训练方式。并提出重复的去提取有用的信息,实现多次推理的过程。
Ask Me Anything: Dynamic Memory Networks for Natural Language Processing(DMN)
原文:https://arxiv.org/abs/1506.07285
论文总结:记忆网络之Dynamic Memory Networks
本文提出的DMN网络模型包含输入、问题、情景记忆、回答四个模块,架构图如下所示。模型首先会计算输入和问题的向量表示,然后根据问题触发Attention机制,使用门控的方法选择出跟问题相关的输入。然后情景记忆模块会结合相关的输入和问题进行迭代生成记忆,并且生成一个答案的向量表示。最只答案模块结合该向量以及问题向量,生成最终的答案。
![](https://i-blog.csdnimg.cn/blog_migrate/c3dd926a3c48074d82c869536c4eef8a.png)
Large Memory Layers with Product Keys
NeurIPS 2019
原文:https://arxiv.org/abs/1907.05242
code:https://github.com/facebookresearch/XLM
论文总结:LeCun力荐:Facebook推出十亿参数超大容量存储器
本文介绍了一种可以轻松集成到神经网络中的结构化存储器。该存储器在设计上非常大,架构的容量显著增加,参数数量可达十亿个,而增加的计算成本基本上可忽略不计。存储器的设计和访问模式基于产品密钥,可实现快速准确的最近邻搜索。
memory layer 的位置:
Episodic Memory in Lifelong Language Learning
DeepMind
Proceedings of NeurIPS 2019
原文:https://arxiv.org/abs/1906.01076
论文总结:201906持续学习论文-终身语言学习中情节记忆
- 问题:在持续学习中,数据分布变化时,这些模型都无法重用之前学到的知识(迁移学习中的领域适配也是在解决这个问题)
- 方法:实现了一种情节记忆模型,可以稀疏经验回放并在本地适配时减缓灾难性遗忘。
核心思想:
- 稀疏经验回放:
经验回放,即从记忆中随机选择样本来持久化。我们的模型会非常稀疏(注:这里的稀疏指的是训练过程中选择持久化样本的间隔)的做经验回放,通过联合新获取的知识与已经存在记忆中的知识到模型中。我们发现对于学习新样本,1%的经验回放就足够了。 - 本地适配(重要创新点):
本地适配,即用基于记忆的参数适配模型,使用记忆中找回的样本更新该模型参数,然后用它来做预测。(注:相当于永远有一个基础模型,每次预测之前会复制一份该模型,用和测试样本相似的保存在记忆中的训练样本做微调,再做预测,然后丢弃该模型,只保留基础模型。)
Improving Chinese Word Segmentation with Wordhood Memory Networks
ACL 2020
原文:https://www.aclweb.org/anthology/2020.acl-main.734/
code:https://github.com/SVAIGBA/WMSeg
论文总结:中文分词SOTA模型:Wordhood Memory Networks
一般的模型在处理如”部分居民生活水平“这样带有歧义的句子时,往往很难在这些有歧义的字序列中间找到一个非常好的切分点。而新模型在处理这样的输入时,能够通过对”键-值记忆对“中所携带的,包含某个字的成词功能的信息进行建模——用”键-值神经网络“对这种信息加权,以达到在不同语境下,区别地利用这些信息,帮助模型性能的提升。
⭐Neural Symbolic Machines: Learning Semantic Parsers on Freebase with Weak Supervision(使用键值记忆的 seq2seq 模型)
ACL 2017
原文:https://arxiv.org/abs/1611.00020
code:https://paperswithcode.com/paper/neural-symbolic-machines-learning-semantic-1#code
论文总结:[论文简介] 神经符号机:通过弱监督在 Freebase 上学习语义解析器
神经符号机:它包含
- 神经程序员,即一个 seq2seq 模型,使用键值记忆将语言映射到程序来处理自然语言问题的组合性;
- 符号计算机,即一个 Lisp 解释器来执行程序,并通过剪裁搜索空间来找到好的程序。
思考
- 为什么需要引入memory?
基于记忆的模型通常应用于一些特定任务中,如语言建模和阅读理解。在这些任务中,长时间保存信息应该很有用。记忆的概念是非常通用的:知识库或表可以充当记忆,而记忆也可以根据整个输入或它的特定部分填充。 - memory存储的对象是什么?
- key:question
- value:sql 的模式
- 怎么得到该对象?
- memory network/layer 应该放在什么位置?
- 从memory检索到的知识怎么融入模型?