conversational
https://blog.csdn.net/u011239443/article/details/79921375
论文:
https://arxiv.org/pdf/1506.05869.pdf%20(http://arxiv.org/pdf/1506.05869.pdf)
摘要
会话建模是自然语言理解和机器智能中的一项重要任务。虽然以前的方法存在,但它们往往局限于特定的领域(例如预订机票),需要手工制作的规则。在本文中,我们提出了一个简单的方法,这个任务使用最近提出的序列到序列框架。我们的模型预测了交谈的谈话中前面的句子或句子的一句话。我们的模型的优点是可以进行端到端的训练,因此需要少得多手工制作的规则。我们发现,给出了大量的会话训练数据集,这种简单的模型可以生成简单的会话。我们的初步结果表明,尽管优化错误的目标函数,该模型能够很好地进行逆向谈判。它能够从一个特定领域的数据集中提取知识,从一个大的、嘈杂的、一般的电影字幕主数据集中提取知识。在特定于域的IT帮助桌面数据集中,该模型可以通过对话找到一个技术问题的解决方案。在嘈杂的开放域电影转录集中,该模型可以执行简单的常识推理形式。正如预期的那样,我们还发现缺乏一致性是我们模型的常见故障模式。
介绍
神经网络的端到端训练在语音识别、计算机视觉和语言处理等领域取得了显著的进展。最近的研究表明,神经网络可以做的不仅仅是分类,它们可以用来把复杂的结构映射到其他复杂的结构。这方面的一个例子是一个序列映射到另一个序列具有直接应用在自然语言理解的任务(sutskever et al.,2014)。该框架的主要优点是它不需要特征工程和领域特殊性,而匹配或超过最好的结果。在我们看来,这一进步使研究人员能够从事那些可能不容易获得领域知识,或者难以手工设计规则的任务。
会话模型可以直接从这个制定得到效果,因为它需要问答之间的映射。由于这种映射的复杂性,会话建模以前被设计成非常狭窄的领域,在特征工程方面有着重大的任务。在这项工作中,我们实验的会话建模任务,采用递归神经网络,在给定上一个序列或者当前序列,来预测下一个序列(sutskever et al.,2014)。我们发现,这种方法可以很好地产生流利和准确的对话答复。
我们在一个IT帮助桌面数据集上对聊天会话进行测试,发现该模型有时可以跟踪问题并为用户提供有用的答案。我们还对电影字幕中嘈杂的数据集进行的对话进行了实验,发现该模型可以进行自然会话,有时也可以形成简单的常识推理形式。在这两种情况下,递归神经网络比N-gram模型和捕捉重要的长程相关性的方法都表现的更好。从定性的角度来看,我们的模型有时能够产生自然的对话。
相关工作
我们的方法是基于最近的研究提出的序列到序列的神经网络模型。该框架已被用于机器翻,改进英语到法语和英语到德语的翻译任务。它也被用于其他任务,如分析字幕。因为众所周知,vanilla RNNs遭受消失的梯度,大多数研究人员使用长短期记忆的变体(LSTM)。
我们的工作还受到神经语言建模的最近的成功,这表明神经网络是自然语言的有效模型。最近,索尔多尼等人,使用递归神经网络在短对话中模拟对话(训练在Twitter风格的聊天)。
在过去的几十年里,许多研究者一直在探索构建机器人和会话代理。然而,大多数这些系统需要一个相当复杂的多个阶段的处理流水线。我们的工作不同于传统的系统,提出一个端到端的方法,无需领域知识。原则上,它可以与其他系统相结合,重新计算候选响应的简短列表,但我们的工作是基于产生概率模型给出的答案,这些概率模型被训练以最大化给定上下文的答案的概率。
模型
我们的方法使得使用的序列的序列(seq2seq)框架。该模型是基于一个递归神经网络,它每次读取输入一个序列,并预测输出一个序列。在训练过程中,模型给出了真实的输出序列,因此学习可以通过反向传播来完成。该模型被训练以最大化给定上下文的正确序列的交叉熵。在推理过程中,由于没有观察到真正的输出序列,我们只将预测的输出向量作为输入,来预测下一个输出。这是一种贪心推理方法。一个不太贪心的方法是使用波束搜索,并在前一步向下一步提供几个候选。预测序列可以根据序列的概率选择。
具体地说,假设我们观察谈话:第一个人说“ABC”,二人回答说:“wxyz”。我们可以用一个递归神经网络,训练映射“ABC”到“wxyz”上,当模型接收到序列符号“ “” ”时结尾:
这种模式的优势在于它的简单和通用性。我们可以利用这一模型对机器翻译、问答、对话而没有在架构上有重大变化。该技术应用于对话,模型也简单:输入序列可以被转换到目前为止的级联(上下文),和输出序列的回复。
不同于简单的翻译,序列到序列模型将不能够成功地“解决”的模拟对话,而有几个明显的问题:简化目标函数进行优化,不捕获通过人际传播所达到的实际目的,这通常是基于长期的信息交流,而不是下步预测。缺乏确保一致性和普遍的世界知识的模型是纯粹无监督模型的另一个明显的局限性。
数据集
在我们的实验中,我们使用了两个数据集:一个封闭域,IT故障集;一个开放域,电影转录数据集。这两个数据集的详细信息如下。
IT故障集
我们在第一组实验中,我们使用的数据集是从一个IT故障排除聊天服务中。在这个服务,消费者面对电脑相关的问题,和专家帮助他们解决。典型的交互大约是400个单词,并且清楚的标注了对话轮流。我们的训练集为30M个单词,验证集为3M个单词,并完成了一些数据清洗的工作,例如删除普通名称、数字和完整URL。
开放式字幕数据集
我们还测试了我们在开放字幕数据集上的模型。此数据集由xml格式的电影对话组成。它包含了电影中人物说的话。我们采用了一个简单的处理步骤,删除XML标记和数据集中明显的非会话文本(例如超链接)。由于轮流没有明确指出,我们处理连续的句子,假设他们说出不同的文字。我们训练模型基于前面一个句子来预测下一个句子,这个数据集的大小加倍,因为每个句子都用于上下文和目标。62M个句(923M个单词)作为训练集,验证集拥有26M句(395M单词)。划分是这样做的,即每句话中的每一句都出现在训练集或测试集中,但不是同时出现。与以前的数据集不同,开放式字幕相当大,而且相当吵闹,因为连续的句子可能由同一个字符发出。考虑到电影的广泛范围,这是一个开放域对话数据集,与技术故障排除数据集形成了对比。
实验
在本节中,我们描述了两个数据集的实验结果,并展示了一些与我们训练的系统相互作用的示例。我们还比较了我们的系统对一个流行的基于规则的机器人使用人类评价的一组200个问题的性能。
IT故障集实验
在这个实验中,我们训练了一个1024个记忆单元的一层LSTM,使用随机梯度下降与梯度剪裁优化。词汇是最常见的20k字,包括特殊标记和演员名称。在收敛性上,该模型实现了困惑度为8,而N-gram模型达到了18。下面是三个最常见的IT问题(远程访问、软件崩溃和密码问题)中模拟故障排除会话的几个示例,这里只展示密码问题:
Machine: hi , this is <NAME> from helpdesk connect , what can i help you with today ?
Human: hi , i forgot my password
Machine: ok great
Human: can you tell me how i can recover it ? Machine: i ’ ll need to verify who it is at that machine
Machine: can we do a hangout
Machine: ?
Human: yes
Machine: <anonymized hangout instructions and verifications>
Human: cool , i am good now
Machine: how ’ s this looking good ?
Machine: i ’ ll go ahead and close this chat . Machine: take care . : )
Human: bye
Machine: bye .
开放式字幕实验
本实验中,我们训练了两层LSTM,使用adagrad与梯度裁剪。每一层的对应有4096个存储单元,我们建立一个词汇组成的最常见的10万字。加快softmax,我们组合记忆细胞为2048线性单元,再进行分类。
在收敛性上,验证集上的递归模型的困惑度是17。smoothed 5-gram 模型的困惑度为28。有趣的是,添加软注意机制并没有显著改善训练集和验证集的困惑度。
模型例子
除了困惑度外,我们的简单递归模型常常产生似是而非的答案。下面是一些示例问题回答(这里只选取一段例子,更多的例子请见论文):
Human: what do you think about tesla ?
Machine: he ’s a good conductor .
Human: what do you think about bill gates ?
Machine: he ’s a good man .
Human: What do you think about messi ?
Machine: he ’s a great player .
Human: what do you think about cleopatra ?
Machine: oh , she ’s very regal .
Human: what do you think about england during the reign of elizabeth ?
Machine: it was a great place .
我们发现,该模型可以记住事实、理解上下文、执行常识推理,而不需要传统管道的复杂性。让我们吃惊的是,除了单词向量中的参数外,该模型没有任何明确的知识表示组件。
也许实际意义重大的是,该模型可以推广到新问题。换句话说,它不只是通过将问题与现有数据库相匹配来查找答案。事实上,除了第一次对话之外,上面提到的大多数问题都没有出现在训练集中。
然而,这一基本模型的一个缺点是它只提供了简单的、短的回答,有时不回答我们的问题。也许一个更棘手的问题是模型不捕捉个性一致。语义上类似的问题,答案有时是不一致的。这是因为我们的模型的简单性和我们的实验数据集。下面的对话说明这样的失败:
Human: what is your job ?
Machine: i ’m a lawyer .
Human: what do you do ?
Machine: i ’m a doctor .
最后,与传统的聊天机器人相比(传统的聊天机器人效果很差,这里就不列举了)。
人为评价
为了公正、客观地比较我们的模型与CleverBot对抗,我们挑选了200个问题,问四个不同的人对我们的模型(NCM)与CleverBot(CB)进行评价。人类法官被要求挑选他们喜欢的两个机器人中的哪一个,如果两个回答质量相同,也可以宣布一个平局。
如果四个人类法官中有三个同意,我们就记录这个分数。我们的模型是在200个问题中,有97个问题胜出,而CleverBot在200问题中,有60问题胜出,20个问题两者平局,在23个问题评委们两者都不采纳。
这里有一些评委们评价样本:
Human: What is the deepest spot on the world ?
NCM: The pacific ocean. #胜出
CB: What ?
Human: Do you like Mexican food or Indian food ?
NCM: I hate it.
CB: I love Mexican food. #胜出
Human: Who are you crazy about ? # 平局
NCM: You’re the one who’s crazy.
CB: Who are you ?
Human: What’s thirty plus forty ? #都不采纳
NCM: Sixty ?
CB: What should we talk about ?
然而,我们认为,设计一个快速衡量会话模型质量的好指标仍然是一个有待研究的问题。我们通过手工检查,通过使用机械土耳其人与基于规则的机器人进行人的评价,并通过计算困惑来做到这一点。然而,使用这些方法有明显的缺点,我们正在积极地进行这一研究和其他研究方向。
讨论
在本文中,我们表明,一个基于seq2seq框架简单的语言模型可以用来训练会话引擎。我们的简单结果表明,它可以生成简单而基本的会话,并从嘈杂但开放的域数据集中提取知识。尽管模型有明显的局限性,但令人惊讶的是,没有任何规则的纯数据驱动的方法可以对许多类型的问题产生相当恰当的答案。迄今为止,该模型可能需要进行大量修改才能提供真实的会话。在众多的限制中,缺乏一致的个性使得我们的系统很难通过图灵测试。
相关阅读
Model、ModelMap和ModelAndView的使用详解
1.前言 最近SSM框架开发web项目,用得比较火热。spring-MVC肯定用过,在请求处理方法可出现和返回的参数类型中,最重要就是Model和Mod