发表于2015年,最早应用Seq2seq框架建立对话模型的文章。
概览
摘要
之前的会话模型的问题:
- 局限于封闭域
- 需要手工制作特征
本文模型:
- 使用 Seq2seq框架
- 可以进行end2end的训练,需要极少的手工制作的规则
- 在特定领域和开放域都能够提取知识
模型训练:
- 开放域数据集为电影字幕数据集,可以从中提取知识,进行简单的常识推理
- 封闭域数据集为IT故障集,其也可以找到技术问题解决方案
存在的问题:
- 对话缺乏一致性
eg.通过不同方式问what's your name? 得到的结果不相同。
总结:
- Seq2seq可以生成简单对话,并且能够从有噪声的开放域语料中提取知识。
- 作为一个纯数据驱动无需任何规则的会话模型,其能够对多种类型的问题生成适当的答复。
- 在众多局限中,缺乏角色一致性使其难以通过图灵测试。
模型
本文使用的模型来自《Sequence to sequence learning with neural networks》(2014)这篇paper中的结构。
这个模型基于RNN,其每次读取 the input sequence one token,并且预测输出序列,每次 one token。
训练模型以在给定其上下文的情况下最大化正确序列的交叉熵。
我们使用预测的输出序列作为输入来预测下一个输出。这是一种贪心的推理方法。一个不太贪心的方法是 beam search,并在前一步向下一步提供几个候选。预测序列可以根据序列的概率选择。
具体地,假设有一个对话(“ABC”,“WXYZ”),我们使用RNN来训练,模型的隐层状态是<eos>处,其可被视为 thought vector,由“ABC”经过 encode input得到。though vector 经过 decode 得到 output。
将seq2seq应用到会话建模存在如下问题:
- 优化的目标函数无法捕获人类交流的实际意图,这通常需要长期的信息交换,而不是仅做了下一句预测。
- 无监督模型的通常的局限性:没有角色一致性。语义上类似的话,答案有时不一致。
数据集
使用了两个数据集:
- 封闭域:IT故障集
IT故障排查聊天服务,消费者-专家。典型交互大约400个单词。训练集30M单词,测试集3M单词。 - 开放域,电影转录数据集
62M句子(923M个单词)作为训练集,验证集拥有26M句子(395M单词)。划分是这样做的,即每句话中的每一句都出现在训练集或测试集中,但不同时出现。此数据集与IT故障集不同,其数量大、噪声大,因为连续的句子可能由同一个人物发出。
实验
在两个数据集上做实验,并与一个流行的基于规则的模型CleverBot做对比。
IT故障集
单层LSTM,1024个memory cells。使用具有梯度裁剪的随机梯度下降。
perplexity 是8,N-gram模型达到了18。
字幕数据集
2层LSTM,每层4096个memory cells。使用具有梯度裁剪的AdaGrad。
构建了最常见100K单词的词汇表。
为了加快softmax,我们组合memory cells为2048线性单元,再进行分类。
perplexity 是 17,smoothed 5-gram 模型为28。
有趣的是,添加 soft attention 机制( (Bahdanau et al., 2014))并没有改善训练集和验证集的 perplexity。
模型例子
(文中有大量对话,这里不展示)
该模型可以记住事实、理解上下文、执行常识推理,而不需要传统方式的复杂性。除了单词向量中的参数外,该模型没有任何明确的知识表示组件。
这启发我们,该模型可以推广到新问题,换句话说,它不只是通过将问题与现有数据库相匹配来查找答案。事实上,除了第一次对话之外,上面提到的大多数问题都没有出现在训练集中。
这一基本模型的缺点:
- 它只提供了简单、短小的回答,甚至有时不回答我们的问题。
- 更棘手的问题是模型不捕捉个性一致。语义上类似的问题,答案有时是不一致的。
这是因为我们的模型的简单性和我们的实验数据集噪声大。