Seq2Seq和MTCS实现的对话系统

Seq2Seq模型和蒙特卡洛搜索树(简称:MTCS)实现的对话系统,是一个信息检索的对话系统,seq2seq可以生成句向量,再通过欧式距离匹配历史对话中距离最近的问句,给出该问句的回答,同时对话框架采用蒙特卡洛搜索树,问答对来自于搜索树上的各个节点,因此可以实现前后文的对话,属于一种非理解式的多轮对话。

Seq2Seq模型和蒙特卡洛搜索树(简称:MTCS)实现的对话系统,是一个信息检索的对话系统,seq2seq可以生成句向量,再通过欧式距离匹配历史对话中距离最近的问句,给出该问句的回答,同时对话框架采用蒙特卡洛搜索树,问答对来自于搜索树上的各个节点,因此可以实现前后文的对话,属于一种非理解式的多轮对话。

基本操作:

蒙特卡洛搜索树具备在叶节点添加子节点的特性,因此在客服问答中,可以建立向下扩展的树状图。图中,每一个从根节点到末端节点之间的节点和路径记录了完整的对话过程。图中的线和节点构建了一个Q(s,a,r)结构:

  • 每一节点表示一个状态(state),即上一句话,这里可以是一句话,也可以是多句表示同一个意思的话。
  • 每一条线表示一个动作(action),即回答的句子;同时每一个节点记录了动作的奖励(reward)

seq2seq模型可以计算出句子的句向量,参考前文《seq2seq模型的字符级的向量表示 》。匹配当前输入文本和所在轮次节点连接到父节点的线,即问句和对应伦次中的所有问句,找到最近的问句并返回对应的答案,实现多轮对话。

优点:

这个架构没有脱离基于信息检索的对话系统,只是通过MCTS建立一个多轮次的对话框架。另外在检索的方式上,采用seq2seq产生的句向量,而不是通过关键词或其他信息检索的方法,这是因为句向量的表意更细腻,但是,训练句向量的方法还有待进一步探索探索,这里仅仅采用了在seq2seq模型的字符级的向量表示中提到的方法。这个系统的对话数据可以被明文记录,因此方便修改和人为控制。

强化学习的特点,MCTS在Alpha Go作为强化学习的核心架构,在对话中也可以被使用,在实际环境中以某个目标为导向进行强化学习,可以获得最优回答,从而引导用户进入我们的对话逻辑而达到目标。

这是一个初始系统,存在的问题,如:

向量欠训练

上文中已经提到,这个系统是通过seq2seq模型产生的句向量来做检索,若向量欠训练,或者训练的方法不好,最终的检索效果就会受到影响。所以寻找一个好的训练方式和一套好的数据是这个系统成败的关键。

回答单一

通过信息检索来实现对话,早期被用在聊天系统中,即从历史记录的问答对寻找新来问句的回答,这个系统给出来的回复很单一,死板,比如历史问句“播放王菲的歌”对应的回答有“马上为您播放王菲的歌”,但是这样的回答不适用于“播放周杰伦的歌”,所以通常的回复是“马上为您播放”这样的通用语句。解决这个问题需要“生成回答语句”,可以通过模版生成或统计模型(MemoryNetwork,Seq2Seq)。通过模版的生成:

上下文联系

上下文评价一个对话系统好坏的重要标准之一,虽然MCTS在框架上处理上下文的内容,但是并没有从根本上理解上下文。上图中,使用模版的方式生成回答文本,但是仅仅接受前一个问句中的关键词,如果要考虑之前所有的历史对话,也许加入统计模型(比如:MemoryNetwork)可以实现,这需要更多的工作来证实。

话题跳转

人类对话中,并不会延续一个主题直到结束,中间会产生话题跳出再跳回的现象,这样就产生了无数种的节点形式,可以尝试接入(复制,引用)图中的其他子节点。

实例:

尽管这个系统还存在上述问题,但是这个方法产生了一个看似可行的工程方案:客服系统的辅助工具,对用户的问题给出历史回答的辅助参考。由于仅仅是辅助工具,客服可以根据具体情况来决定是否采用参考结果。由于这个系统可以从零开始,而且根据数据的增多,辅助的效果会更好。另外,相比当下的智能客服系统,这个辅助系统,简化了用户配置的过程,降低了普通用户的学习成本。

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.