且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

思必驰推出启发式对话系统,关注知识传播的会话精灵

更新时间:2022-08-22 14:06:56

对于对话系统来说,一般都可以分为特征处理、理解意图和生成答案等过程。思必驰北京研发院 NLP 负责人葛付江解释,在接收问句后,系统会进行进行分词、词性标注以及命名实体识别等过程以完成问句的特征处理过程。


在识别出实体后,系统会判断问句所属的领域,并先限定问句的场景,这一般可以通过模版或其它分类模型完成。而限定领域其实是为了进一步通过预定义的槽位(Slot)确定用户的结构化意图,从问句抽取的实体也会填补到对应槽位中。随后的对话管理模块就要判断槽位到底是不是已经满足要求,如果不满足可能需要进一步提问。根据这些结构化的提问信息,系统最终会从数据服务中查找对应的信息,并生成非常自然的语句。


思必驰推出启发式对话系统,关注知识传播的会话精灵

图 1:对话流程


如上所示当提问「定一张明天去上海的机票」时,特征处理会抽取出时间实体「明天」。然后识别为订票领域并填补订票所需要的时间、出发地、目的地等信息。当槽位都满足时,系统会根据时间、出发地、目的地等信息查找具体的机票信息,并生成生动的回答或执行订票操作。


同样遵循一般的对话系统流程,会话精灵能以知识图谱的形式帮助企业有效地进行复杂知识沉淀和管理,并通过启发式对话适当引导用户关注焦点,帮助用户获取更清晰准确的信息。


会话精灵可以先通过语音识别将输入转为文字,或直接输入文字以进行自然语言理解。一般语义理解可以使用规则系统进行解析,也可以使用 sequence to sequence 等深度学习模型进行建模。解析完的语义可确定对应的意图和话题,并通过 QA 对和知识图谱检索答案。「会话精灵」系统并不会止步于回答,它还会根据知识图谱检索其它相关的话题,并向用户提问以引导对话的发展。


初敏说:「其实从外表看起来会话精灵还是一个小的会话机器人,所以主要的模块和一般的会话机器人差不多。一般语音和文字都可以作为会话精灵的输入,然后经过自然语言理解以及对话管理而生成答案。」


但一般的会话系统仅止步于给出答案,目前通过提问进行学习的系统还处于研究阶段。初敏表示:「会话精灵与一般系统最大的区别可以分为两部分,一个是我们称之为叫启发式的对话,另一个是我们采用知识型而不是任务型的对话内容。听音乐订酒店等传统任务型对话系统有一个明确的目标来完成一件事情,用户只要发出指令就能正确执行特定的任务。」


启发式问答系统


会话精灵并不聚焦于完成任务,它更希望创造机器与用户之间的信息交流。初敏表示:「不管是人还是公司,我们都需要和别人沟通来传播核心信息。例如对于微信文章,历史文章很难再大量获得用户的关注,除非是人力将它们重新链接到当前的文章。所以我们希望这些核心信息能用更好的知识组织形式,并重新与用户进行交互。」


因为个人都有自己的私有信息,企业也有自己的沟通目标,所以我们并不能奢望机器人什么都知道,只需要它在特定领域有很好的体验就行。初敏表示会话精灵特别的地方在于信息知识的传播能力,而不是完成任务的能力。她说:「当用户准备问问题时,很可能他也不确定具体需要什么样的信息或知识,而相反企业有一大堆想告诉用户的问题。所以我们需要做的就是延长对话的轮数,并规划用户可能需要获得哪些知识。这样通过七八条对话以后,企业基本就能把用户希望知道的核心知识都传递给他。」


所以会话精灵真正要解决的问题就是把企业信息与相应的知识点组织起来,然后它就可以在知识架构中规划一些路径与用户交流。这种方法可以让用户不需要费力提问,只需要执行一些挑选就可以与机器沟通。初敏说:「机器人主动引导对话是会话精灵最核心的能力,这种引导也是一种规划,系统会对接下来可能进行的话题进行规划。而这些话题也有一些是普通的,也就是说这些不是企业想传播的信息。如果用户提问这些普通的话题,系统会回答问题但不会主动启发这些沟通。而例如销售等另外一些企业希望传播的信息,系统会在对话中慢慢引导到那样的话题。」


完成这样的对话引导,首要的问题就是理解用户的提问。正如前文所述,系统需要对提问进行分词、命名实体识别与话题检测等过程。当用户输入语音或文字,系统会先转化为文字,然后再通过不同的深度方法与规则系统进行自然语言理解。一般规则系统会采用类似正则的语法,例如 [科研人员][时间] 发表过的 [文章]。而会话精灵也可以采用意图分类来理解自然语言,例如将关键词作为特征并利用机器学习进行文本分类。


解析自然语言后,生成的回答或引导需要系统对知识结构有完整的掌握,这样才能有针对性地提问相关问题。会话精灵的知识点通常可以分为两种,其中一种是 QA 对(也叫问答对)。每当用户提出问题后,系统会尝试检索是不是已经存在问答对与当前问题相似,如果有的话就能输出特定的回答。另外一些知识点是通过建立知识图谱,以知识卡片的形式来存储的,例如产品和技术的各种属性,这些信息都是知识性的问题。


对于 QA 对来说,重要的是计算句子间的相似性,这样才能检索到与已有问句相似的问题。如下葛付江向我们展示了一种计算语句相似性的基础方法,我们可以使用 LSTM 分别抽取两个语句的语义信息,再计算这两个语义向量的距离而求出它们是不是相似 [1]。如果相似性达到了某个阈值,那么我们就能输出对应的已有回答信息。


思必驰推出启发式对话系统,关注知识传播的会话精灵

图 2:基于 RNN 的句子相似度计算


当然,我们也可以使用其它更为优秀的方法判断语句相似性,包括序列匹配网络和最近非常流行的 Transformer。其中 Transformer 采用全注意力模型以及编码器解码器架构匹配原句与目标句之间的相似性。


解析的语义还能通过知识图谱检索对应知识,其最直观的方式是通过逻辑表达式,例如将问句表述为实体及实体之间的关系。我们随后可以利用这种严格的逻辑表达式搜索回答问题所需的知识。但知识图谱在规模较大的情况下很难处理,因为用户的表达很难严格地与知识图谱匹配。


一般系统会同时检索 QA 对与知识图谱,如果只能检索出一种知识点,那么系统就会返回这一知识点。但如果两种知识点都能检索到,那么系统会根据对话管理与上下文信息对比它们之间的置信度,并选择更好的回答。


这一过程其实与一般的对话系统非常相似,但会话精灵更注重的是生成回答之后,系统该如何引导问答的发展。初敏说:「当系统回答问题后,我们能获取当前的话题,因此系统需要对后续的话题进行规划。也许下一步还处于当前话题,也许就跳到了下一个话题,但这些话题内都有系统建议的另外一些知识点。」这些知识点可能是以提问的形式指出,例如系统在回答了关于长短期记忆(LSTM)网络的问题后,它可能会问「你想不想进一步了解门控循环神经网络(GRU)?」


当然,用户可以对系统提出的问题进行选择性接受,也可以重新对其它关心的问题进行提问。但用户再一次提问后,系统会给出回答并重新进行规划,这种提问与规划的循环可以一直持续到用户获得了足够多的知识。


知识问答


实现启发式问答还有一个非常重要的问题,即在会话精灵主动提出新的问题时,如何选择候选知识点。初敏说:「选择候选知识点有非常多的策略,例如横向扩展或互补扩展。其实知识图谱可以形象地看作一张表格,表头是该知识点的实体,而表格单元是该实体的属性。系统可以候选相关的实体,也可以候选同一实体的不同属性。」例如在实体为卷积神经网络的知识点中,属性可以是它的层级数,也可以是它做图像分类的效果。而系统同样可以选择展示与卷积神经网络相关的实体,例如全连接网络或循环神经网络等。


思必驰推出启发式对话系统,关注知识传播的会话精灵


选择候选知识点依赖于系统存储的知识结构,因为它可以快速检索类似的知识点。在会话精灵的知识库中,会分为一些话题,比如说监督学习、无监督学习以及强化学习等。而每一个话题会以树状的结构储存知识点,例如监督学习可分为回归问题、分类问题与标注问题等子节点,而分类问题又可以继续向下分为 Logistic 回归、K 近邻、支持向量机和神经网络等子节点。树状结构中每一个节点都可以存储两种知识,即 QA 对与知识卡片。


其中每一个节点可以有多个问答对,问题和答案也可以有多个。而知识卡片即知识图谱,例如在支持向量机这一实体中,大间隔分类、支持向量、核函数等属性就以序列的方式组织在一起,其中核函数又是另一种实体,它又有一些属性。


当系统根据知识库给出了一系列的候选知识点后,它需要判断哪些知识点是重要的,并且需要优先向用户介绍。初敏表示这种排序也有非常多的策略,例如我们可以根据先验概率先初始化各种候选知识点的权重,并给最可能需要了解的知识加一个比较大的权重。然后系统会根据用户反馈进行在线学习以更新权重,直观上来说用户总是接受的知识点应该提高权重,而总是拒绝的知识点应该降低权重。


其实这个对话系统的主***分并不是基于深度网络的,因为目前很多聊天机器人并没有一个明确的目的,而工业上是有明确的目的需要传播信息,所以工业上的对话系统更多是基于知识图谱与规则系统。不过初敏表示她们正在尝试结合强化学习来更新候选知识点的权重:「很多基于强化学习的聊天机器人很难有优秀的度量方法来衡量对话的质量,也很难判断到底该给回答怎样的奖励。但是像对话精灵这样的架构,强化学习是可以很好地嵌入其中,因为系统可以直接根据用户接受或拒绝推荐的知识点而快速地分配奖励。」


一般在使用强化学习及 Self-play 的方式训练对话机器人的过程中,我们经常根据智能体对话的长度而赋予奖励。但这常常会造成对话陷入一种死循环,也就是说智能体会重复说一些「你好」等正确但又无意义的话语。而对话精灵可以根据用户接受的知识点推荐数而确定真正的对话长度,因此也就能给智能体非常恰当的奖励,依据这种奖励进行对话管理将有非常大的优势。


思必驰推出启发式对话系统,关注知识传播的会话精灵

图 3:基于马尔科夫决策过程(Markov Decision Processes)的对话管理


葛付江表示对话管理一般可以表示成状态的变换过程,即马尔可夫决策过程 [2]。基于强化学习的系统需要将对话组织成状态,并在每一个状态下选择不同的动作或主题规划,且不同的规划能有不一样奖励。对于对话管理,强化学习智能体会模拟多轮对话,并最后反过来判断为当前对话规划什么样的主题比较合适。在整个过程中,奖励函数是非常核心以及难以定义的部分,但会话精灵能有比较好的处理。


参考文献:

[1] Siamese Recurrent Architectures for Learning Sentence Similarity, AAAI,2016

[2] The Markov Assumption in Spoken Dialogue Management, SIGDIAL, 2005



本文为机器之心原创,转载请联系原作者获得授权