深度学习 - 记忆网络
记忆网络一些方法梳理
1. 记忆网络产生背景
现代计算机的一个巨大优势就是可以对信息进行存储。但是,大多数机器学习模型缺少这种可以读取、写入的长期记忆的内存结构;
RNN、LSTM这样的神经网络原则上可以实现记忆存储,但是,它们由隐藏状态和权重编码包含的记忆太小了,不能记忆足够信息;
基于此,Facebook AI Research提出了一种用于问答任务的记忆网络,实现了记忆的存储;
广义上讲,循环神经网络也是记忆网络的一种;
2. 记忆网络结构:
利用记忆组件保存场景信息,以实现长期记忆的功能
Input vector:
将输入x(字符、单词、句子等不同的粒度)转成内部特征向量的表示I(x);
Generalization:
根据新的输入,更新记忆单元中的memory slot(内存槽);
简单地把读到的对话组里的每一句话的向量空间模型,插到记忆的list里,这里默认记忆插槽比对话组句子还多
Output feature map:
根据记忆单元和新的输入,输出特征;
把记忆数组遍历,挑出最大的值。最后,O返回一个长度为k的数组
例如:也可以选出top k个
Response:
最后,解码输出特征o,并给出对应的响应 ;
R可以是一个RNN网络生成回答的句子,利用O得到的输出,返回一个词汇w。将输入和选择的记忆单元与此表中的每个单词进行评分Sr,然后选择得分最大的单词作为回答;
更简单的话可以计算相关分数, 比如W是一个单词集合(dictionary)
即将输入I(x)与第一个选择出来的记忆合并,然后再接着选择第二个与之相关的记忆;
实例:
根据question:“where is the milk now?”,得到最相关的记忆mo1=“Joe left the milk”,然后由于k=2,得到mo2== “Joe travelled to the office”,然后将[x,mo1,mo2]与词表W中的每个单词w进行评分,得到得分最大的单词”office”作为回复;
3. 端到端的记忆网络
单层和三层网络
端到端记忆网络(End to End Memory Network)_小镇大爱的博客-CSDN博客_端到端记忆网络
4. 2017年,Facebook AI Research提出了一种新的基于记忆网络的循环实体网络,其使用固定长度的记忆单元来存储世界上的实体,主要存储该实体相关的属性,且该记忆会随着输入内容实时更新
Google DeepMind也提出了多种记忆网络,如:NeuralTuring Machines、Neural Random Access Machines以及使用像栈或(双端)队列结构的连续版本等;
利用外部存储形式的机器学习方式已经成为机器学习领域中一个热点方向
更多推荐
所有评论(0)