前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【实践】HMM模型在贝壳对话系统中的应用

【实践】HMM模型在贝壳对话系统中的应用

作者头像
zenRRan
发布2020-02-17 23:36:58
1.7K0
发布2020-02-17 23:36:58
举报

对话系统是一个庞大的系统,涉及的问题很多,本文主要讲解隐马尔可夫模型(Hidden Markov Model,HMM)在对话管理(Dialog Management,DM)中的应用。DM在对话系统中的作用是维护对话状态并根据当前对话状态选择下一步合适的动作。 在贝壳找房APP中,客户和经纪人的对话过程可以看作是一个时间序列。在对话过程中,经纪人需要基于当前的对话状态对客户的消息作出合适的回应,即选择合适的动作。因此,经纪人的动作决策是一个基于时间序列的问题。而HMM模型是比较经典的解决序列问题的机器学习模型,所以,在DM的动作决策问题上首先尝试了HMM模型。本文将结合实际案例从理论推导、模型构建、实验分析三个方面对HMM模型在DM中的应用进行详细解析。

1.问题背景

1.1 何为对话管理

对话管理是对话系统中的一个关键环节,它在整个对话系统中的位置如下图所示:

在上图中的对话系统流程中,首先是语音识别,产生语音识别结果;语言理解模块将语音识别结果映射成用户的意图、情感等信息;基于语言理解结果,对话管理模块决策需要执行的系统动作;基于对话管理模块的决策结果,语言生成模块生成适当的自然语言;语音合成模块将语言生成结果转化成语音反馈给用户这样就完成了对话系统的整个流程。由上述内容可知,对话管理模块是对话系统中的关键一环,它决定着后续内容的方向,因此,在对话系统中需要不断的优化对话管理模块的效果。

1.2 我们面临的问题

在贝壳找房APP中,客户和经纪人之间的对话大多是在不断的发掘客户对于房子的各项需求,如果在对话过程中,客户将其联系方式(电话、微信)主动告诉了经纪人,则我们称之为“转委托”,“转委托”是客户与经纪人建立线下关系的关键标志,“转委托”一旦发生,就意味着客户愿意从线上走到线下,进行实地看房,因此,提高转委托率是对话系统的优化目标之一。因为对话过程可以看做是客户对经纪人建立信任的过程,信任程度越高,转委托几率就越大。因此,针对客户的对话内容,如果将客户当前对话内容对应的信任程度定义成一个“状态”,那么在不同的“状态”下,经纪人应该做出什么样的动作才能提升客户的信任程度,并促使“转委托”发生呢?上述问题简单来说就是需要我们的系统指导经纪人在“正确的时间”作出“正确的动作”,这也是我们对话系统面临的问题之一。

举个例子:

在上述表格中,针对不同的客户消息,经纪人需要给出合适的回答。在现实中,有些对话完成了转委托,有些对话则无果而终,简单来看如下图所示:

上述的“语句1”“语句2”...表示的是客户说的话或者是客户当前所处的“状态”,“动作1”“动作2”...表示的是经纪人作出的动作,由此可见,经纪人不同的动作类型可以促使客户状态的转移,最终会影响转委托是否成功。因此,分析经纪人的什么动作类型能够促使转委托就十分重要。在多轮对话中解决动作决策的方法比较多,下面将详细讲解HMM模型在对话管理中的应用。

2.HMM模型简介

2.1 何为HMM模型

隐马尔科夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程,其目的是从可观察的序列结果来确定隐含的参数,然后根据这些隐含参数确定的模型对数据进一步分析。所谓的马尔科夫过程是不具备记忆特质的,换言之,马尔科夫过程的条件概率仅与系统的当前状态相关,而与它的历史或未来的状态是独立、不相关的,用数学语言可以描述为:

具备离散状态的马尔科夫过程通常被称为马尔科夫链,一个马尔科夫链的结构如图:

如上图所示,对于HMM模型,,假设S是所有可能的隐状态集合,O是所有可能的观测状态的集合,即:

其中,k是隐藏状态数,m是可能的观测状态数。

对于一个长度T的序列,I为对应的隐状态序列,O为对应的观测序列,即:

HMM模型做了两个很重要的假设:

  • 齐次马尔科夫链假设。即上述提及的马尔科夫过程,其任意时刻的隐藏状态只依赖于它前一个隐藏状态。k种隐状态之间的转移概率我们用一个矩阵表示,则表示隐状态i转移到隐状态j的概率。
  • 观测独立性假设。即任意时刻的观测状态只与依赖于当前时刻的隐状态。k种隐状态到m种观测状态转移概率我们用一个矩阵表示,则表示t时刻,隐状态为观测状态为的发射概率。

除上述条件之外,还需要一组在时刻时隐状态的概率分布矩阵π,则π表示每个隐状态的初始概率。

结合上述马尔科夫链和HMM模型的阐述可知,一个HMM模型可由以下元素确定:

  • obs:观测序列
  • state:隐状态序列

(k种隐状态,m种观测状态)

  • start_p:初始概率(隐状态的初始概率)
  • trans_p:转移概率(隐状态到隐状态的转移概率)
  • emit_p:发射概率(隐状态到观测状态的发射概率)

即HMM模型的参数为:π

2.2 HMM模型可以解决什么问题

HMM模型可以解决3种问题:

  1. 已知参数(?=(A,B,π)),在这些参数下,计算一个观测序列出现的概率;

解决方法:前向、后向算法

  1. 已知观测序列O和参数?,找出一个能够很好解释O的隐状态序列;

解决方法:维特比算法

  1. 已知观测序列O,求使得P(O|?)最大的参数;

解决方法:Baum-Welch算法(EM算法)

由于本文介绍的HMM模型在对话管理中的应用就是已知观测序列,求参数的学习问题,对应的是上述三个问题中的第3个问题,由于隐状态序列是未知的,因此采用的是EM算法解决。下一节将从理论层面介绍EM算法。

3.EM算法简介

3.1 何为EM算法

EM算法即期望最大化(Expectation-Maximum,EM)算法,我们需要在E步求出联合分布基于条件概率的期望,其中为当前的模型参数,然后再M步最大化这个期望,得到更显的参数?。接着不停的进行EM迭代,直到模型参数的值收敛为止。EM算法的思想:

  1. 给参数一个初始值
  2. 根据给定的参数初始值和观测序列,求隐变量的后验概率分布。(E)
  3. 上一步中隐变量已经出来了,于是根据极大似然估计求最优的参数。(M)
  4. 因为第2,3步的结果可能不是最优的,所以重复第2,3步,直至收敛。

3.2 EM算法的理论推导

E步:建立参数的似然函数:

M步:求使得上式极大化的?:

将似然函数展开:

接下来根据极大似然估计求参数π,A,B:

4.实验过程

上面三个章节分别讲述了问题的背景和HMM模型、EM算法的理论背景,接下来将从建模过程上介绍为什么我们的问题可以选用HMM模型,并通过实验结果分析我们是如何在DM中做动作决策的。

4.1 为什么可以选用HMM模型

能够使用HMM模型来解决的问题一般具有两个特征:一是要研究的问题是基于序列的,二是研究的问题中包含两类数据,一类是可以观测到的,即观测序列,另一类是不能观测到的,以隐藏状态序列。

而我们在贝壳找房APP获得的客户和经纪人之间的对话记录可以看做是一个基于时间的序列,两者的对话过程是客户不断对经纪人建立信任的过程,只有当两者的对话到达一定程度,也就是说客户能够充分信任经纪人时,他才会将自己的联系方式发送给经纪人,即完成“转委托”。然而,在数据中,我们只能观测到客户和经纪对话的内容而无法很好观测或者量化客户对经纪人的“信任程度”,因此,我们可以将每一个会话中客户的语言序列当做观测序列,将客户对经纪人的“信任程度”当做隐藏状态序列。 综上所述,我们面临的问题可以用HMM模型来解决。

4.2 建模

我们将对话中客户的消息序列抽象成一个马尔科夫链,直观来看可以这样理解:

我们将隐状态定义成0~49共50种状态,上图中的6,16,26,36,5,8,10就是一个隐状态序列,第二排的汉字就是客户的消息序列,我们会将该消息序列的自然语言理解(Natural Language Understanding,NLU)模块的结果编码成计算机可以理解的形式,形成新的序列作为观测序列,表示经纪人的动作类型。隐状态之间的状态转移原因可以理解成经纪人的动作类型,因此,我们可以通过分析优秀经纪人(转委托率>γ1)和一般经纪人(转委托率<γ2)在不同状态给出的动作类型的差异来指导一般经纪人在正确时间给出正确动作反应,以提高他们的转委托率。

观测序列将NLU的解析结果(emotion(情感类型)、sentence(句式类型)、skills(技能类型))结合其可信度(confidence)的值,按照0.1的间隔进行离散化,举个例子:对emotion、sentence、skills的类型进行编号:

NLU的解析结果为:

其观测值编码为:“emotion:19-sentence:19-skills:10”

4.3 实验过程

  • 数据准备

本次实验选取了一个时间段内的27w条优秀经纪人和19w条一般经纪人的数据,按照上述方式对观测序列进行编码。

我们将隐状态设置成50种,因为观测序列也是离散的序列,因此我们将其认为服从多项式分布。在实验中,设置10轮训练,选得分最高的一轮得到的模型作为预测模型,这里的得分是指预测结果的对数似然函数。

经纪人的动作是根据动作分类模型得到的,动作共分为19种,动作和其id的对应关系:action2id={'__label__other':1, '__label__send_house_reoprt':2, '__label__ans_house_info':3, '__label__date_look_time':4, '__label__buy_purpose':5, '__label__date_look_house':6, '__label__open_words':7, '__label__leave_contact':8, '__label__house_recommand':12, '__label__ask_buyer_info':13, '__label__confirm_demand':14, '__label__platform_safe':15, '__label__date_location':16, '__label__overall_demand':17, '__label__detail_demand':18, '__label__end_words':19}

  • 实验过程

首先安装需要用到的第三方库:hmmlearn,在python的环境下用命令行“pip install hmmlearn”即可完成。hmmlearn实现了三种类型的HMM模型,按照观测状态是连续的还是离散的可以分为两类。GaussianHMM和GMMHMM是连续观测状态的HMM模型,而MultinomialHMM是离散观测状态的模型。

在上述分析中,我们所要解决的问题中观测序列、隐藏序列都是离散的,因此这里我们选用hmmlearn.hmm.MultinomialHMM(n_components=n_states,n_iter=30,tol=0.001,covariance_type='diag'),即多项式分布的隐马尔科夫模型,设置迭代收敛阈值为0.001,指定每个状态的的方差矩阵为对角矩阵。

在模型训练中,我们训练10轮,选取其中得分最大的一轮训练结果作为预测的

模型:例如上述图片展示的训练过程,选取第4轮训练的模型作为预测模型。

  • 结果分析

分析数据中客户说的话所处的状态的分布为:

将保存下来的模型分别用于优秀经纪人和一般经纪人对话中客户说话状态的预测,分析相同状态下,优秀经纪人和一般经纪人给出的动作的差异。下图表示在客户状态为20时,优秀经纪人和一般经纪人做出的19种动作的分布:

从上图中可以看出,在客户状态为20时,优秀经纪人作出动作9和11相对较多,而一般经纪人在该状态下,动作9和11的出现率相对较低,因此,可以根据这一分析结果,在客户状态为20时,除了1,3动作出现概率较高外,可以指导经纪人提高9,11动作的出现率。

举个例子:

如上图所示,两个例子中,当前客户消息都处于状态20,优秀经纪人和一般经纪人的回复是存在差异的,因此,可根据这些差异来指导一般经纪人进行合适动作选择。

5.参考资料

[1]隐马尔科夫模型 https://www.cnblogs.com/pinard/p/6945257.html

[2]HMM http://www.huaxiaozhuan.com/%E5%B7%A5%E5%85%B7/scikit-learn/chapters/7.HMM.html

[3]NLP笔记 - 多轮对话之对话管理 http://www.shuang0420.com/2018/01/03/NLP%E7%AC%94%E8%AE%B0%20-%20%E5%A4%9A%E8%BD%AE%E5%AF%B9%E8%AF%9D%E4%B9%8B%E5%AF%B9%E8%AF%9D%E7%AE%A1%E7%90%86(Dialog%20Management)/

作者介绍

魏林林,就读于电子科技大学,现于贝壳找房语言智能与搜索部实习,主要从事对话系统相关工作。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.问题背景
    • 1.1 何为对话管理
      • 1.2 我们面临的问题
      • 2.HMM模型简介
        • 2.1 何为HMM模型
          • 2.2 HMM模型可以解决什么问题
          • 3.EM算法简介
            • 3.1 何为EM算法
              • 3.2 EM算法的理论推导
              • 4.实验过程
                • 4.1 为什么可以选用HMM模型
                  • 4.2 建模
                    • 4.3 实验过程
                    • 5.参考资料
                    • 作者介绍
                    相关产品与服务
                    腾讯智能对话平台
                    腾讯智能对话平台(Tencent Bot Platform,TBP)专注于“对话即服务”的愿景,全面开放腾讯对话系统核心技术,为大型企业客户、开发者和生态合作伙伴提供开发平台和机器人中间件能力,实现便捷、低成本构建人机对话体验和高效、多样化赋能行业。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档