闲聊机器人介绍(二)
三、闲聊机器人技术问题的简要介绍
1. 多轮对话的上下文问题
一个例子如下图所示,针对于第二个问题“为什么?”,考虑上下文后,用户正确的意思是“为什么不发表情包?”
深度学习来解决多轮会话的关键是如何将上下文聊天信息Context引入到Encoder-Decoder模型中去的问题。很明显,上下文聊天信息Context应该引入到Encoder中,因为这是除了当前输入Message外的额外信息,有助于Decoder生成更好的会话应答Response内容。
目前不同的研究主体思路都是这样的,无非在如何将Context信息在Encoder端建立模型或者说具体的融入模型有些不同而已。
其中论文Building end-to-enddialogue systems using generative hierarchical neural network models [Serban,2015](https://arxiv.org/abs/1507.04808)提出了一种层级神经网络(Hierarchical Recurrent Network Dialog,简称HRED),主要是为了解决这种问题。
HRED也是在Encoder-Decoder框架下进行改进的,主要区别是在Encoder中采用了二级结构,首先第一级对上下文context中的每一句中的每个单词进行编码(Sentence RNN),然后第二级的RNN则将第一级所有句子的编码结果按照出现顺序先后编码进第二级的RNN,所以第二级的RNN被称作Context RNN,然后Encoder中最后一个节点就是之前所有Context语句的编码和当前语句的编码,把这个信息作为Decoder的输入,这样就可以把Context信息考虑了进去。
2. 个性信息一致性问题
对于聊天助手等对话系统来说,通常会被用户看作是一个虚拟人,所以经常会被问道:“你几岁了?”“你是男的女的?”“你是什么星座?”等等。若把聊天机器人当作一个虚拟人,那么他的年龄、星座、爱好等相关的个性化信息应该保持一致性(consistency)。
利用经典的Encoder-Decoder模型训练出来的聊天助手往往很难保证个性化信息的一致性,例子如上图,这是因为Encoder-Decoder模型训练的语句一般都是单句到单句的映射,模型并没有维护个性化信息,所以不能保证相似问题能够产生统一的答案,比如上图三个message都是询问“住在哪里?”,但是聊天机器人回答的response截然不同。
另外,不同用户可能喜欢不同的聊天风格,比如有些喜欢活泼开朗,有的喜欢认真严谨的,所以聊天机器人应该能够提供不同性格的人设和聊天风格,针对具体用户可采取相对应的个性化定制。
那么如何在Encoder-Decoder框架下采用技术手段维护聊天助手的个性一致性问题呢?论文A Persona-Based Neural Conversation Model [Li,2016](https://arxiv.org/abs/1603.06155)给出了一种比较典型的解决方案,模型架构如上图。
基本框架还是采取Encoder-Decoder模型框架,改变之处就是把聊天助手的个性化信息通过Word Embedding方式导入到Decoder的输出过程中,也就说在采用RNN的Decoder生成Response的过程中,在每个i时刻,神经网络节点除了RNN的标准输入外,也将个性化信息的Word Embedding一并输入进去,这样系统就会倾向于生成符合个性化信息的Response。
3. “安全回答”(Safe Response)的问题
在传统的Encoder-Decoder模型中,模型倾向于生成一些“安全”的“万能回复”,比如“哈哈哈”、“我不知道”、“呵呵”之类的句子,我们称之为“安全回答”。虽然这些安全回答在对话中不能算错,但是我们也可以想象,无论用户说什么,聊天机器人总是用“呵呵”两字回复用户,这是一种极差的用户体验。虽然那些有意思的回答在候选的list中,但往往这类回答的ranking很低,所以通常会返回这些所谓的“安全回答”,原因是因为模型的Loss值的优化方向会使得出现这类“安全回答”的概率非常高,所以为了解决这个问题,使得回答多元化,论文A Diversity-Promoting Objective Function for Neural Conversation Models [Li,2016] (https://arxiv.org/abs/1510.03055) 提出了一种新的目标函数MMI来构建Encoder-Decoder模型。
在传统的Encoder-Decoder模型中,标准的目标函数是由log-likelihood来建模的:
这个Loss就会导致在训练集出现越多的“安全回复”,在测试生成回答语句Response的时候,生成这些“安全回复”的概率就会变高。
所以,在论文中对这个Loss进行改进,使用互信息来衡量生成语句的优劣,即最大化互信息(Maximum Mutual Information,MMI):
我们可以很明显的看出MMI与之前相比多了一个logp(T)的惩罚项,这个惩罚项的意义在于对于训练集经常出现的安全回答,其概率p(T)会高于其他回复,那么减去这个惩罚项就会使这个回复的得分下降。实验结果如下图所示:
我们可以从实验结果看出,MMI生成的语句在多样性和相关性中要比传统Encoder-Decoder模型生成的语句要好很多。
上述介绍的几种技术解决方案是深度学习框架下针对Encoder-Decoder框架下进行的改进版本,很明显还可以衍生出更多的其它方案,但是其技术思路应该是类似的,核心思想是把需要加入的features加入到encoder或者decoder中。
当然现在针对闲聊对话机器人来说,比较关键的问题是缺乏优质的标准化的大量训练数据,现在的训练语料大部分是来自于贴吧,微博,电影对话等,但是对话质量一般不高,训练出来的模型表现还有待于提升。如果未来能够有大量的优质的人与人对话的训练数据,将会很明显的改善模型的表现成果。
- 点赞
- 收藏
- 关注作者
评论(0)