2021年9月10日-9月13日,2021世界机器人大会在北京举行,本届大会以“共享新成果,共注新动能”为主题,全面展示机器人领域新技术、新产品、新模式、新业态,围绕机器人研究、应用领域及人工智能的创新发展开展高水平交流活动。本届大会包括论坛、博览会、机器人大赛等活动,论坛由3天主论坛、20余场专题论坛组成。大会邀请了300余位国内外顶尖科学家、国际组织代表、企业家代表等共同参会,围绕科技前沿、技术创新与突破、新兴产业应用等巅峰论道,机器人的新发展、新风向、新机遇、新应用和新融合,专题论坛聚焦“专精特新”,钻研细分领域,凝聚行业巅峰。
58同城TEG AI Lab 智能问答部负责人韩伟受邀出席,并做了以<<黄页商家智能聊天助手用户体验深度优化>>为主题的演讲。
本文根据分享实录整理,欢迎大家阅读分享。
01
背 景
黄页商家智能聊天助手通过坐席分流、智能问答、商机引导、商机挖掘等功能来提升对话机器人的商机转化率,提升C端用户的对话体验和B端商家的使用体验,本文主要分享我们如何深度优化黄页各类目的智能问答,多轮对话和商机质量识别等,来提升C端用户对话体验和提升B端商家的获客体验,最后做总结和展望。
02
提升C端用户对话体验-提升对话流畅度
为了提升C端用户的对话体验,我们首先定义了对话流畅度这个指标,对话流畅度是我们评价C端用户体验的重要指标,用来衡量机器人会话的流畅程度。如果在机器人与用户的某一轮对话过程中,机器人产生了错误的回答,我们就认为该轮对话不流畅。常见的不流畅原因包括错答、引导不当、抢答、重复发问等。在单轮对话流畅定义的基础上,为了评价AI对话机器人的整体会话能力,我们定义了整轮流畅度,整轮会话流畅是指整个会话过程中所有轮对话都流畅,则该会话被认为是整轮流畅,同时,为了评判AI对话机器人的深度会话能力,我们定义了截止第5轮会话流畅度,它是指,针对会话超过5轮以上的对话,我们会考量前5轮会话的流畅程度,如果前5轮会话都是流畅的,那么我们认为其截至第5轮会话流畅。在优化之初,整轮会话流畅度是83%,截止5轮会话流畅度是74%。
对话机器人通过这两个模块与用户进行交互,它们是决定用户体验的主要部分。我们对于流畅度的优化也是从这两部分着手,通过不断提高这两部分的效果来提高用户体验。
优化QABot提升对话流畅度
QABot对用户流畅度的影响主要体现在以下两方面:第一类:QABot没有正确识别用户问题的意图,回复了错误的答案从而令用户产生困惑,进而影响用户体验;
第二类:QABot没有识别用户的问题,未能对意图进行召回,用户就会发现自己已经提出的需求,对话机器人会再次重复询问,造成体验不佳;
所以,我们重点对QABot正确分类问题的能力,以及对问题的召回能力进行提高以提升用户对话体验。
针对QABot模型效果能力的提高,我们进行过一些尝试,包括浅层网络FastText模型、DSSM模型,以及LSTM-DSSM等。
FastText是Facebook于2016年开源的一个词向量计算和文本分类工具,其特点是训练速度快,同时能够取得一定的效果,它能够在文本分类任务中迅速取得baseline效果,在训练的过程中涉及到两个技巧:n-gram特征的引入以及分层Softmax分类,但是由于FastText的模型相对简单,其效果难以达到要求。
原生DSSM模型出自微软研究院,主要方法是将query和doc通过深度网络映射到相同维度的空间中,通过最大化其余弦相似度来进行训练,从而训练得到隐含语义模型,原生DSSM 采用词袋模型(BOW),因此丧失了语序信息和上下文信息,所以,我们引入LSTM作为句子的表征,LSTM-DSSM用来解决长距离依赖和语序的问题,效果取得了一定的提升。
在预训练模型出现后,我们得以进一步挖掘这些数据的潜力。实践中,BERT模型作为此类半监督模型的代表,在分类任务中取得了良好的效果。其主要特点是预训练掩码语言模型 微调两个步骤的结合,同时为了配合Transformer encoder的使用,使用了位置编码机制。
除了优化模型提升模型的正确分类能力之外,对问题的召回能力同样重要,当线上QABot有结果率小于真实有结果率的时候,也就意味着问答模型的召回能力不足,真实线上用户的好多问题得不到答案,从而影响了C端用户体验,因此,为了进一步提升QABot对问题的召回识别能力,我们引入检索式问答模型。检索问答模型分为离线构建索引和线上预测两个步骤:第一步,在离线构建索引阶段,我们首先利用已有数据训练得到一个表征模型,利用该表征模型对标注数据进行编码得到对应的文本向量表示,建立向量检索库;第二步,在线上预测的时候,首先利用表征模型对用户query进行编码,得到用户query的向量表示,之后利用Faiss向量检索工具检索离线向量库召回topK问题,最后通过阈值比较等一些Rank策略筛选符合要求的结果,得到最终的答案给到用户。
所以,表征模型是决定效果优劣的关键,对于表征模型主要对比SPTM、BERT、SentenceBert以及ContrastiveBert四种类型,这里主要介绍一下对比学习SentenceBert以及ContrastiveBert。
SentenceBERT的训练主要是基于已有标注数据集进行的,首先对已有标注数据集按照标注标签进行聚类,接下来对聚类之后的数据进行划分,相同标签下两个数据之间标签设定为1,不同标签下两个数据之间标签设定为0,之后基于划分之后的数据训练SentenceBert分类模型并保存最优模型;最后我们将SentenceBERT模型最后一层的输出进行mean pooling作为文本的向量表示;ContrastiveBert模型主要是将对比学习策略引入文本表示中,具体做法是:首先对已有标注数据按照标注标签进行聚类;接下来对数据进行处理,从每一个簇中任意筛选两个数据互为正例,从其他簇中随机筛选一条数据作为简单负例,在进行对比学习训练过程中,对于batch中的每一条数据除其对应的正例以外其他数据均作为负例;同时为了进一步提升文本表示模型的编码能力,利用BM25算法从拒识数据集中筛选一条数据作为难负例。
实验证明,单独引入检索模块ContrastiveBert效果达到最优,从而验证引入对比学习策略能够增强文本表示编码能力;在分类 检索效果对比中,引入SentenceBert或ContrastiveBert文本表示相较于进行单纯分类均有较大提升。
优化TaskBot商机引导提升流畅度
通过QABot回答完用户的问题后,接下来对话机器人通过TaskBot(任务型对话)来对用户进行商机引导。
通常任务型对话系统(TaskBot)由自然语言理解(NLU)、对话状态追踪(DST)、对话策略(DP)和自然语言生成(NLG)四个模块构成。在我们的对话系统架构中,将对话状态追踪与对话策略两个模块一起建模为对话管理(DM)模块。对话管理模块经历了两个主要版本的迭代,在初始版本我们实现了基于有限状态机(FSM)的节点配置的对话管理系统,将对话配置抽象为四种节点,可以高速快捷的配置对话流;由于配置有局限性,后续我们在部分类目上采用强化学习(RL)构建对话管理器,并取得了不错的效果。上图展示了整个对话系统的架构:
基于节点配置的对话管理(V1)基于有限状态机(FSM)原理,本质上是把我们的对话过程抽象为基于对话状态的跳转图。其主要是通过不同功能节点(Trigger、Slot、Response、Function等)的组合,实现管理对话流程。首先是开始节点,是多轮对话的入口;其次是触发节点,主要是根据意图和槽位控制对话走不同的会话流程;然后是Slot节点则是控制要问哪些槽位信息,与用户进行不断交互;再有回复节点是如何回复用户的问题;最后是结束节点,代表本次会话结束。状态对话管理器会综合考虑用户的上下文信息,这些信息存储在Redis中,在跳转图,决定用户的下一次跳转,输出对应的回复。其优点是能够快速响应业务,线上问题能快速解决,但其固定死板,自然度不够,需要人工编写,耗时耗力。
鉴于节点配置的对话管理存在上述缺陷,我们引入了基于强化学习的对话管理模型(V2版本,架构如下图)。强化学习/增强学习是机器学习的范式和方法论之一,主要用于描述、解决智能体与环境的交互,通过学习策略以达到回报最大化,实现特定目标的问题。强化学习主要有以下元素,环境是智能体存在的世界,能够与它进行交互,可以理解为特征空间。状态和动作是指,在每次交互中,智能体能够看到环境的一个观察,并决定采取哪个动作。环境会通过观察高速智能体当前的状态,状态可以理解为特征,动作集则可以分为离散和连续。奖赏则是智能体交互中会得到环境的一个信号,告诉智能体当前环境状态的好坏。策略则是在当前状态下采取的动作,策略分为确定与随机两种。轨迹则是状态和动作的一个序列,由state、action与reward构成三元组。强化学习的目标是智能体与环境进行交互时选择一个能够获得最大化期望回报的策略。基于上下文的分类是用DQN进行的,当前网络作为表征网络后接softmax分类,目前基于上下文的分类模型 强化学习模型进行联合训练。上述联合训练的目标便是选择最适合本轮的回复内容,即商机引导的内容。
通过上述,包括QABot、TaskBot等相关模块的优化,C端用户对话流畅度取得了显著的提升,其中整轮流畅度达到了93.5%,截止5轮流畅度也达到了90%左右。
03
提升B端商家获客体验-商机质量分层和提升
通过详实的数据分析我们发现,除了广告类商机,部分商机由于用户需求不紧迫或者无需求也严重影响着商机质量。于是,为了进一步明确用户需求,在收集完成用户商机后,我们设计弹出“探需”卡片,获取用户的服务需求迫切程度,整合广告商机识别和商机“探需”信息,从而,识别高质量商机。最终,在B端用户体验上,我们初步构建了商机质量评价体系,实现商机分层,高质量商机挖掘准确率95%,召回率77%,从而,提升了B端商家体验。
提升商机槽位丰富度
本地服务中槽位识别任务具有如下特点:
1、槽位类型数量庞大:
由于黄页的业务线较多,每个业务线都有自己的关键信息类别,当前共需要识别50种左右的槽位,相对于经典的NER场景,其实体数量较为庞大;
2、领域相关性:
实体识别与业务线特点高度相关,不同业务线对于槽位有各自不同的定义;
3、高优槽位准确率要求高:
针对五八黄页槽位识别的任务特点,在技术选型上采用了“实体词典匹配 规则匹配 模型预测”的架构(如下图)。
1、 实体词典:
a、实体词典对于高频实体可以准确而快速的进行识别;
b、可以快速接入新业务场景;
c、词典的性能好,在算法实现合适的情况下,可以达到非常快的响应速度,对于一些调用量较大、性能要求较高的场景,词典匹配是一个较好的实现方案;
d、对于强领域相关的实体,通过业务知识、离线挖掘获取强业务相关的实体,词典匹配可以发挥较好的作用。2、 模型预测:
虽然实体词典有上述的优点,但其存在泛化能力差,无法解决歧义的问题,且如果词典加入不当,很容易造成误召回的问题。因此,模型在解决长尾问题、解决实体歧义以及解决部分槽位(如地点)不适合使用词典的问题上,发挥着不可替代的作用。
3、 规则库:
在IDCNN CRF模型结构中,待识别query先经过Embedding层获取向量表示;然后经过空洞卷积层(IDCNN),IDCNN通过空洞卷积增大模型的感受野, 相较于传统的CNN,IDCNN能够捕捉更长的上下文信息,更适合序列标注这类需要全局信息的任务;在IDCNN之后经过一层全连接神经网络(FF层)后引入CRF,同样CRF的目的在于防止非法槽位标记(BIO)的出现。
NER任务中的解码器主要有Softmax与CRF,Softmax与CRF的主要区别在于他们对问题的设定不一样。在上述模型中,在NER任务上,我们看到很多深度学习之后都会接上一层CRF,那么CRF在整个过程中到底发挥着什么样的作用呢?通常我们直接使用逐帧softmax时,是将序列标注过程作为n个k分类问题,相当于每个token相互独立的进行分类(假设深度模型内部交互不明显的话),而采用CRF实质上是在进行一个k^n分类,相当于直接从所有的序列空间里找出转移概率最大的那条序列。其实质上是局部最优(token最优)与全局最优(序列最优)的区别,因而采用CRF能够有效避免出现非法的序列标记,从而确保序列有效。
Global Pointer是除了softmax和crf之外的另一种解码思路的代表,其期望在实体维度进行实体类型的预测,而不是像softmax一样在token维度进行。GlobalPointer是一个简化版的Multi-Head机制,每个Head负责预测一种实体类别,为提升模型效果,GlobalPointer同时引入了相对位置。对比softmax与CRF,GlobalPointer的优势可以总结为以下几点:a、可以兼顾序列标注的NER与嵌套NER;b、增强了模型对相对位置信息的获取;c、GlobalPointer的Loss是实体级别的Loss,这消除了GlobalPointer在训练场景与应用场景之间的不一致性。槽位识别模型效果数据,最终,我们进行了多组对比实验,以ALBert-Tiny CRF为baseLine,ALBert-Tiny GlobalPointer相比baseLine F1值提高了15.00%, Bert GlobalPointer相比baseLine提高了17%,考虑到线上推理时间要求,丰富度槽位识别我们最终选择了上线ALBert-Tiny GlobalPointer模型。通过引入商机质量识别模型和优化丰富度商机槽位,我们有效提升了B端商家的使用体验。
04
总结和展望
经过持续的深度优化,黄页商家智能聊天助手取得了较好的效果,机器人商机转化率达到了人工客服水平的95%,节省了数十名客服人力,对话流畅度达到94%,高质量商机挖掘准确率达到95%;同时,黄页商家智能聊天助手已商业化(冠名“微聊管家”)售卖给B端商家,当前开通商家数已经达到数万家,月收入平均数百万元,值得一提的是,这部分是AI技术作用于商业,纯AI服务带来的收入。