算法强化 —— HMM模型(一)

HMM模型

HMM–定义和假设

概率模型

所谓概率模型,顾名思义,就是将学习任务归结于计算变量的概率分布的模型
概率模型非常重要。在生活中,我们经常会根据一些已经观察到的现象来预测和估计未知的东西————这种需求,恰恰是概率模型的推断(inference)行为所做的事情。
推断(inference)的本质是:利用可观测变量,来推测未知变量的条件分布

生成模型VS判别模型

概率模型又可以分为两类:生成模型(Generative Model)和判别模型(Discriminative Model)。
概率模型是通过可观测变量推断部分未知变量,将可观测变量的集合命名为O,未知变量的集合命名为Y。
生成模型学习出来的O与Y的联合概率分布P(O,Y),而判别模型学习的是条件概率分布:P(Y|O)。
朴素贝叶斯模型是生成模型,而逻辑回归是判别模型。
对于某一给定的观察值O,运用条件概率P(Y|O)很容易求出它对于不同Y的取值。

马尔可夫链,马尔可夫随机场和条件随机场
马尔克夫链(Markov Chain):一个随机过程模型,它表述了一系列可能的事件,在这个系列当中每一个事件的概率仅依赖于前一个事件
在这里插入图片描述
上图就是一个非常简单的马尔克夫链,两个节点分别表示晴天和雨天,几条边表示节点之间的转移概率。
一个晴天之后,0.9的可能是又一个晴天,只有0.1的可能是一个雨天,而一个雨天之后,0.5的可能是晴天,也有0.5的可能是另外一个雨天。

假设这是某个地区的天气预报模型(这个地区只有晴天和雨天两种天气),则明天天气的概率,只和今天的天气状况有关,和前天以及更早没有关系,那么我们只要知道今天的天气,就可以推测明天是晴是雨的可能性了。

隐马尔克夫模型(Hidden Markov Model , HMM)
定义
HMM是一个关于时序的概率模型,它的变量分为两组:
状态变量{ S 1 , S 2 , . . . , S T S_1,S_2,...,S_T },其中 s t S s_t \in S 表示t时刻的系统状态;
观测变量{ O 1 , O 2 , . . . , O T O_1,O_2,...,O_T },其中 o t O o_t \in O 表示t时刻的观测值;

观测变量和状态变量各自都是一个时间序列,每个状态/观测值都和一个时刻对应:
在这里插入图片描述
一般假定状态序列是隐藏的,不能被观测到的,因此状态变量时隐变量(Hidden Variable) ————这就是HMM中H(Hidden)的来源。
这个隐藏的、不可观测的状态序列是由一个马尔克夫链随机生成的————这是HMM中的第一个M(Markov)的含义。
一条隐藏的马尔克夫链随机生成了一个不可观测的状态序列(State Sequence),然后每个状态又对应生成了一个观测结果,这些观测值按照时序排列后就成了观测序列(Observation Sequence),这两个序列是一一对应的,每个对应的位置又对应着一个时刻。
一般而言,HMM的状态变量取值是离散的,而观测变量的取值,则可以是离散的也可以是连续的。
但是为了方便,在大多数应用中,观测变量也是离散的。

HMM基本假设

假设1:假设隐藏的马尔克夫链在任意时刻t的状态只依赖于前一个时刻(t-1时)的状态,与其他时刻的状态及观测无关,也与时刻t无关。
公式: P ( s t s t 1 , o t 1 , . . . , s 1 , o 1 ) = P ( s t s t 1 , t = 1 , 2 , 3 , . . . , T ) P(s_t|s_{t-1},o_{t-1},...,s_1,o_1) = P(s_t|s_{t-1},t = 1,2,3,...,T)
这一假设又叫做齐次马尔克夫假设

假设2:假设任意时刻的观测只依赖于该时刻的马尔克夫链状态,与其他观测及状态无关。
用公式表示为
P ( o t s T , o T , s T 1 , o T 1 , . . . , s t + 1 , o t + 1 , s t , o t , . . . , s 1 , o 1 ) = P ( o t s t ) P(o_t|s_T,o_T,s_{T-1},o_{T-1},...,s_{t+1},o_{t+1},s_t,o_t,...,s_1,o_1) = P(o_t|s_t)
这个假设也叫观测独立性假设。

确定 HMM 的两个空间和三组参数

两个空间:状态空间S和观测空间O
三组参数:转移概率,观测概率和初始状态概率
状态转移概率:模型在各个状态间转换的概率,通常记作矩阵 A = [ a i j ] N N A = [a_{ij}]_{N*N}
其中, a i j = P ( o t = O j s t = S i ) , 1 i , j N a_{ij} = P(o_t = O_j|s_t = S_i),1\leq i,j \leq N 表示在任意时刻t,若状态为 S i S_i ,则下一时刻状态为 S j S_j 的概率。
输出观测概率:模型根据当前状态获得各个观测值的概率,通常记作矩阵 B = [ b i j ] N M B = [b_{ij}]_{N*M}
其中, b i j = P ( o t = O j s t = S i ) , 1 i N , 1 j M b_{ij} = P(o_t = O_j|s_t = S_i),1\leq i\leq N,1 \leq j \leq M 表示在任意时刻t,若状态 S i S_i 则观测值 O j O_j 被获取的概率。
有些时候, S i S_i 已知,但可能 O j O_j 是未知的,这个时候,b就成了当时观测值的一个函数,因此也可以写作 b i ( o ) = P ( o s = S i ) b_i(o) = P(o|s=S_i)
初始状态概率:模型在初始时刻各状态出现的概率,通常记作 π = ( π 1 , π 2 , . . . , π N ) \pi = (\pi_1,\pi_2,...,\pi_N) ,其中 π i = P ( s 1 = S i ) , 1 i N \pi_i = P(s_1 = S_i),1 \leq i \leq N 表示模型的初始状态为 S i S_i 的概率。

通常我们用 λ = [ A , B , π ] \lambda =[A,B,\pi] 来指代这三组参数
有了状态空间S和观测空间O,以及参数 λ \lambda ,一个HMM就被确定了。

HMM——三个基本问题

在实际运用中,HMM 有三个基本问题。

概率计算问题

又称评价(Evaluation)问题。已知信息:模型 λ = [ A , B , π ] \lambda = [A,B,\pi]
观测序列 : O = ( o 1 , o 2 , . . . , o T ) O = (o_1,o_2,...,o_T)
求解目标:计算在给定模型$\lambda O 下,已知观测序列O出现的概率: P(O|\lambda)$。也就是说,给定观测序列,求它和评估模型之间的匹配度。

预测问题

又称解码(Decoding)问题。已知信息:模型 λ = [ A , B , π ] \lambda = [A,B,\pi]
观测序列: O = ( o 1 , o 2 , . . . , o T ) O = (o_1,o_2,...,o_T)
求解目标:计算在给定模型$\lambda $下,使已知观测序列O的条件概率 P ( O S ) P(O|S) 最大的状态序列 S = ( s 1 , s 2 , . . . , s T ) S = (s_1,s_2,...,s_T) 。即给定观测序列,求最有可能与之对应的状态序列。

学习(Learning)问题

又称训练(Training)问题。已知信息:观测序列: O = ( o 1 , o 2 , . . . , o T ) O = (o_1,o_2,...,o_T)
或许也会给定与之对应的状态序列: S = ( s 1 , s 2 , . . . , s T ) S = (s_1,s_2,...,s_T)
求解目标:估计模型 λ = [ A , B , π ] \lambda = [A,B,\pi] 参数,使得该模型下观测序列概率 P ( O λ ) P(O|\lambda) 最大。也就是训练模型,使其最好地描述观测数据。前两个问题是模型已经存在之后如何使用模型的问题,而最后一个则是如何通过训练得到模型的问题

发布了110 篇原创文章 · 获赞 3 · 访问量 4092

猜你喜欢

转载自blog.csdn.net/qq_33357094/article/details/105017743
今日推荐