Memory Network是Attention 的进阶版本。
假如现在要让机器看一篇文章,然后问它一个问题,看机器是否能给出正确答案。
像机器翻译需要进行word embedding一样,我们需要对文章进行sentence embedding。这样我们能得到一组向量,每一个向量代表一个句子。用一个向量q表示问题。然后用q和文章中所有句子向量进行匹配,得到一组向量。将其乘以对应的x向量并相加,得到的值丢到DNN里面,最终得到答案。
还有另外一个更复杂的版本。
抽取特征的句子向量和算匹配的向量不见得是一样的,可以用一组向量表示句子的特征,一组向量算匹配,会得到更好的结果。机器可以学出两个不同的矩阵,句子的one-hot编码乘以这两个矩阵就得到两组不同的向量。
可以看到这个版本多了一个hopping的操作。这是把抽取出的信息的结果与q相加,取代q,再进行一次匹配抽取的过程,反复数次,将结果丢到DNN里得出答案。好像是人的思考过程。