利用逻辑回归模型判断用户提问意图

在之前开发聊天机器人的文章里,我们讲解了如何使用在线工具LUIS (https://luis.ai) 开发Chat bot的自然语言理解模型。

在构造问题解决型机器人的前提之下,我们需要对用户用自然语言输入的问题进行意图判断和实体抽取。这两个功能是LUIS都可以做到的。

但如果不借助现成的工具,自己实现这两个功能,该如何做呢?今天,我们先来讲第一部分:意图识别

分类问题

意图识别的目的是判断用户发送给聊天机器人的语句表达了TA的何种意图(intent)。

因为是问题解决型机器人,所能够回答的问题有限,且在一个明确的范畴之内。

也就是说,问题解决型Chat bot仅仅接受有限种意图,此外所有其他语句,都被判定为无效,不做处理。

因此,它的意图识别,是这一个典型的分类问题,可以用分类模型来解决。

分类模型是机器学习中最常用的一类模型,常用的分类模型就有:Naïve Bayes,Logistic Regression,Decision Tree,SVM等。

逻辑回归模型

今天我们在这里介绍其中的逻辑回归Logistics Regression / LR)。它也是LUIS做意图识别时用到的模型

逻辑回归是一种简单、高效的常用分类模型。它典型的应用是二分类问题上,也就是说,把所有的数据只分为两个类。

当然,这并不是说LR不能处理多分类问题,它当然可以处理,具体方法稍后讲。我们先来看LR本身。

LR模型的原理

我们在之前的文章里,讲过模型的原理——模型可以被看做一个形式确定、参数值待定的函数。

LR对应的这个函数,我们记作:y=h(x)

其中自变量x是向量,物理意义是一系列特征,在bot LU的scenario之下,这些特征值就是用户问题经过VSM转换后得出的向量。

而最终计算出的因变量y,则是一个[0,1]区间之内的实数值。当y>0.5 时,x 被归类为阳性(Positive),否则当y <=0.5时,被归类为阴性(Negative)。

如果单纯看这个取值,是不是会有点担心,如果大量的输入得到的结果都在y=0.5附近,那岂不是很容易分错?说得极端一点,如果所有的输入数据得出的结果都在y=0.5附近,那岂不是没有什么分类意义了,和随机乱归类结果差不多?

这样的担心其实是不必要的,因为LR的模型对应公式是:

这个公式对应的分布是这样的:

发现没有,此函数在y=0.5附近非常敏感,自变量取值稍有不同,因变量取值就会有很大差异,所以不用担心出现大量因细微特征差异而被归错类的情况。

LR模型的目标函数

上述的h(x) 是我们要通过训练得出来的最终结果,但是在最开始的时候,我们是不知道其中的参数theta的,我们所有的只是若干的x和与其对应的y(训练集合)。

怎么通过训练数据中已知的x和y来求未知的theta呢?

首先要么要设定一个目标:我们希望这个最终得出的theta达到一个什么样的效果——我们当然是希望得出来的这个theta,能够让训练数据中被归为阳性的数据预测结果为阳,本来被分为阴性的预测结果为阴。

而从公式本身的角度来看,h(x)实际上是x为阳性的分布概率,所以,才会在h(x) > 0.5时将x归于阳性。

也就是说h(x) = P(y=1)。反之,样例是阴性的概率P(y=0) = 1 - h(x)。

当我们把测试数据带入其中的时候,P(y=1)和P(y=0)就都有了先决条件,它们为训练数据的x所限定。

因此:

P(y=1|x) = h(x) P(y=0|x) = 1- h(x)

根据二项分布公式,可得出:

P(y|x) = h(x) ^y*(1- h(x))^(1-y)

假设我们的训练集一共有m个数据,那么这m个数据的联合概率就是:

我们求取theta的结果,就是让这个L(theta)达到最大。上面这个函数就叫做LR的似然函数。为了好计算,我们对它求对数。得到对数似然函数:

我们要做的就是求出让l(theta) 能够得到最大值的theta。l(theta) 就是LR的目标函数。

最大化目标函数

目标函数是机器学习的核心。机器学习要做的最关键的事情就是将一个实际问题抽象为数学模型,将解决这个问题的方法抽象问一个能够以某种确定性手段(最大化、最小化)使其达到最优的目标函数。

在此,我们已经得到了LR的目标函数l(theta),并且优化目标是最大化它。为了获得l(theta)的最大值,我们要对它求导:

因为l(theta)为凸函数,因此当其导数函数为0时原函数达到最大值。所以,我们要求取的,就是上述公式为0时的theta,其中的y(i)和x(i)都是已知的。

最大化目标函数的算法

在上述目标函数的导函数中,如果求解theta呢?具体方法有很多,我们在此仅介绍最常见最基础的梯度下降算法。

我们已经知道l(theta)函数是有极值的,那么如何去找到这个极值呢?

我们可以试,即先找到这个函数上的一点p1,算出它的函数值,然后沿着该点导数方向前进一步,跨到p2点,再计算出p2点所对应的函数值,然后不断迭代,直到找到函数值收敛的点为止:

Set initial value: theta(0), alpha

while (not convergence)

{

}

其中,参数α叫学习率,就是每一步的步长。步长的大小很关键,如果步长过大,很可能会跨过极值点,总也无法达到收敛。

步长太小,则需要的迭代次数太多,训练速度过慢。可以尝试在早期的若干轮迭代中设置一个较大的步长,之后再缩小步长继续迭代。

具体判断收敛的方式可以是判断两次迭代之间的差值小于某个阈值ϵ(即比阈值小就停止)。

有时候,在实际应用中会强行规定一个迭代次数,到了这个次数无论收敛与否都先停止。具体推出迭代条件要按实际需要确定。

LR处理多分类问题

LR是用来做而分类的,我们的意图识别肯定不是只有两个意图啊,怎么能用LR?!

别急,LR一样可以做多分类,不过就是要做多次。

假设你一共有n个intent,也就是说可能的分类一共有n个。那么就构造n个LR分类模型,第一个模型用来区分intent_1non-intent_1(即所有不属于intent_1的都归属到一类),第二个模型用来区分intent_2non-intent_2,..., 第n个模型用来区分intent_nnon-intent_n

使用的时候,每一个输入数据都被这n个模型同时预测。最后哪个模型得出了positive结果,就是该数据最终的结果。

如果有多个模型都得出了positive,那也没有关系。因为LR是一个回归模型,它直接预测的输出不仅是一个标签,还包括该标签正确的概率。那么对比几个positive结果的概率,选最高的一个就是了。

例如:有一个数据,第一和第二个模型都给出了positive结果,不过intent_1模型的预测值是0.95,而intent_2的结果是0.78,那么当然是选高的,结果就是intent_1

原文发布于微信公众号 - 悦思悦读(yuesiyuedu)

原文发表时间:2017-09-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

想要实现深度神经网络?一张 Excel 表格就够了

34460
来自专栏新智元

【CVPR 2018热文】MIT提出“透明设计”网络,揭开视觉黑盒

【新智元导读】MIT和普朗克航空系统公司的研究人员合作,提出了一类“透明设计网络”,在李飞飞等人提出的视觉理解数据库CLEVR上达到了99.1%的准确率,他们设...

35450
来自专栏大数据文摘

步长?填充?池化?教你从读懂词语开始了解计算机视觉识别最火模型 | CNN入门手册(中)

19740
来自专栏大数据挖掘DT机器学习

基于Kaggle数据的词袋模型文本分类教程

本教程展示了改善文本分类的方法,包括:做一个验证集,为AUC预测概率,用线性模型代替随机森林,使用TF-IDF权衡词汇,留下停用词,加上二元模型或者三元模型等。...

32850
来自专栏机器之心

CVPR2018 | CMU&amp;谷歌Spotlight论文:超越卷积的视觉推理框架

选自arXiv 作者:陈鑫磊等 机器之心编译 参与:张倩、李泽南 人类在看到图像时可以进行合理的推理与预测,而目前的神经网络系统却还难以做到。近日,来自卡耐基梅...

36680
来自专栏量子位

调试神经网络让人抓狂?这有16条锦囊妙计送给你

问耕 编译整理 量子位 出品 | 公众号 QbitAI ? 这一篇的作者还是Andrey Nikishaev,一位创业者兼开发者。量子位前两天搬运了他的另外一篇...

29370
来自专栏人工智能头条

写给大家看的机器学习书【Part3】直观易懂的感知机学习算法PLA

21550
来自专栏杨熹的专栏

用 TensorFlow 让你的机器人唱首原创给你听

Siraj 的视频 源码 今天想来看看 AI 是怎样作曲的。 本文会用 TensorFlow 来写一个音乐生成器。 当你对一个机器人说:我想要一种能够表达出希...

35560
来自专栏数据派THU

一文读懂FM算法优势,并用python实现!(附代码)

作者:ANKIT CHOUDHARY 翻译:张媛 术语校对:冯羽 文字校对:谭佳瑶 本文共3933字,建议阅读9分钟。 本文带大家了解因子分解机算法并解析其优势...

1.9K80
来自专栏目标检测和深度学习

目标检测入门(四):特征复用、实时性

文章结构 本文的第一部分关注检测模型的头部部分。对与每张图片,深度网络其实是通过级联的映射获得了在某一流形上的一个表征,这个表征相比原图片更有计算机视角下的语义...

42470

扫码关注云+社区

领取腾讯云代金券