本文是南洋理工大学 2021 年 5 月份的对话系统综述文章 Recent Advances in Deep Learning Based Dialogue Systems: A Systematic Survey 2.4 节 Memory Network 的理解和展开.
# Memory Network 概述
Memory Network 是 FAIR 的 Jason Weston 等人于 2014 年在论文 Memory Networks 提出的一种神经网络框架,它在通用的神经网络模型中增加了一个 Memory 模块,用来记忆神经网络中需要经常使用 (但又经常被遗忘) 的信息。对照起来看,Memory 之于神经网络,类似于 海马体 (hippocampus) 之于 大脑,内存和硬盘 之于 计算机.
在此之前的神经网络中,不管是 MLP, 还是 CNN 和 RNN, 都没有显式的定义记忆体。尽管模型的隐层参数 (如 RNN 的 hidden state, CNN 的卷积核) 能够记忆一些长期记忆,但通常来说其记忆能力有限.
Memory Network 通过显式引入大小不限 (当然受限于硬件环境) 的记忆体,显式定义记忆体中存储的内容,并在模型训练和预测过程中 (选择性) 动态更新记忆,增强了模型对重要信息的记忆和利用能力。从作者在 QA (Question Answer) 任务上的实验结果来看,记忆体可以较大地提升模型效果.
# MemNN
正式地,Memory Network 包括如下五个部分:
- Memory : 记忆体。可以认为是一个包含多个记忆单元的数组,记忆单元的具体内容和形式,则取决于具体的任务和设计。为了行文方便,下文中记忆体用符号 表示,其记忆单元用符号 表示,即 .
- Input Map : 输入特征提取器。设原始输入为 , 则输入 可以提取对应的输入数据特征
- Generalization : 记忆生成器。基于新的输入特征,获取新的记忆表示,插入记忆体或更新相关的记忆单元。数学表示为 , 或
- Output Map : 输出特征提取器。数学表示为 . 注意,这里的记忆体 M 已经被更新过.
- Response : 响应器。数学表示为 . 这个与具体的任务有关.
Memory Network 是一种模型框架,其各个部分均可以自由设计。在 Jason Weston 2014 年的原始论文中,作者设计了一个 MemNN 模型,用来解决 QA 问题.
- MemNN 的使用了只插入不更新的记忆体,记忆单元保存原始输入 , 可以是一个描述事实的句子 (如 “Joe travelled to the office.”), 也可以是对应的问题 (如 “Where was Joe before the office?”). 记忆生成器 的工作模式为
其中 为当前已经使用的记忆单元个数.
- MemNN 的特征提取器 使用了 BoW 特征.
- MemNN 的输出特征提取器 和 响应器 均使用了相似度排序模型.
其输出特征提取器 会从记忆体中提取两个最相关的记忆单元:
响应器采用了类似的方式.
MemNN 最主要的问题是,模型使用的 是不可导的,因此不能采用端到端的训练方法.
# MemN2N
FAIR 在 2015 年的论文 End-To-End Memory Networks 提出了 MemN2N 模型,将 MemNN 改造为 End2End 方式.
相对于 MemNN, MemN2N 的主要改动在输出特征提取器 的设计上。与 MemNN 使用 不同,MemN2N 使用了可导的 Softmax 函数,其输出计算如下:
其中记忆单元 是对应输入 (一个描述事实的句子) 的稠密向量表示, 对应当前输入的问题 的向量表示 (与 x 的编码矩阵可能不同), 又是 对应的另一个稠密向量表示。这里使用了三个不同的嵌入矩阵,讲起来有点绕。事实上,作者也有尝试过上面三个向量表示方法使用同一个嵌入矩阵的情形.
对应的响应器 也不再使用排序的方法,而改成了分类器的方式 (作者简化了 QA 问题,假设答案只包括一个单词), 数学表示如下:
# MemN2N 与 Attention 的关系
我们从上面的输出特征提取过程可以很容易联想到 Attention, 因为两者的计算过程实在太相似了.
以 Dzmitry Bahdanau 等人 2014 年在论文 Neural machine translation by jointly learning to align and translate 给出的 Attention 计算过程作为对比:
无论是 MemN2N 还是 Attention, 都是通过概率分布的方式找到与当前关注点最相关的信息. MemN2N 的当前关注点是 Query, 相关信息是 Query 之前的事实描述. Attention 中的当前关注点是隐状态 , 而相关信息是编码器输出的序列矩阵表示.
事实上,还有一些 Transformer 的后续研究 (应该是之前在知乎上看到的介绍,但是现在找不到具体的知乎帖子及对应的原始论文了,后续补上) 称,将 Transformer 中 Self-Attention 对应的 Q 和 K, 或者其计算结果替换成一个随机初始化的矩阵变量 (还是直接将系数 作为变量学习,记不清楚了), 也能够达到 Self-Attention 类似的效果。这里想表达的是,不管是显式定义的 Memory, 还是通过 Q 和 K 计算得到的 Score, 甚至是随机初始化的 Score 向量,都为模型提供了额外的记忆信息,都能给模型带来效果提升,Memory 和 Attention 没有本质的区别.
# Memory Network 在对话系统中的应用
这里先把 Recent Advances in Deep Learning Based Dialogue Systems: A Systematic Survey 罗列的一些研究工作简单梳理一下,后续再逐一展开.
Chen et al. (2019c): The JDDC corpus: A large-scale multi-turn chinese dialogue dataset for e-commerce customer service
作者认为,将对话历史和知识库混合在同一个 Memory 中可能影响答复的质量,因此作者设计了包含三个记忆体的 TOD 系统:两个长期记忆体,分别存储对话历史 和 知识库;一个工作记忆体记忆两个概率分布并控制 Response 生成.He et al. (2020a): Amalgamating knowledge from two teachers for task-oriented dialogue system with adversarial training
作者提出了一种 “Two-Teacher-One-Student” TOD 系统,该框架的学生模型使用了 Memory Network. 作者首先使用强化学习方法训练两个 Teacher 模型,然后使用 GAN 训练方法来训练学生模型.Kim et al. (2019): Efficient dialogue state tracking by selectively overwriting memory
论文作者主要关注 DST (Dialog State Tracking) 问题。作者使用 Memory 来记忆对话状态,在更新记忆时,作者会 (通过模型) 主动选择需要被更新的记忆单元 (对话状态).Dai et al. (2020): Learning low-resource end-to-end goal-oriented dialog for fast and reliable system deployment
作者使用了 MemN2N 模型作为 Utterance 编码器,其记忆体主要用于记录对话历史和已经存在的响应,然后使用 MAML (Model-Agnostic Meta-Learning, 模型无关的元学习) 方法训练模型在 Few-shot 情形下找到正确的响应.Tian et al. (2019): Learning to abstract for memory-augmented conversational response generation
作者使用 Memory Network 记忆 Query-Response 对,在生成答复时同时参考输入 Query 和 Memory.Xu et al. (2019): Neural response generation with metawords
作者在 Memory 中记录 Meta-Words (用于描述响应的短语), 生成答复时同时考虑 User Utterance 和 Meta-Words.Gan et al. (2019): Multi-step reasoning via recurrent dual attention for visual dialog
论文使用了 对话历史记忆体 和 视觉记忆体,可以执行多步推理 (Multi-Step Reasoning).Han et al. (2019): Episodic memory reader: Learning what to remember for question answering from streaming data
当 Memory 被占满时,论文提出了一种强化学习方法来选择需要被替换的记忆单元,这解决了 Memory Network 的扩展性问题.Gao et al. (2020c): Explicit memory tracker with coarse-to-fine reasoning for conversational machine reading
作者是为了解决 Memory Network 的扩展性问题,他们使用了 EMT (Explicit Memory Tracker) 来判断记忆是否足够 (不再扩张), 并使用了 coarse-to-fine 策略提出澄清问题 (clarification questions) 以获得更多的信息来完善推理过程.