当前位置: 首页 > Linux

对话系统原理与实践

时间:2023-04-06 20:29:57 Linux

极牛技术分享活动极牛技术实践分享系列是极牛联合顶级VC、技术达人为企业和技术人员提供的系统性线上技术分享活动。每期不同技术话题,与行业专家深入探讨,着力解决技术难点,推动技术创新。通过鸡牛在线技术分享群,隔周三20点准时开课。欢迎各院校、企业的行业专家和技术人员报名。本期主题对话系统原理与实践介绍来也助手联合创始人兼CTO胡一川。Assistant也希望通过语义、对话、推荐等技术,打造一款真正可靠的基于AI+HI的助手产品。胡一川联合创立了视频推荐引擎今晚看什么,2012年被百度收购,后在百度担任架构师。胡一川毕业于清华大学,获学士和硕士学位,获宾夕法尼亚大学博士学位。摘要:在很多场景下,对话式用户界面(CUI-ConversationalUserInterface)比图形用户界面(GUI-GraphicalUserInterface)更加自然高效。在过去的一年里,CUI受到了广泛关注并取得了快速发展。微软提出了以对话为平台的战略,FacebookMessenger上出现了各种聊天机器人,许多与CUI相关的创业公司也应运而生。本次分享主要介绍对话系统的原理和实践,包括对话系统中语义理解、对话管理等模块的技术原理,以及如何构建一个可靠可用的对话系统。胡一川老师主要给大家分享的是对话技术,也就是让机器与人进行自然语言对话的技术。采用英文PPT和中文介绍进行详细讲解。大家好,感谢姬牛的邀请。今天很高兴和大家分享对话系统的原理和实践。Assistant也希望通过语义、对话和推荐技术打造真正可靠的助手产品。我们目前的产品形态是微信服务号。用户通过自然对话与服务账号进行交互,获取日程管理、用车、咖啡、跑腿等多种服务。对话系统原理与实践这是今天分享的大纲。主要包括四个部分:首先介绍对话系统的背景和整体架构;然后介绍对话系统的两个关键部分,即自然语言理解(NLU)和对话管理(DM);最后说说助手在打造对话系统方面的思考和实验。什么是对话系统?让我们首先定义什么是对话。其实,在生活和工作的每一天,我们都在通过对话获取信息、表达观点、表达情感。对话有几个特点:1)角色转换:对话中通常有两个或两个以上的角色,每个角色交替表达;2)连贯性:对话的内容是相关的、有逻辑的;3)多模态:语音、文本和图片都可以成为对话中传递信息的方式。那么,对话系统的定义就是能够与人进行连贯对话的计算机系统。从另一个角度看,对话系统使得一种新的人机交互成为可能,即基于对话的交互(CUI:ConversationalUserInterface)。对话系统在三类场景下优势明显:1)当不方便用手操作鼠标或触摸屏时,比如开车时,用语音交互最方便;2)当基于自然语言的交互比基于图形的交互效率更高时,以打车为例,用户说“从公司叫车回家”效率更高》比打开APP输入起止点,然后点击下单;3)在现有人与人对话的场景下,对话系统可以帮助提高效率和降低成本,比如客服和用户之间的对话。下面我们来看一下对话系统的一些具体应用。每个人都熟悉Siri,它在所有iOS设备上都可用。与Siri类似,Cortana是微软推出的一款个人助理应用,主要在Windows系统中使用。亚马逊的Echo是过去一年非常火爆的智能音箱,销量超过500万台。用户可以通过语音交互获取信息、商品和服务。最后一个例子就是助理来也。我们采用AI+HI的方式,专注于懂你,高完成度。这些产品后来都使用了对话系统。对话系统由五个主要部分组成:1)语音识别(ASR)将原始语音信号转换为文本信息;2)自然语言理解(NLU)将识别的文本信息转化为机器可以理解的语义表示;3)对话管理(DM)根据对话的状态决定系统应该采取什么动作。这里的action可以理解为机器需要表达什么;4)自然语言生成(NLG)将系统动作转化为自然语言文本;5)语音合成(TTS)将自然语言文本转换成语音输出给用户。当然,有些对话系统的输入输出不一定是语音,而是文本,所以并不是每个对话系统都包含语音识别和语音合成这两个模块。这是对话系统的架构图。图中的1、2、3、4、5就是刚才介绍的对话系统中的五个模块。这个架构图可以更清楚的看到各个模块的输入输出,以及模块之间的协作关系。接下来我们重点关注自然语言理解(NLU)和对话管理(DM)这两个模块,也就是图中红框标注的两个模块。自然语言理解(NLU)的目标是将文本信息转换为机器可以处理的语义表示。因为同一个意思可以有很多不同的表达方式,所以对于机器来说,理解句子中每个词的确切意思并不重要,重要的是理解这句话表达的意思。在上面的例子中,这三个句子的字面意思完全不同,但表达的意思相似,即用户想要预约上门保洁服务。NLU面临着几个挑战。首先,语音识别错误率通常在10-20%,影响语义理解的准确性。其次,自然语言表达的语义存在不确定性,同一个句子的语义在不同语境下可能完全不同。比如用户说“KFCishome”,这可能是外卖需求,也可能是网约车需求,需要上下文才能更好理解。再比如,如果用户说“wakemeupat8o'clocktomorrowmorning”,如果它发生在“tomorrowmorning”23:59,则表示“thenextmorning”,如果它发生在“tomorrowmorning”00:01”很可能是指“那天早上”。最后,自然语言经常出现不流畅,有错误、重复等。我刚才提到机器理解一个句子时,每个词的确切含义并不重要,重要的是句子的意思。为了让机器能够处理它,我们使用语义表示来表示自然语言的含义。语义表示可以用意图+槽的方式来描述。intent是这句话表达的意思,slot是表达意图所需要的具体参数,以slot和value对的形式表示。比如“makeappointmentforcleaningladythisSundaymorning”这句话的意图是“发起请求”,slot是“servicetype=cleaning,servicedate=20161127”。NLU要做的就是将自然语言转化为这种结构化的语义表示。下面介绍几种NLU的方法。第一种是基于规则的方法。大致思路是定义很多语法规则,即表达某种意思的特定方式,然后根据规则解析输入的文本。上图展示了一个基于规则的NLU模块在预订机票的场景中。这种方法的优点是非常灵活,可以定义各种规则,不依赖于训练数据。当然缺点也很明显,就是在复杂的场景中需要用到的规则非常多,而这些规则几乎不可能一一列举。因此,基于规则的NLU只适用于比较简单的场景,适合快速制作简单易用的语义理解模块。当数据积累到一定程度时,就可以采用统计的方法。基于统计的NLU使用数据驱动的方法来解决意图识别和实体提取的问题。意图识别可以表述为分类问题,其中输入是文本特征,输出是它所属的意图类别。传统的机器学习模型,如SVM和Adaboost,可以用来解决这个问题。实体抽取可以描述为一个序列标注问题,输入是文本特征,输出是每个词或每个词属于一个实体的概率。传统的机器学习模型,如HMM和CRF,可以用来解决这个问题。如果数据量足够大,还可以采用基于神经网络的方法进行意图识别和实体抽取,通常可以获得较好的效果。与基于规则的NLU相比,基于统计的方法完全由数据驱动。数据越多效果越好,模型也越稳健。缺点是需要训练数据,特别是如果使用深度学习,需要很多。在实践中,这两种方法通常结合使用:1)当没有数据时,先基于规则,当有数据时,逐渐转化为统计模型;2)基于统计的方法覆盖了大部分场景,在一些极端场景下使用基于规则的方法来保证有效性。可以说NLU是所有对话系统的基础。目前,一些公司将NLU作为云服务提供,以方便其他产品快速具备语义理解能力。比如Facebook的wit.ai、谷歌的api.ai、微软的luis.ai都是类似的服务平台。用户上传数据,平台根据数据训练模型,并提供接口供用户调用。使用此类服务??的优势在于可以快速构建数据驱动的NLU模块。缺点是这些平台不够灵活,因为它们强调通用性。如果有定制化的需求,就很难满足。这是luis.ai提供的NLU服务示例。输入是“11月28日下午3:00在公司开会”。在返回结果中,可以正确识别意图为创建日程,并可以准确提取对应的日期、时间、地点等实体。下面介绍一下对话系统中另一个重要的模块:对话管理(DM)。DM是对话系统的大脑。它主要做两件事:1)维护和更新对话框的状态。对话状态是机器可以处理的数据表示,包括所有可能影响下一步决策的信息,如NLU模块的输出、用户特征等;2)根据当前对话状态,选择下一个合适的动作。举个具体的例子,用户说“叫我汽车之家”,此时对话状态包括NLU模块的输出、用户的位置、历史行为等特征。在这种状态下,系统可能会采取几个动作:1)询问用户起点,例如“你从哪里开始?”;2)与用户确认出发点,如“要从公司出发吗?”;用户叫车,“马上给你叫车,从公司回家。”还有一些常见的DM。第一种是基于有限状态机(FSM),它明确定义了对话系统应具有的状态。每次DM有新的输入,对话状态就根据输入跳转。跳转到下一状态后,会执行相应的动作。上图是一个对话系统中基于FSM的DM,它控制对象前后左右移动或停止。你可以清楚地看到每个状态的定义和状态之间的转换逻辑。基于FSM的DM的优点是使用方便,缺点是状态的定义和每个状态下对应的动作必须手动设计,不适合复杂的场景。另一种类型的DM采用基于统计的方法。简单来说,它将对话表示为部分可观察的马尔可夫决策过程。所谓部分可见是因为DM的输入是不确定的,比如NLU的结果可能是错误的。因此,对话状态不再是特定马尔可夫链中的特定状态,而是所有状态的概率分布。在每个状态下,系统都会对执行一个动作有相应的奖励。基于此,在每个对话状态下,选择下一个动作的策略是选择期望奖励最大的动作。该方法具有以下优点:1)只需要定义马尔可夫决策过程中的状态和动作,通过学习可以得到状态间的转移关系;2)使用强化学习,可以在线学习最优的动作选择策略。当然,这种方法也有缺点,就是仍然需要手动定义状态,所以这种方法在不同领域的通用性不是很强。最后一种DM方法基于神经网络。其基本思想是直接用神经网络学习动作选择的策略,即将NLU等特征的输出作为神经网络的输入,动作选择作为神经网络的输出网络。这样做的好处是对话状态直接由神经网络的隐向量表示,不再需要手动显式定义对话状态。当然,这种方法的问题是需要大量的数据来训练神经网络,其实际效果还有待大规模应用验证。来也助手曾尝试在对话系统中使用这种方法,但更多的是传统机器学习方法与基于深度学习的方法相结合。刚刚介绍了对话系统中的两个重要模块:自然语言理解(NLU)和对话管理(DM)。在实践中构建和使用对话系统时,存在几个挑战:1)用户对错误的容忍度非常低。由于自然语言的表达方式非常灵活多变,目前的纯自动对话系统往往达不到用户的期望。例如,Siri在很多情况下仍然不能很好地理解用户的话;2)在某些场景下,如果只使用语音或文字对话系统,交互效率不一定是最高的;3)基于对话的人机交互目前还不是主流的交互方式,大部分用户不习惯。接下来,我想针对这三个挑战,谈谈在构建和使用对话系统时的一些想法和尝试。首先,为了提高对话系统的可靠性,我们采用AI+HI的方式,其中HI是HumanIntelligence的意思,即人类智能。AI+HI是指机器助手和人类助手相结合,为用户提供优质的体验。你为什么这样做?因为当真人可以与机器合作时,它可以产生正反馈:真人纠正机器错误->更好的用户体验->更多活跃用户->获得更高质量的数据->训练更好的模型->机器更好地帮助真人。HI与AI如何无缝协作?我们通过群聊把用户、AI、HI放在一个组里。根据置信度,AI可以判断什么时候HI应该加入group,什么样的HI应该加入group,HI什么时候应该介入。AI和HI的合作分为三种:1)当AI置信度高时,不需要HI介入,对话系统完全由AI来完成;2)当AI置信度不高时,AI生成候选动作辅助HI行动;3)当AI不确定性较高时,HI完全接管执行动作。在基于AI+HI的对话系统中,HI扮演了三个角色:1)为AI提供反馈,比如当NLU出现错误时,HI可以纠正错误,然后AI在纠正后的对话状态下继续工作;2)在AI的Executingactionswithassistance中,例如AI生成候选动作但不执行,HI判断并最终执行;3)生成标记数据,使AI不断进化。例如,HI的每一次纠错和执行动作都是一个标记样本,可以用来训练AI。刚才提到的第二个挑战是只用语音和文字,有时交互效率不够高。例如,用户通过自然语言叫车,然后想知道司机的实时位置。如果我们通过自然语言描述司机的位置“司机在XXX路上离你YY米”,体验会很差。我们解决这个问题的方法是采用多模态交互,即在语音和文字的基础上增加更多的交互形式,比如图形交互界面。上面的例子展示了用户通过自然语言交互叫车、查询司机位置、注销汽车的全过程。显然,通过地图显示司机的位置比用自然语言来描述司机的位置更准确、更高效。我们结合了文本消息和网络应用程序,用户可以使用对话和图形交互。刚才提到的第三个挑战是会话交互还不是主流,用户还不习惯。为了让用户更容易接受对话式交互,我们可以将对话系统与推荐系统结合起来,让对话系统不仅被动回复用户,还可以根据情况向用户推荐,主动与用户进行交流。上图显示,小助手还通过分析用户的习惯和喜好,在合适的场景下,主动向用户推荐打车、咖啡等服务。在这种情况下,用户往往不需要输入任何内容就可以得到需求的满足。同时,由于用户收到的推荐是基于场景的、个性化的,用户不会有打扰感,转化率也不错。Q&AQ1:目前人工智能聊天机器人能在多大程度上替代企业客服?A1:聊天机器人在基于特定知识库的客户服务场景中取得了不错的效果。比如淘宝、京东的客服机器人已经可以解答很多问题了。当然,前提是语料库足够,质量足够高。Q2:如何快速搭建简单场景的聊天机器人?A2:首先,你需要一个懂AI的产品经理,明确你的对话场景,包括意图、实体、动作等。其次,想办法收集一批对话数据,并标注出来,越多越好.最后,可以使用现有的NLU服务构建一个简单的聊天机器人。技术分享请关注鸡牛公众号回复