书山有路勤为径,学海无涯苦作舟

一、马尔科夫模型

1.1 马尔科夫天气案例

天气变化种类:晴天,多云,雷雨,他们之间应该有些联系吧!

python 马尔可夫转移概率_自然语言处理

状态之间可以发生转换,昨天和今天转换的情况:

状态转移矩阵

python 马尔可夫转移概率_机器学习_02


今天能得到明天的情况,明天能得到后天的情况,以此类推可以无限的玩下去那是不是得有一个初始的情况才能一直玩下去啊!

python 马尔可夫转移概率_人工智能_03

这里我们就定义好了一个一阶马尔科夫模型:

状态:晴天,多云,雷雨

状态转换概率:三种

天气状态间的转换概率初始概率:晴天

1.2计算今天(t=1)的天气状况

假设初始状态的晴天,多云,雷雨矩阵:【0.7,0.2,0.1】

转移矩阵为:

python 马尔可夫转移概率_机器学习_02


计算今天为晴天的计算方式:

今天为晴天的概率t=1的概率:0.7 * 0.5 + 0.2 * 0.25 + 0.1 * 0.25

python 马尔可夫转移概率_自然语言处理_05

以t = 1 为当前状态,根据状态转移矩阵,可以得到t=2,t=3的天气概率

二、HMM隐马尔科夫模型

2.1 隐马尔科夫案例

现在我们漂到了一个岛上,这里没有天气预报,无法直接观测天气。只有一片片的海藻,我们如何预测天气?

这些海藻状态能观察到的:

python 马尔可夫转移概率_自然语言处理_06

这里我们就没有直接的天气信息了,有的是间接的信息,海藻的状态跟天气的变换有一定的关系。

既然海藻是能看到的,那它就是观察状态,天气信息看不到就是隐藏状态

想要得到隐藏状态的情况,但是隐藏状态信息不容易得到,通过观察状态的信息,求解隐藏状态

观察状态与隐藏状态并非是一一对应的,天气只有三种,但是海藻的状况却有三种。

python 马尔可夫转移概率_自然语言处理_07

2.2 隐马尔科夫模型的2个前提

  • 当前状态只于前一个状态有关
  • 某个的观测状态至于它的对应的生成的状态有关

Z:隐藏状态 (天气), X:观察状态(海藻)。

  • 当前的天气只和昨天的天气有关系
  • 海藻的状态的变化,只能的天气造成的

2.3 隐马尔科夫模型的组成HMM(π,A,B)

python 马尔可夫转移概率_人工智能_08


在马尔科夫模型的基础上,多加了一个,隐藏(天气)造成观测(海藻)状态的状态生成矩阵

python 马尔可夫转移概率_自然语言处理_09


3种天气,每一种天气都可以生成4种的海藻观测状态,只是概率不同

python 马尔可夫转移概率_自然语言处理_10

2.4 λ(π,A,B)要解决的三个问题

  • 求解某个观测序列出现的概率
  • 求解模型的参数

2.4.1 求解观测序列概率

2.4.1.1 问题一、求解观测序列概率-暴力求解

python 马尔可夫转移概率_自然语言处理_11


暴力求解:求解观察序列的概率,因为观测序列是由于隐藏序列生成的,所以把所有的隐藏序列求解出来,也可以得到观测序列的概率。

python 马尔可夫转移概率_机器学习_12


1部分,给定模型的前提下,求解隐藏序列出现的概率:

python 马尔可夫转移概率_python 马尔可夫转移概率_13


复杂度的计算

python 马尔可夫转移概率_前向算法_14

2.4.1.2 求解观测序列概率 -前向算法

前向算法基本定义

给定一个前提,假设t时刻的隐藏状态状态为i。ai(t)表示在t时刻,i的状态。

python 马尔可夫转移概率_python 马尔可夫转移概率_15


原始问题求解 p=(y1 ,y2,···,yt | λ) ,不止于某一个状态,包含了所有的状态。所以将所有的状态的ai(T) == p

python 马尔可夫转移概率_python 马尔可夫转移概率_16


动态求解

python 马尔可夫转移概率_机器学习_17


复杂度从N方降低到N

2.4.1.3 前向算法求解实例

假设有三个盒子,盒子的球的总数相同,但是球的数量不相同。

在盒子中抓球,得到的不同结果。

拿到的球的结果就是观测序列(如:红,白,红)

隐藏状态就是不同时刻从哪个盒子取得球(如:盒2,盒3,盒1)

π表示从每个盒子中取球的概率,A矩阵是不同盒子中取球的转换概率。

B表示在不同盒子中取得不同颜色球的概率。

python 马尔可夫转移概率_机器学习_18


得到的结果如下我们想求得在一个条件下,生成一个观测序列的概率值。

python 马尔可夫转移概率_python 马尔可夫转移概率_19


前向算法求解:

我们要求在时刻3的时候的不同隐藏状态的和,从时刻1开始求解

时刻1,拿到是红色球,时刻2拿到的是白色球,颜色(观察状态)已经定了,但是盒子(隐藏状态)可以有不同可能

python 马尔可夫转移概率_人工智能_20


后一时刻 = 前一时刻所有状态的可能性 x 当前状态的转移概率 x 生成概率

python 马尔可夫转移概率_自然语言处理_21


T3时刻是考虑了能生成目标观测序列的所有的生成状态可能性之和0.041 + 0.035 + 0.052 = 0.130

python 马尔可夫转移概率_前向算法_22

2.4.2 问题二、求解模型参数(π,A,B)

2.4.2.1已知观测序列和状态序列:
求在t时刻晴天的转到t+1时刻的状态 ,找到所有的晴天,统计下一时刻的不同天气的频率。
在大数定理中,只要样本足够大,出现的频率就等于概率。

python 马尔可夫转移概率_人工智能_23

2.4.2.2 Baum-wWelch算法

一直到观测序列,未知状态序列

EM算法(最大期望算法(Expectation-maximization algorithm,又译期望最大化算法))

python 马尔可夫转移概率_自然语言处理_24


其中常量是一个定值,可以暂时不考虑

python 马尔可夫转移概率_前向算法_25


python 马尔可夫转移概率_人工智能_26


python 马尔可夫转移概率_机器学习_27

2.4.3 问题三、求解状态序列

2.4.3.1 维特比算法

python 马尔可夫转移概率_前向算法_28

2.4.3.2 求解实例

下面这个函数表示求解最大值的未知

python 马尔可夫转移概率_机器学习_29

python 马尔可夫转移概率_python 马尔可夫转移概率_30


python 马尔可夫转移概率_机器学习_31


python 马尔可夫转移概率_python 马尔可夫转移概率_32