MLI_09 HMM(隐马尔可夫模型)

HMM 隐马尔可夫模型

总结(来源-李航-统计学习方法和学校课件)
HMM是Markov Chain模型
HMM是结构最简单的动态贝叶斯网(dynamic Bayesian network),这是著名的有向图模型,可用于标注问题的统计学习模型

定义

HMM 是关于时序的概率模型,描述有一个隐藏的马尔科夫链生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
HMM随机生成的状态序列 state sequence
每个状态生成一个观测,所有观测组成——观测序列 oberservation sequence。
λ=(A,B,π)分别为概率转移矩阵,观测概率矩阵和初始状态概率矩阵
π Anfangszustandwahrscheinlichkeiten
A Übergangswahrscheinlichkeiten
例子
在这里插入图片描述
给了状态转移矩阵,那么未来七天是。。。的概率是多少?
今天已经是sonnig
P(O|Modell)=P(S3)P(S3|S3)P(S3|S3)P(S1|S3)P(S1|S1)P(S3|S1)P(S2|S3)P(S3|S2)=10.80.80.10.40.30.10.2
(行是当前状态,列对应下一状态)

两个基本假设

  1. Beschränkter Horizont (观测独立性假设)
    在这里插入图片描述
    当前时刻的概率依赖于过去的时刻
  2. zeitinvarianz(时不变)
    在这里插入图片描述
    转移概率矩阵与当前时刻无关

例题

在这里插入图片描述
观测O={红,红,白,白,红}
状态Q={盒子1,盒子2,盒子3,盒子4}
状态转移概率A=[ 0 1 0 0; 0.4 0 0.6 0; 0 0.4 0 0.6; 0 0 0.5 0.5]
观测概率B=[0.5 0.5; 0.3 0.7; 0.6 0.4; 0.8 0.2]
初始概率分布π=[0.25 0.25 0.25 0.25]

观测序列生成算法

已知:λ=(A,B,π),观测长度T
求观测O
1. 根据π求出状态1-i1
2. t=1
3. 根据it和B求Ot
4. 根据Ot求it+1
5. t=t+1, t<T?goto 3 : end

3个基本问题

  1. 概率计算问题(Evaluationsproblem)
    给定模型λ和观测O,计算P(O|λ)
  2. 预测问题(Dekodierungsproblem)
    已知模型λ和观测O,求出最可能的序列Q
  3. 学习问题(Lern- und Optimierungsproblem)
    已知观测O,求出模型λ

理解例子:单词识别
Problem 3:为了识别每一个单词训练最优HMM模型
Problem 2:理解构建的模型,为了更有意义的改进(也可以用于识别单词)
Problem 1:通过最好的模型识别未知的单词

Problem 1

  1. 直接计算法(Naiver Ansatz)
    在这里插入图片描述
    其中,
    在这里插入图片描述

    在这里插入图片描述
    先求固定序列Q,再求观测序列O
    算法耗时O(2T*N^T)
  2. 改进算法
    向前算法和向后算法(vorwärts-Algorithm)
    例子
    在这里插入图片描述
    在这里插入图片描述
    算法vorwärts-Algorithm
    一. Initialisierung
    a 1 ( i ) = π S i b S i ( o 1 ) , ∀ i ∈   1 , . . . N a_{1}(i)=\pi_{Si}b_{Si}(o1), \forall i \in\ 1,...N a1(i)=πSibSi(o1),i 1,...N
    二. Induktion(递推)
    a t + 1 ( j ) = [ ∑ i = 1 n a t ( i ) a i j ] b j ( o t + 1 ) , 1 ≤ t ≤ T − 1 a_{t+1}(j)=[\sum_{i=1}^n a_{t}(i)a_{ij}]b_{j}(o_{t+1}), 1\le t\le T-1 at+1(j)=[i=1nat(i)aij]bj(ot+1),1tT1
    三. Terminierung
    P ( O ∣ λ ) = ∑ i = 1 n a T ( i ) P(O|\lambda)=\sum_{i=1}^n a_{T}(i) P(Oλ)=i=1naT(i)
    Aufwand: O ( N 2 T ) O(N^{2}T) O(N2T)
    算法(rückwärts-Algorithm)
    一. Initialisierung
    β t ( i ) = 1 , \beta_{t}(i)=1, βt(i)=1,
    二. Induktion
    对于t=T-1,t=T-2,…,1
    β t ( i ) = ∑ j = 1 n a i j b j ( o t + 1 ) β t + 1 ( j ) , 1 ≤ t ≤ T − 1 , ∀ i ∈ { 1 , . . . , N } \beta_{t}(i)=\sum_{j=1}^n a_{ij}b_{j}(o_{t+1})\beta_{t+1}(j), 1\le t\le T-1, \forall i \in \{1,...,N\} βt(i)=j=1naijbj(ot+1)βt+1(j),1tT1,i{1,...,N}
    三. Terminierung
    P ( O ∣ λ ) = ∑ j = 1 N π j b j ( o 1 ) β 1 ( j ) P(O|\lambda)=\sum_{j=1}^N \pi_{j} b_{j}(o1)\beta_{1}(j) P(Oλ)=j=1Nπjbj(o1)β1(j)

Problem 2 Decodisierungsproblem

  1. 近似算法(Optimalitätskriterium)
    P ( O ∣ λ ) = ∑ j = 1 N a t ( j ) β t ( j ) P(O|\lambda)=\sum_{j=1}^N a_{t}(j) \beta_{t}(j) P(Oλ)=j=1Nat(j)βt(j)
    Wahrscheinlichkeit γ t ( i ) = P ( q t = S i ∣ O , λ ) = P ( q t = S i , O ∣ λ P ( O ∣ λ ) = a t ( i ) β t ( i ) ∑ j = 1 N a t ( j ) b t ( j ) \gamma_{t}(i)=P(q_{t}=S_{i}|O,\lambda)=\frac{P(q_{t}=S_{i},O|\lambda}{P(O|\lambda)}= \frac{a_t(i) \beta_t(i)}{\sum_{j=1}^N a_t(j)b_t(j)} γt(i)=P(qt=SiO,λ)=P(Oλ)P(qt=Si,Oλ=j=1Nat(j)bt(j)at(i)βt(i)
    最有可能的解
    q t = a r g max ⁡ 1 ≤ i ≤ N γ t ( i ) , 1 ≤ t ≤ T − 1 q_t=arg\max_{1\le i\le N}\gamma_t(i), 1\le t\le T-1 qt=arg1iNmaxγt(i),1tT1
    Problem:
    Bei nicht vollständig vernetztem HMM ergibt dies unter Umständen keinen gültigen Pfad
    z.B. wenn bestes q t = S i   u n d   q t + 1 = S j   a b e r   a i j = 0 q_t=S_i \space und \space q_{t+1}=S_j \space aber \space a_{ij}=0 qt=Si und qt+1=Sj aber aij=0
    优点是计算简单,缺点就是上述的问题,有可能求出的最优序列不存在
  2. Viterbi-Algorithm(维特比算法)
    Viterbi-Algorithm实际上使用dynamic programming求概率最大路径(最优路径)。这时路径上对应一个状态序列。局部最优组成整体最优
    算法
    一. Initialisierung
    v 1 ( i ) = π S i b S i ( O 1 ) , ∀ i ∈ { 1 , . . . , N } v_1(i)=\pi_{S_i}b_{S_i}(O_1),\forall i \in \{1,...,N\} v1(i)=πSibSi(O1),i{1,...,N}
    二. Berechnung für alle S j ∈ S , ∀ j ∈ { 1 , . . . N }   u n d   2 ≤ t ≤ T − 1 , S_j\in S,\forall j \in \{1,...N\} \space und \space 2\le t\le T-1, SjS,j{1,...N} und 2tT1,
    v t ( S j ) = b j ( o t ) max ⁡ 1 ≤ i ≤ N [ v t − 1 ( S i ) a i j , ψ t ( j ) = a r g max ⁡ 1 ≤ j ≤ N [ v t ( S j ) a i j v_t(S_j)=b_j(o_t)\max_{1\le i\le N}[v_{t-1}(S_i)a_{ij},\psi_t(j)=arg\max_{1\le j\le N}[v_t(S_j)a_{ij} vt(Sj)=bj(ot)1iNmax[vt1(Si)aij,ψt(j)=arg1jNmax[vt(Sj)aij
    三. Bestimmung des Maximums der Gütewerte
    v ∗ = max ⁡ 1 ≤ j ≤ N [ v t ( S j ) ] v^*=\max_{1\le j\le N}[v_t(S_j)] v=1jNmax[vt(Sj)]
    四. Endnotes der besten Pfaden
    q t ∗ = a r g max ⁡ 1 ≤ j ≤ N [ v t ( S j ) ] q_t^*=arg\max_{1\le j\le N}[v_t(S_j)] qt=arg1jNmax[vt(Sj)]
    五. Bestimmung der Vitebi-Pfads rückwarts
    q t ∗ = ψ t + 1 ( q t + 1 ∗ ) q_t^*=\psi_{t+1}(q_{t+1}^*) qt=ψt+1(qt+1)
    他与vorwärts-Algorithm的区别就是用Maximierung代替Summierung,这里也正好回答了最后一个习题问题

    在这里插入图片描述
    (试用viterbi algorithm求一下最佳路径)

Problem 3 Lern- und Optimisierungsproblem

三个问题中最不好解决的,用Baum-Welch-Algorithm只能得到lokale Maximierung
Baum-Welch-Algorithm 也是EM(Expectation-Maximum-Algorithm)
算法
一. Beginne, mit zufälligem Modell λ, berechne P ( O t r a i n i n g ∣ λ ) P(O_{training}|\lambda) P(Otrainingλ)
二. Schleife: (进入EM算法吧)
三. E_Schritt: Bestimme die erwartete Anzahl von Zustandsübergängen (aus und zwischen Zuständen) und Symbolausgaben (求Q函数
Q ( λ , λ ˉ ) = ∑ I l o g π i 1 P ( O , I ∣ λ ˉ ) + ∑ I ( ∑ t = 1 T − 1 l o g a i t i t + 1 ) P ( O , I ∣ λ ˉ ) + ∑ I ( ∑ t = 1 T l o g b i t ( o t ) ) P ( O , I ∣ λ ˉ ) Q(\lambda,\bar{\lambda})=\sum_I log \pi_{i_1}P(O,I|\bar{\lambda})+\sum_I (\sum_{t=1}^{T-1}log a_{i_t i_{t+1}})P(O,I| \bar{\lambda})+\sum_I(\sum_{t=1}^Tlogb_{i_t}(o_t))P(O,I|\bar{\lambda}) Q(λ,λˉ)=Ilogπi1P(O,Iλˉ)+I(t=1T1logaitit+1)P(O,Iλˉ)+I(t=1Tlogbit(ot))P(O,Iλˉ)
四. M_Schritt: Neuschätzung der Übergangs- und Emissionswahrscheinlichkeiten-> Berechnung einer neue Modells
五. Wenn (lokales) Maximum erreicht ist
六. Break
定义一个Zustandsübergangs von Si zum Sj ξ ( i , j ) = P ( q t = S i , q t + 1 = S j ∣ O , λ ) = a t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) P ( O ∣ λ ) = a t ( i ) a i j b j ( o t + 1 ) β t + 1 ( j ) ∑ i = 1 N ∑ j = 1 N a t ( j ) a i j b j ( o t + 1 β t + 1 ( j ) \xi(i,j)=P(q_t=S_i,q_{t+1}=S_j|O,\lambda)=\frac{a_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}{P(O|\lambda)}=\frac{a_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^N\sum_{j=1}^Na_t(j)a_{ij}b_j(o_{t+1}\beta_{t+1}(j)} ξ(i,j)=P(qt=Si,qt+1=SjO,λ)=P(Oλ)at(i)aijbj(ot+1)βt+1(j)=i=1Nj=1Nat(j)aijbj(ot+1βt+1(j)at(i)aijbj(ot+1)βt+1(j)
Wahscheinlichkeit
γ t ( i ) = ∑ j = 1 N ξ t ( i , j ) \gamma_t(i)=\sum_{j=1}^N\xi_t(i,j) γt(i)=j=1Nξt(i,j)
公式就可以简化成
a i j = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) a_{ij}=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)} aij=t=1T1γt(i)t=1T1ξt(i,j)
b j ( k ) = ∑ t = 1 , o t = v k T γ t ( i ) ∑ t = 1 T γ t ( i ) b_{j}(k)=\frac{\sum_{t=1,o_t=v_k}^{T}\gamma_t(i)}{\sum_{t=1}^{T}\gamma_t(i)} bj(k)=t=1Tγt(i)t=1,ot=vkTγt(i)
π = γ 1 ( i ) \pi=\gamma_1(i) π=γ1(i)
所以Baum-Welch算法
一. 初始化 n=0,选取a0,b0,pai0
二. 递推. 对n=1,2
算出n+1的各个式子,按照n时的模型计算
三. 终止,所以这个是次数终止

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值