memory network

1. 背景

​ 记忆网络是一种最早提出于2014年的网络,这个网络与seq2seq有许多相似之处,不过有其特殊之处,该网络经过几年的发展,已经发展出了不少的新技术,本篇文章讲话对该类网络进行个较为详细的介绍。

2. 方法历程

2.1 memory networks

​ 这个网络提出的背景是基于大部分的机器学习模型不能读和写一个long-term memory component的部分内容,并能与inference无缝结合,这种缺陷使得他们无法良好利用现代计算机的资源。

​ 传统的深度学习模型(RNN、LSTM、GRU等)使用hidden states或者Attention机制作为他们的记忆功能,但是这种方法产生的记忆太小了,无法精确记录一段话中所表达的全部内容,也就是在将输入编码成dense vectors的时候丢失了很多信息。所以本文就提出了一种可读写的外部记忆模块,并将其和inference组件联合训练,最终得到一个可以被灵活操作的记忆模块

​ 一个memory network有一个memory m(对象数组,比如vector array,strings array等等)和4个components I,G,O,R组成:

  • I:(input feature map) 将输入转换成内部feature representation
  • G:(generalization) 利用新的输入更新旧的memories
  • O:(output feature map) 给定新输入和新的memory state的情况下,生成feature representation space下的新的输出
  • R:(response) 将输出转化成期待的响应格式,比如文本响应或一个action

​ 给定输入x(可以是字符,数字,图片等等),模型的流程如下:

  1. 把x转换成内部feature representation I(x).

    这里可以选择特征特征方式,比如bag of words,RNN encoder states, etc.

  2. 使用新输入I(x)更新memories m i m_{i} mi: m i = G ( m i , I ( x ) , m ) , ∀ ( i ) m_{i}=G(m_{i},I(x),m),\quad \forall(i) mi=G(mi,I(x),m),(i)

    将输入句子的特征 x 保存到下一个合适的地址 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z5MENScS-1632883312312)(https://www.zhihu.com/equation?tex=m_n)],可以简单的寻找下一个空闲地址,也可以使用新的信息更新之前的记忆
    简单的函数如 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KtS9Iwqa-1632883312315)(https://www.zhihu.com/equation?tex=m_%7BH%28x%29%7D%3DI%28x%29)],H(x) 是一个寻址函数(slot choosing function),G 更新的是 m 的 index,可以直接把新的输入 I(x) 保存到下一个空闲的地址 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tiy6PB9F-1632883312317)(https://www.zhihu.com/equation?tex=m_n)],并不更新原有的 memory,当然更复杂的 G 函数可以去更新更早的 memory 甚至是所有的 memory

  3. 利用新输入和memory计算输出特征 o: o = O ( I ( x ) , m ) o=O(I(x),m) o=O(I(x),m)

    寻址,给定 query Q,在 memory 里寻找相关的包含答案的记忆
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ss9KY1Tg-1632883312319)(https://www.zhihu.com/equation?tex=qUU%5ETm)]: 问题 q 和事实 m 的相关程度,当然这里的 q,m 都是特征向量,可以用同一套参数也可以用不同的参数
    U:bilinear regression 参数,相关事实的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dvyn355k-1632883312320)(https://www.zhihu.com/equation?tex=qUU%5ETm_%7Btrue%7D)] 分数高于不相关事实的分数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KNvYM9k9-1632883312321)(https://www.zhihu.com/equation?tex=qUU%5ETm_%7Brandom%7D)]
    n 条记忆就有 n 条 bilinear regression score
    回答一个问题可能需要寻找多个相关事实,先根据 query 定位到第一条最相关的记忆,再用第一条 fact 和 query 通过加总或拼接等方式得到 u1 然后一起定位第二条
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ubvKInVF-1632883312322)(https://www.zhihu.com/equation?tex=o_1+%3D+O_1%28q%2Cm%29+%3D+argmax_%7Bi%3D1%2C%E2%80%A6N%7D+%5C+s_o%28q%2C+m_i%29%3B)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vlVjxmxE-1632883312323)(https://www.zhihu.com/equation?tex=o_2+%3D+O_2%28q%2Cm%29+%3D+argmax_%7Bi%3D1%2C%E2%80%A6N%7D+%5C+s_o%28%5Bq%2C+o_1%5D%2C+m_i%29)]

  4. 将输出特征o编码为最终的响应: r = R ( o ) r=R(o) r=R(o)

    将 output 转化为自然语言的 response
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t2dir0jA-1632883312323)(https://www.zhihu.com/equation?tex=r+%3D+argmax_%7Bw+%5Cin+W%7D+%5C+s_R%28%5Bq%2C+o_1%2C+o_2%5D%2C+w%29%3B)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDp9pXU1-1632883312324)(https://www.zhihu.com/equation?tex=s_R%28x%2Cy%29%3DxUU%5ETy)]
    可以挑选并返回一个单词比如说 playground
    在词汇表上做一个 softmax 然后选最有可能出现的单词做 response,也可以使用 RNNLM 产生一个包含回复信息的句子,不过要求训练数据的答案就是完整的句子,比如说 football is on the playground

​ train和test都遵循这个流程,不同的是,test的时候只存储memories而不更新模型参数。

​ 上面的介绍是个提纲挈领的介绍,说明了memory network的一般设计流程,而具体的模型实现则在后续的研究中给出。

2.2 End-To-End Memory Networks

​ 这篇论文提出了一种不同于2.1节的一种memory network,它引入了一个循环注意力网络,并实现了端到端的训练。该模型接收一组要存储于memory中的离散输入 x 1 , . . . , x n x_{1},...,x_{n} x1,...,xn,一个query q,然后输出一个answer a。其中,每个 x i x_{i} xi,q,a包含的符号均来自于一个 字典,容量为V。模型将每个x以固定的size写入到memory中,然后计算x和q的一个连续representation,这个representation会通过多个hops用于后续求a。

​ 接下来会详细介绍该模型。

2.1.1 Single Layer

​ 该结构实现了一个memory hop操作,具体为:

  • Input memory representation

    对于给定的输入集合 x 1 , . . . , x n x_{1},...,x_{n} x1,...,xn,通过将每个 x i x_{i} xi embedding到一个连续空间把 x i x_{i} xi转化为memory vector m i m_{i} mi,维度为d,最简单的情况就是使用一个embedding矩阵 A,维度为 d × V d \times V d×V,query q也被embeded(同样可以采用另一个embedding矩阵B表示,维度同A)来获得一个内部状态 μ \mu μ,通过内积并后接softmax来计算 μ \mu μ m i m_{i} mi的匹配程度:
    p i = S o f t m a x ( μ T m i ) p_{i}=Softmax(\mu ^{T}m_{i}) pi=Softmax(μTmi)

  • Output memory representation

    每个 x i x_{i} xi都有个对应的输出向量 c i c_{i} ci(可以用另一个embedding 矩阵C),来自于memory o的响应向量通过如下方式计算:
    o = ∑ i p i c i o=\sum_{i}p_{i}c_{i} o=ipic

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值