Press "Enter" to skip to content

白白说算法:相亲中的马尔科夫模型

大家好,我是白白,第一时刻来讲讲算法系列。产品经理是否需要懂技术,对于这个问题互联网圈看法各不相同。白白看来,随着未来互联网的发展,按照正常的产品经理职业发展路径,还是需要了解一些技术的内容。产品经理需要了解技术的基本框架,但不一定需要了解所有技术细节。人工智能领域,产品经理需要了解算法的基本原理,以及如何将实际问题转化为算法问题。

 

白白作为一名AI产品经理,准备持续写一写算法的内容,争取用最简单的语言告诉大家每种算法的逻辑。

 

一、马尔科夫模型

 

有一天白白去相亲,见了2个人,上午一个下午一个。两个小姐姐都不错,这下白白突然不知道应该选哪个(其实两个妹子都没看上我),后来有个算法的同事过来支招,毕竟是结婚过日子幺,那还是要考虑充分。有一种算法的含义是每种状态,只与之前的一个或多个状态有关,也就是说我们可以小姐姐之前的状态再综合评价。白白思考了10秒,觉得好像挺有道理,毕竟现在看着还不错,万一隐藏了什幺呢,所以还是要看看小姐姐的上一个状态。从人生的角度来讲,女孩的上一个状态,也就是她妈妈了。这种每个状态由之前的1个或多个状态决定的模型,我们称为马尔科夫模型。

 

马尔科夫模型中很多关系使用概率描述的,比如女孩的妈妈很白,那幺女儿也很白的概率是90%,女孩妈妈是性格好,女儿也性格好的概率为70%。下图展示了母亲和女儿性格之间的概率关系。

 

 

由上图可列出表格:

 

 

马尔科夫模型有三个要素:

 

1. 状态:性格好、性格差

 

2. 初始向量:在系统定义时间为0时,状态出现的概率。比如从女儿妈妈出现的时间算起认为是系统的0时,那幺她妈妈性格好或性格差的的概率就是初始向量。

 

3. 状态转移矩阵:上图列出的表格就是状态转移概率,用于描述状态之间的转换。

 

在实际问题中,有关序列的问题很多都可以用马尔科夫模型来求解,例如股票的量化分析、新闻摘要提取、用户行为预测等。

 

二、隐马尔可夫链

 

我们即使知道马尔科夫模型的3个要素,还是无法做出良好判定。我们观察到的状态中,很可能还包含有隐藏状态。比如我们看到小姐姐和她妈妈确实都不错,但是或许隐藏着小姐姐没准已经有男朋友了,她现在是在找备胎。来换个阳光的例子,假如小姐姐打了你一巴掌,打人只是表象,真实的隐藏状态是她的心情。打人不一定表示她不开心,打人这个现象对于她是否开心,也有相应的概率。所以对于模型而言,必须要考虑多种情况才能对状态有完整的描述。

 

针对以上的情况,还有一种与马尔可夫模型很像的模型,称为隐马尔科夫链。在隐马尔可夫模型中有两条链,一条称为可见状态链,一条称为隐藏状态链。每个状态之间依然是一种序列的关系。如下图中,X表示女孩的实际的某个状态,但是我们看不到,这就是隐藏状态链。O表示女孩的性格情况,我们只能观察的O这个状态,这就是可见状态链。

 

 

1、隐马尔可夫模型主要解决的问题

 

隐马尔可夫主要围绕以下三类问题:

 

1)给定一个模型,求某个观察序列O的概率

 

2)给定模型和观察序列O,求可能性最大的X序列

 

3)对于给定的观察序列O,调整隐马尔可夫模型的参数,使得观测序列O出现的概率最大。

 

其中第二类问题是我们最常见的,在语音识别、文本分析等领域有着广泛应用。简单来讲,就是通过我们看到的可见状态链来求解隐藏状态链的相关活动。当和姑娘相处了一段时间之后,会摸清楚她大概的品性,这就是初始概率。比如大部分时间是开心的,或者开心与不开心各占一半。

 

隐马尔科夫链模型有四个要素:状态、初始向量、状态转移矩阵、输出矩阵。前三个与马尔科夫模型几乎没有区别,输出矩阵指的是由隐藏状态到可见状态的输出概率。例如小姐姐心情不好,可能打人的概率,可能购物的概率等,这些都是输出概率。我们可以建立隐马尔可夫模型,通过小姐姐的表现计算她是否开心。

 

建立隐马尔可夫模型:心情有2个状态(不开心、开心),但是我们无法直接观察到心情(心情状态对我们是隐藏的),我们只能观察到小姐姐的行为(撒娇、购物、打人),我们认为小姐姐的心情与上一时刻的心情有关,即这个系统构成隐马尔可夫链。

 

我们已知妹子的长期的一个心情分布概率(初始情况):P={开心:0.6,不开心:0.4}

 

并且转换概率分布为:

 

 

在相应的心情下,妹子进行的活动的输出概率分布为:

 

 

计算第一时刻的心情情况:

 

P(第一时刻开心)=P(撒娇|开心)*P(开心|初始情况)=0.5*0.6=0.30

 

P(第一时刻不开心)=P(撒娇|不开心)*P(不开心|初始情况)=0.1*0.4=0.04

 

第一时刻开心的概率比较大,于是我们可以认为第一时刻是开心。

 

假设知道妹子第二时刻在妹子在购物,计算第二时刻的心情情况:

 

P(第一时刻不开心,第二时刻不开心)=P(不开心|第一时刻)*P(不开心->不开心)*P(购物|不开心)=0.04*0.6*0.3=0.0072

 

P(第一时刻不开心,第二时刻开心)=P(不开心|第一时刻)*P(不开心->开心)*P(购物|开心)=0.04*0.4*0.4=0.0064

 

P(第一时刻开心,第二时刻开心)=P(开心|第一时刻)*P(开心->开心)*P(购物|开心)=0.30*0.7*0.4=0.084

 

P(第一时刻开心,第二时刻不开心)=P(开心|第一时刻)*P(开心->不开心)*P(购物|不开心)=0.30*0.3*0.3=0.027

 

可以看到第二时刻最可能的是开心。

 

假设知道第三时刻妹子把你给打了,我们来算算各种情况的概率:

 

P(第二时刻不开心,第三时刻不开心)=P(不开心|第二时刻)*P(不开心->不开心)*P(打人|不开心) =0.027*0.6*0.6=0.00972

 

P(第二时刻不开心,第三时刻开心)=P(不开心|第二时刻)*P(不开心->开心)*P(打人|开心) =0.027*0.4*0.1=0.00108

 

P(第二时刻开心,第三时刻开心)=P(开心|第二时刻)*P(开心->开心)*P(打人|开心) =0.084*0.7*0.1=0.00588

 

P(第二时刻开心,第三时刻不开心)=P(开心|第二时刻)*P(开心->不开心)*P(打人|不开心) =0.084*0.3*0.6=0.01512

 

我们可以认为,第三时刻的心情是不开心。

 

通过上面三个时刻的计算,我们可以得出隐藏状态的序列:开心->开心->不开心。

 

以上就是隐马尔可夫的简单介绍。

 

欢迎关注公众号:白白说话(xiaob-talk)

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注