2019.10.29 更新 Memory Networks
2019.10.31 更新 End-To-End Memory Networks
Memory Networks
总结
更详细的总结可以看这一篇,这里只做简单的概括以便回忆。
作者认为RNN网络不能很好的保存长期记忆,所以提出了memory network,memory network是一个框架,包含了4个重要的组件: I G O R
- I :input feature map,将输入映射为一个特征向量
- G :根据新的输入更新memories,举个例子,最简单的G可以定义成只存放当前的memory,完全不更新以前的memories
- O :给定输入和memory,在特征空间里产生输出
- R :将输出转化为自然语言
这里的memory network并不是end-to-end的,而是pipeline式的,即先得到特征向量,再得到与其最相关的$k$个memories,再得到其特征向量,最后得到自然语言。在中间求其最相关的$k$个memories时,用的是$arg max$,其梯度是断掉的,文章用了margin ranking loss来得到整个模型的loss,进而用SGD优化模型。
End-To-End Memory Networks
总结
上一篇总结有提到,最初的memory network并不是end-to-end的,而是pipeline式的,原因就在于其模型在得到与query最相关的$k$个memories时,用的是$argmax$,所以整个模型的参数并不能一次性的反向传播及更新,而是分成一个一个module,先更新一个module的参数再更新下一个module的参数。而这篇文章就利用了attention,将query和memories做attention直接得到输出的特征向量。值得一提的是,这里的memory network可以是multi-layers式的,文章介绍了两种方式实现多层memory network,详情见文章。