RNN解决长期依赖的能力随着文本长度的增加越来越差,attention机制是解决这种问题的一种思路,今天我们再来看另外一种思路,深度记忆网络。Deep Memory Network在QA和Aspect based Sentiment等NLP领域都有过成功的实践,但其提出者本身是以通用模型的形式提出的。
Introduce of Memory Network
Memory Network是一种新的可学习模型,它使用一个整合了长期记忆的一个组件(称为Memory)作为推断组件(inference components)来进行推理。长期记忆Memory可以被读和写,以实现预测的最终目的。原论文作者认为RNN的记忆问题(无法完成简单的复制任务,即将输入原样输出)也可以被Memory Network解决。它核心思想来自机器学习文献中成功应用的使用外置的可读写的记忆模块来进行推断。
Memory Networks
一个记忆网络是由一个记忆 m m m(一个以 m i m_i mi作为索引的数组对象)和4个组件 I , G , O , R I,G,O,R I,G,O,R组成。其中:
- I:(input feature map) - 将输入转化为中间特征表示。
- G:(Generalization) - 给定新输入的条件下更新旧记忆。原作者称之为泛化,因为网络在该阶段有机会将记忆压缩和泛化以供后面使用。
- O:(Output feature map) - 给定新输入和当前记忆状态,产生一个新的输出(在特征表示空间上)。
- R:(Response) - 将output(即O)转化到目标形式(例:一个文本的回复或者一个动作)
Memory Networks的处理过程
给定一个输入x(例:字符、词或者句子(视处理粒度而定),图像或者声音信号),模型处理过程如下:
- 将x转化为中间特征表示 I ( x ) I(x) I(x)。
- 使用新输入更新记忆 m i m_i mi: m i = G ( m i , I ( x ) , m ) , ∀ i m_i=G(m_i, I(x), m), \forall i mi=G(mi,I(x),m),∀i
- 使用新输入的中间特征表示和记忆计算输出特征 o o o: o = O ( I ( x ) , m ) o=O(I(x), m) o=O(I(x),m)
- 最后,解码输出特征到最终回复: r = R ( o ) r=R(o) r=R(o)
这个过程在训练和测试时都适用,两者之间的区别在于:测试时记忆也会被存储,但模型参数 I , G , O , R I,G,O,R I,G,O,R将不会再更新。 I , G , O , R I,G,O,R I,G,O,R可以使用现有任何机器学习的方法来实现(SVM, 决策树)。
组件 I I I: I I I可以使用标准的预处理步骤来实现,比如输入文本的语法分析、指代消解、实体识别等。它同样也可以将输入编码到一个中间的特征表示(将文本转化为稀疏或者稠密的特征向量)。
组件 G G G: 最简单的G的形式可以是将 I ( x ) I(x) I(x)储存起来的槽位(slot):
m H ( x ) = I ( x ) m_{H(x)}=I(x) mH(x)=

深度记忆网络(DeepMemoryNetwork)在QA和AspectbasedSentiment等领域有成功应用,它使用可读写记忆模块解决长期依赖问题。模型包含输入特征映射、泛化、输出特征映射和响应四个组件,通过多跳处理在大型外部存储中反向传播错误信号。
最低0.47元/天 解锁文章
551

被折叠的 条评论
为什么被折叠?



