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

2020 年 2 月 6 日 深度学习自然语言处理

点击上方,选择星标置顶,每天给你送干货

阅读大概需要14分钟

跟随小博主,每天进步一丢丢


在家办公,免费送你一个新款苹果iPad

没参与的小伙伴参与下,毕竟质量很高,希望中奖的是你们当中的一个!


来自:贝壳智搜


对话系统是一个庞大的系统,涉及的问题很多,本文主要讲解隐马尔可夫模型(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)/

作者介绍

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





在家办公,免费送你一个新款苹果iPad
没参与的小伙伴参与下,毕竟质量很高,希望中奖的是你们当中的一个!


推荐阅读:
【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency  Parsing
【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译
【一分钟论文】Semi-supervised Sequence Learning半监督序列学习
【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
详解Transition-based Dependency parser基于转移的依存句法解析器
经验 | 初入NLP领域的一些小建议
学术 | 如何写一篇合格的NLP论文
干货 | 那些高产的学者都是怎样工作的?
一个简单有效的联合模型
近年来NLP在法律领域的相关研究工作



让更多的人知道你“在看”
登录查看更多
0

相关内容

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。 其是在被建模的系统被认为是一个马尔可夫过程与未观测到的(隐藏的)的状态的统计马尔可夫模型。
【ACL2020-Google】逆向工程配置的神经文本生成模型
专知会员服务
16+阅读 · 2020年4月20日
【综述】自动驾驶领域中的强化学习,附18页论文下载
专知会员服务
172+阅读 · 2020年2月8日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
77+阅读 · 2020年2月3日
【阿里技术干货】知识结构化在阿里小蜜中的应用
专知会员服务
96+阅读 · 2019年12月14日
[综述]基于深度学习的开放领域对话系统研究综述
专知会员服务
78+阅读 · 2019年10月12日
关系图谱在贝壳的构建和应用
DataFunTalk
29+阅读 · 2020年3月4日
关系图谱在贝壳找房风控体系的应用与实践
DataFunTalk
49+阅读 · 2020年2月12日
Rasa介绍:对话系统、产品与技术
AINLP
7+阅读 · 2019年8月20日
NLP实践:对话系统技术原理和应用
AI100
34+阅读 · 2019年3月20日
知识在检索式对话系统的应用
微信AI
32+阅读 · 2018年9月20日
一文读懂智能对话系统
数据派THU
16+阅读 · 2018年1月27日
Arxiv
6+阅读 · 2020年4月14日
Advances in Online Audio-Visual Meeting Transcription
Arxiv
4+阅读 · 2019年12月10日
Teacher-Student Training for Robust Tacotron-based TTS
Arxiv
21+阅读 · 2019年8月21日
VIP会员
相关资讯
关系图谱在贝壳的构建和应用
DataFunTalk
29+阅读 · 2020年3月4日
关系图谱在贝壳找房风控体系的应用与实践
DataFunTalk
49+阅读 · 2020年2月12日
Rasa介绍:对话系统、产品与技术
AINLP
7+阅读 · 2019年8月20日
NLP实践:对话系统技术原理和应用
AI100
34+阅读 · 2019年3月20日
知识在检索式对话系统的应用
微信AI
32+阅读 · 2018年9月20日
一文读懂智能对话系统
数据派THU
16+阅读 · 2018年1月27日
Top
微信扫码咨询专知VIP会员