您当前的位置:首页 > 机器人 > 正文

科技文硬创:解密巨头们所关注的聊天机器人

时间:2016-08-14 20:03:10  来源:  作者:互联网  阅读量:

|模型
研究bot的paper是在太多了,这是一个非常活跃的研究领域,细分的方向也非常的多,接下来按照所针对的研究问题来分别介绍一些模型。
seq2seq生成模型
现在最流行的解决方案是seq2seq+attention,encoder将user query feed进来,输出一个vector representation来表示整个query,然后作为decoder的condition,而decoder本质上就是一个语言模型,一步一步地生成response,[2]采用就是这种方案,google用了海量的参数训练出这么一个模型,得到了一个不错的bot。

而典型的seq2seq存在一个问题,就是说容易生成一些“呵呵”的response,即一些非常safe,grammatical但没有实际意义的response,比如”I don’t know!”之类的。原因在于传统的seq2seq在decoding过程中都是以MLE(Maximum Likelihood Estimate)为目标函数,即生成最grammatical的话,而不是最有用的话,这些safe句子大量地出现在训练语料中,模型学习了之后,无可避免地总是生成这样的response,而文章[3]借鉴了语音识别的一些经验,在decoding的时候用MMI(Maximum Mutual Information)作为目标函数,提高了response的diversity。
文章[4]认为类似于RNNLM这样的语言模型在生成人话质量不高的根本原因在于,没有处理好隐藏在utterance中的随机feature或者说noise,从而在生成next token(short term goal)和future tokens(long term goal)效果一般。

在生成每一个utterance时,需要用到四个部分,encoder RNN、context RNN、latent variable、decoder RNN,按顺序依次输入和输出。这里的latent variable和IR中的LSI有一点异曲同工,latent表明我们说不清他们到底具体是什么,但可能是代表一种topic或者sentiment,是一种降维的表示。
文章[5]提出了一种叫做content introducing的方法来生成短文本response。

step 1给定query之后,预测一个keyword作为response的topic,这个topic词性是名词,这里的keyword并不能捕捉复杂的语义和语法,而只是根据query的每个词来预估出一个PMI(Pointwise Mutual Information)最高的名词作为keyword.
step 2[5]的模型叫做Sequence To Backward and Forward Sequences,首先进行backward step,给定一个query,用encoder表示出来得到一个context,decoder的部分首先给定keyword作为第一个词,然后进行decoding,生成的这部分相当于keyword词前面的部分;接下来进行的是forward step,也是一个典型的seq2seq,用encoder将query表示成context,然后给定backward生成的话和keyword作为decoder的前半部分,继续decoding生成后半部分。整个的流程这样简单描述下:
step 1 query + keyword => backward sequence
step 2 query + keyword + backward sequence(reverse) => forward sequence
step 3 response = backward (reverse) sequence + keyword + forward sequence
user modeling模型
文章[6]针对的问题是多轮对话中response不一致的问题,将user identity(比如背景信息、用户画像,年龄等信息)考虑到model中,构建出一个个性化的seq2seq模型,为不同的user,以及同一个user对不同的请将中生成不同风格的response。

[6]的模型叫Speaker Model,是一个典型的seq2seq模型,不同的地方在于在decoding部分增加了一个speaker embedding,类似于word embedding,只是说这里对用户进行建模。因为无法对用户的信息显式地进行建模,所以用了一种embedding的方法,通过训练来得到speaker向量,下面左边的图是speaker向量在二维平面上的表示,具有相似背景信息的user就会很接近,与word向量一个道理。
reinforcement learning模型
用增强学习来解决人机对话问题具有很悠久的历史,只不过随着AlphaGo的炒作,deepmind公司将增强学习重新带回了舞台上面,结合着深度学习来解决一些更难的问题。
增强学习用long term reward作为目标函数,会使得模型通过训练之后可以predict出质量更高的response,文章[7]提出了一个模型框架,具有下面的能力:
1. 整合开发者自定义的reward函数,来达到目标。
2. 生成一个response之后,可以定量地描述这个response对后续阶段的影响。

两个bot在对话,初始的时候给定一个input message,然后bot1根据input生成5个候选response,依次往下进行,因为每一个input都会产生5个response,随着turn的增加,response会指数增长,这里在每轮对话中,通过sample来选择出5个作为本轮的response。
在一个大型数据集上训练一个效果不错的seq2seq作为初始值,用增强学习来提升模型实现自定义reward函数的能力,以达到期待的效果。
文章[7]的模型可以生成更多轮数的对话,而不至于过早地陷入死循环中,而且生成的对话diversity非常好。
task-oriented seq2seq模型
现有的task-oriented bot多是采用rule-based、template-based或者example-based或者是综合起来用,用data driven的解决方案十分稀有。文章[8]和[9]就是尝试在bot的个别部件上采用深度学习的技术来做,并且给出了切实可行的方案。
文章[8]先是从一个大家熟知的场景开始介绍,一个经验丰富的客服是如何带一个新入职的客服,分为四个阶段:
1. 告诉新客服哪些”controls”是可用的,比如:如何查找客户的信息,如何确定客户身份等等。
2. 新客服从老客服做出的good examples中模仿学习。
3. 新客服开始试着服务客户,老客服及时纠正他的错误。
4. 老客服放手不管,新客服独自服务客户,不断学习,不断积累经验。

发表评论
用户名: 密码:
验证码: 匿名发表