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

阅读大概需要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在法律领域的相关研究工作


让更多的人知道你“在看”

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

  1. HMM模型及相关算法

    HMM模型及相关算法 写在前面:本文主要参考了刘建平Pinard老师的博客,做了一定程度的归纳,其中也有一些自己的理解,包括图和公式,希望对大家学习有所帮助. 一.HMM定义和前置知识 1.条件独立的 ...

  2. 机器学习算法 10 —— HMM模型(马尔科夫链、前向后向算法、维特比算法解码、hmmlearn)

    文章目录 系列文章 隐马尔科夫模型 HMM 1 马尔科夫链 1.1 简介 1.2 经典举例 2 HMM简介 2.1 简单案例 2.2 案例进阶 问题二解决 问题一解决 问题三解决 3 HMM模型基础 ...

  3. 【机器学习】HMM模型

    文章目录 HMM模型 1.⻢尔科夫链 1.1 简介 2.2 经典举例 2.HMM模型的三个基本问题 HMM模型 1.⻢尔科夫链 1.1 简介 ⻢尔科夫链即为状态空间中从⼀个状态到另⼀个状态转换的随机过 ...

  4. 机器学习基础 HMM模型(隐马尔科夫)

    文章目录 一.马尔科夫链 1. 简介 2. 经典举例 3. 小结 二.HMM简介 1. 简单案例 2. 三个基本问题 三.HMM模型基础 1. 什么样的问题需要HMM模型 2. HMM模型的定义 3. ...

  5. 图模型在信息流推荐系统中的原理和实践

    猜你喜欢 0.飞猪信息流内容推荐探索1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进5.腾讯PCG推荐系 ...

  6. HMM模型及其在中文分词中的应用

    HMM模型及其在中文分词中的应用 马尔可夫模型 有限状态集 s s s 初始时刻的状态概率分布 π \pi π 状态转移概率矩阵 A A A 马尔可夫模型实例 隐马尔可夫模型 观测集 V V V 发射 ...

  7. 【实践】NLP领域中的ERNIE模型在阅读理解中的应用

    使用ERNIE在DuReader_robust上进行阅读理解 1. 实验内容 机器阅读理解 (Machine Reading Comprehension) 是指让机器阅读文本,然后回答和阅读内容相关的 ...

  8. 【综述】对话系统中的口语理解技术

    1. 基本介绍 对话系统中的口语理解技术一般称为NLU(natural language understanding),或SLU(spoken language understanding).NLU的 ...

  9. 【文本数据挖掘】中文命名实体识别:HMM模型+BiLSTM_CRF模型(Pytorch)【调研与实验分析】

    1️⃣本篇博文是[文本数据挖掘]大作业-中文命名实体识别-调研与实验分析 2️⃣在之前的自然语言课程中也完成过一次命名实体识别的实验 [一起入门NLP]中科院自然语言处理作业三:用BiLSTM+CRF ...

  10. Chapter 15 HMM模型

    1.1 定义 隐马尔科夫模型:可用于标注问题,在语音识别.NLP.生物信息.模式识别等领域被实践证明是有效的算法. HMM是关于时序的概率模型,描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,再 ...

最新文章

  1. STL常用的集合算法
  2. FFmpeg封装格式处理2-解复用例程
  3. Redis布隆过滤器
  4. couchbase_具有Rx-Java的Couchbase Java SDK
  5. 在webstorm中怎么配置本地服务器
  6. 【英语学习】4000 Words 【V1】【U02】The Laboratory
  7. JavaScript笔记集
  8. 23.1解析函数的级数表示(二)
  9. 详介 MQTT 服务器的搭建与客户端连接
  10. PX4固件飞行日志的采集设置以及数据读取
  11. win32 x64 x86 区别
  12. 田野调查手记·浮山摩崖石刻(一)
  13. 杰理之使用 mic_rec_play_start()测试 mic 无声的解决方法【篇】
  14. 泡泡玛特再曝“兑奖纠纷”,昔日“盲盒第一股”面临三重难题
  15. OGNL表达式语言介绍
  16. ufs 固态硬盘_何必羡慕SSD?UFS3.0闪存让手机比PC还快!
  17. Mac上QQ电话录音
  18. 广州2020年头部互联网公司名单
  19. 竖脊肌(05):屈腿硬拉
  20. 单机版五子棋游戏项目的实现

热门文章

  1. phpmailer 与 mail
  2. AS数据库自动备份的DOS语句
  3. Ubuntu 如何进入系统文件/etc/profile修改内容
  4. QToolBox学习笔记
  5. UOJ #357. 【JOI2017春季合宿】Sparklers
  6. 【Ansible 文档】【译文】Ad-Hoc 命令介绍
  7. 高可用Kubernetes集群原理介绍
  8. spring boot 打war包部署,打jar包
  9. JIRA 饼图中文乱码
  10. 日常邮件用语(一)网摘学习