机器学习-隐马尔可夫模型(Hidden Markov Modelle)

看到这里发现前面看过的已经全部忘记了,好大的一种做死的感觉啊。不知为什么自从开始写这个以来,随着书写数量的增加,产生了越来越多的不满。总之就是很不爽啊。

大纲

  1. 动机
  2. 离散的马尔可夫过程
  3. 隐马尔可夫模型
  4. 三个基本的问题
  5. 对应的策略
  6. 实际例子:跳定了

动机

  1. 现实世界中获得的信息有可能是受干扰的同时也可能含有非确定性的信息
  2. 使用信息的概率模型,比如马尔可夫模型,可以很好的完成以下任务
    //已弄不清楚前后有什么关系了????
    • 信息识别
    • 从理论上描述信息加工系统
    • 模仿(Simulationen)
    • 呵呵(Arbeiten in der Praxis oft außerordentlich gut)

离散的马尔可夫过程

不是很清楚这里是不是指离散时间的马尔可夫过程,如果是的话,那么就相当于马尔可夫链了。不过对于这点课件上并没有表述清楚,估计是吧??
离散:
离散是指使用的是离散的时间集合
马尔可夫过程:
指状态转变的过程,符合马尔可夫性质,也就是所谓的无记忆性质。
除了上述两点,课件里还额外强调了时间间隔,并提出:
状态转变的过程和时间的间隔没有关系。
根据无记忆性质,到达当前状态的概率只与其直接的前一个状态有关,确实与时间间隔无关。但是放到现实中想一想比如测量天气的转变,时间间隔为一天和时间间隔为一周的结果一定是不同的啊。原因应该是落在了模型的训练上了。也就是说对于特定的一个模型来说,其时间间隔应该是固定,

隐马尔可夫模型(HMM:Hidden Markov Modelle)

到目前为止,我们面对的情况都是,事件或者说是状态时可以直接观察到的。比如还是天气的测量。是放晴还是下雨我们可以直接观察到。但是,假如我们现在是犯人,并且被关押在密闭的空间里,从而没有办法观察到具体的天气的状况呢??这就带出了下面要讲得隐马尔可夫模型。他所描述的就是状态不能被直接观察到的情况。
隐马尔可夫模型是一个双概率过程:
因为没有办法直接观察到天气的状态,因此我们可以通过其他可观察到的事件对天气的状态进行推测,比如我们可以通过声音来进行推测,当听到飒飒的声音时,外面就很可能是在下雨,当然这种可能性并非百分之百的。他可能只是起风了,树枝颤动了的声音。因此从直接能观察到的事件到对应的天气的状况是一个概率过程。加上一般马尔可夫过程也是一个概率过程。所以我们说隐马尔可夫模型是一个双概率过程。
总结一下:
HMM:
观察到的状态是目标状态的一个概率函数。也就是说目标状态只能非直接的被观察到。
例子:

定义:
经常用一个五元式来表达HMM: λ ={S,V,A,B, π }
S表示状态的集合 S={S1,S2,...,SN}
V表示输出集合 V= {v1,v2,...,vM}
(感觉应该是指可观察的事件,不知为什么在这里会叫这个名字。与S相对,S表示的是隐含状态)
A指S的状态转换矩阵 A=(aij) aij 表示从状态 Si 转化到状态 Sj 的概率
B表示放射概率(Emissionswahrscheinlichkeit)矩阵
这个翻译也是够了,举个例子 bi(k) 其实就是指在状态 Si 观察到事件 vk 的概率。另外矩阵式自己加上去的,感觉很像不是吗??
π 表示初始概率分布。 πi 表示状态 Si 作为初始状态的概率。
π 的叫法是学互动百科的,课件上用的是一个张得可怪异的符号。

三个最基本的问题

问题1:
已知模型: λ ={S,V,A,B, π }
求概率:P(O| λ)
也就是在给定模型下,观察到O={ O1,O2,...,OT }的概率。他表达了模型对观察到的时间序列解释的好坏程度
问题2:
已知:模型和观察事件序列
求:最可能的状态序列
问题3:
已知:事件序列O和模型的访问空间(Suchraum für Modelle)//不知第二个是神马鬼???
求:调整模型的参数,使它能最好的表达事件序列O
也就是问是怎么建立模型的,或者说是训练

三个问题对应的策略

问题一

幼稚的方法

P(O|Q, λ )= ΠTt=1P(Ot|qt,λ)
P(Q|λ)=πq1aq1q2...aqT1qT
P(O,Q|λ)=P(O|Q,λ)P(Q|λ)
P(O|λ)=alleQP(O|Q,λ)P(Q|λ)
总花费是: O(2TNT)

优化

上面那个方法的效率实在有点吓人,他的花费是呈指数增长的针对这个问题我们主要的优化方法是使用前向算法或后向算法(Vorwäts- oder Rückwärtsalgorithmus)。
他们的主要思想是:
计算部分结果(Berechne Teilresultate in Tabellen),从而回避全部都要重头算一次
//就是保存和再利用中间结果的意思
为了实现上面的功能,我们做了下面这个定义:
αt(i)=P(O1O2,...,Ot,qt=Si|λ)
//这是前向用的,后向的与这个类似
通过归纳法实现完整的计算
//就是时间t+1的情况可以由时间t的情况推出,从而避免了从头再算一遍
归纳过程:
1. 初始化: α1(i)=πibi(O1),1<=i<=N
2. 归纳: αt(i)αt+1(j)
计算 αt+1(j) 需要考虑两点,首先在时间点t得状态时未知的,应该把所有的情况都考虑进去即:把所有的 αt(i)aij 相加起来。其次不能把在时间点t+1时对应的观察到的时间给忘了,因此应该乘以 bj(Ot+1)
完整的前向算法如下:
1.初始化: α1(i)=πibi(O1),1<=i<=N
2.归纳: αt(i)αt+1(j)
αt+1(j)=[Ni=1αt(i)aij]bj(Ot+1)
1<=t<=T1,1<=j<=N
3.终结: P(O|λ)=Ni=1αT(i)
这个方法总得花费是: O(N2T)
每个时间点每个状态都要进行n次乘法n-1次加法
后向算法:
后向算法和前向算法的中心思想是相同的。我们定义:
βt(i)=P(Ot+1...OT|qt=Si,λ)
//这个qt会不会放错地方了???
归纳:
1.初始化: βT(i)=1,1<=i<=N
2.归纳:
βt(i)=Nj=1aijbj(Ot+1)βt+1(j)
t=T1,T2,...,1,1<=i<=N

问题二(Optimalitätskriterium)

方法一

独立的选出各个时间点最可能的状态
为了实现这种方法,我们定义在时间点t状态为 Sj 的概率为:
γt(i)=P(qt=Si|O,λ)
γt(i)=αt(i)βt(i)P(O|λ)=αt(i)βt(i)Ni=1αt(i)βt(i)
因此我们对应的答案是:
qt=arg maxi<=i<=Nγt(i) für alle1<=t<=T
上面这种方法是存在问题的,比如:
当HMM不是完全网络时,在这种状况下将可能得到无效的路径。比如在t时刻i状态最优在t+1时刻j状态最优,但问题是如果这时的 aij=0 那么这条路径就是所谓的无效路径了。

优化

通过最大化P(Q|O, λ )来选出总体上最优的状态序列(insgesamt besten Zustandsfolge)
//什么叫总体上最优啊??
而这也就对应着最大化P(Q,O| λ )
//通过乘法规则
我们称这个方法为Viterbi算法,他的思想和前向算法类似。他们的区别在于相对于前向算法的在时刻t的求和所有可能状态,在Viterbi中他是选出对应的概率最大的状态:
δt(i)=maxq1,...,qt=1P(q1...qt=Si,O1...Ot|λ)
归纳:
δt+1(j)=[maxi δt(i)aij]bj(Ot+1)
我们用 ψt(j) 后向记录最优节点
Viterbi算法:
1.初始化:
δ1(i)=πibi(O1),1<=i<=N
ψ1(i)=0
2.循环
δt(j)=maxi<=i<=N[δt1(i)aij]bj(Ot),2<=t<=T,1<=j<=N
ψt(j)=arg max1<=i<=N[δt1(i)aij],2<=t<=T,1<=j<=N
3.终结:
P=max1<=i<=N[δT(i)]
qT=arg maxi<=i<=N[δT(i)]
4.后向确定状态序列(Backtracking der Zustandsfolge)
qt=ψt+1(qt+1),t=T1,T2,...,1

问题三(Lern-oder Optimierungsproblem)

这个问题是三个问题之中最难的,对于给定的有限的观察时间序列O,并不存在最优的方法,来确定模型的参数。
//原因表示不知道啊,
/*
Kein analytischer Lösungsweg bekannt
Bei gegebener endlicher Beobachtungssequenz O gibt es keinen optimalen Weg, um die Modellparameter zu schätzen
*/
针对次我们使用的主要的方法是,通过迭代的方法使得P(O| λ )局部最大。比如使用Baum-Welch算法

Baum-Welch算法

已知 训练用的序列 Otraining 和模型 λ 的假设空间
目标是寻找能过最好解释数据的模型
λ=arg maxλP(O|λ)
另外我们假定初始时状态的数量是确定的,我们只需要确定模型中的概率参数。也就是说:
λ={A,B,π}
Baum-Welch算法:
1.初始使用随机的模型,并计算 P(Otraining|λ)
2.确定各个状态之间的转换的数量的期望值,和各个状态出现的数量的期望值(Bestimme die erwartete Anzahl von Zustandsübergängen (aus und zwischen Zustände) und Symbolausgaben)
3.重新估计参数
4.重复上述操作直到达到(局部)最优
上面是大概的流程,在看具体的实现之前,先做一些准备。
我们定义 ξt(i,j) 在给定O和 λ 的情况下,在t时刻从状态i跳转到状态j的概率:
ξt(i,j)=P(qt=Si,qt+1=Sj|O,λ)
ξt(i,j)=αt(i)aijbj(Ot+1)βt+1(j)P(O|λ=αt(i)aijbj(Ot+1)βt+1(j)Ni=1Nj=1αt(i)aijbj(Ot+1)βt+1(j)
因此我们有: γt(i)=Nj=1ξt(i,j)
具体的实现如下:
状态 Si 的状态转换的数量的期望值为:

t=1T1γt(i)

//为什么这里叫做数量可以这样理解, γt(i) 表示时刻t时状态为i的概率,也就是说状态i在t时刻出现一次的概率为 γt(i) ,上式则相当于各个时刻概率乘以一的合,因此即为他出现的数量的期望
类似的从状态i跳转到状态j的转换出现的数量的期望可以表示为:
t=1T1ξt(i,j)

通过上述两个数量我们可以通过下面的方法重新调整模型的参数:
π=γ1(i)aij=T1t=1ξt(i,j)T1t=1γt(i)bj(k)=T1t=1,Ot=vkγt(j)T1t=1γt(j)

最后一个的分子表示状态为j,对应观察事件为 vk 的数量的期望。
注意这个方法没有保证全局最大
//其实这个不是很懂

马尔可夫模型的种类

1.Ergodisches模型
每个状态都可以由其他状态出发经过有限步到达
2.Bakis模型(Links-nach-rechts-Modell)
状态的索引随着时间的推移只能增大或者保持不变
3.并行Bakis模型(Links-nach-rechts-Modell mit Parallelen Pfaden)
满足Bakis模型的规则,此外他存在并行路径
//插图55+56

你可能感兴趣的:(机器学习,隐马尔可夫,离散马尔可夫)