隐马尔可夫模型

隐马尔可夫模型

马尔科夫链的核心是:在给定当前知识或信息的情况下,过去对于预测将来是无关的**,未来仅与当前有关,而与历史无关.**

在观察一个系统变化的时候,他的下一个状态如何的概率只需要观察和统计当前状态即可得出

HMM: 通过统计的办法,可以去观察和认知一个事件序列上邻近事件发生的概率转换问题

P ( x 2 ∣ . . . , x t − 2 , x t − 1 , x t ) = P ( x t + 1 ∣ x t ) P(x_2|...,x_{t-2},x_{t-1},x_t) = P(x_{t+1}|x_t) P(x2...,xt2,xt1,xt)=P(xt+1xt)

image-20210908112624580

image-20210908110932063

你知道这个地区的总的天气趋势,并且平时知道你朋友会做的事情, ----> 也就是说这个隐马尔可夫模型的参数是已知的

基本概念

马尔科夫链-------状态转移矩阵

理解为所有情况下,状态转移发生的概率

image-20210908115732216

P = [   牛 市 熊 市 横 盘 牛 市 0.9 0.075 0.025 熊 市 0.15 0.8 0.05 横 盘 0.25 0.25 0.5 ] P=\left[ \begin{matrix} \ & 牛市& 熊市& 横盘\\ 牛市&0.9 & 0.075& 0.025 \\ 熊市 & 0.15 & 0.8 & 0.05 \\ 横盘 & 0.25& 0.25 & 0.5 \\ \end{matrix} \right] P= 0.90.150.250.0750.80.250.0250.050.5 状态状态转移矩阵

隐马尔可夫模型

马尔科夫链 + 一般随机过程

image-20210908120919061

  1. 当知道隐状态,根据观测状态生成矩阵,就可以知道观测状态发生概率

  2. 隐状态是通过 状态转移矩阵, 通过初始状态,预测现在的状态

  3. 所以 只需要一个 初始状态即可.

    可知, 股市状态变化的判断,就是一个马尔科夫链,股市状态到观测状态的变化就是一个一般随机过程

数学定义

定义: 隐 状 态 集 合 Q = [ q 1 , q 2 , . . . q N ] , 可 观 测 态 集 合 V = v 1 , v 2 , v 3 . . . . , v M 隐状态集合 Q= \left[ q_1,q_2,...q_N \right] , 可观测态集合 V = {v_1 , v_2 ,v_3....,v_M } Q=[q1,q2,...qN],V=v1,v2,v3....,vM

状 态 序 列 Q = i 1 , i 2 , . . . i N , 观 测 态 序 列 V = o 1 , o 2 , o 3 . . . . , o M 状态序列 Q= { i_1,i_2,...i_N} , 观测态序列 V = {o_1 , o_2 ,o_3....,o_M } Q=i1,i2,...iN,V=o1,o2,o3....,oM

#####两个基本假设

  • t时刻的隐状态只依赖t-1时刻的隐状态

    P ( i t ∣ t t − 1 , o t − 1 , t t − 2 , o t − 2 . . . t 1 , o 1 ) = P ( i t ∣ i t − 1 ) , t = 1 , 2 , . . . T P(i_t|t_{t-1},o_{t-1},t_{t-2},o_{t-2}...t_{1},o_{1})=P(i_t|i_{t-1}),t=1,2,... T P(ittt1,ot1,tt2,ot2...t1,o1)=P(itit1),t=1,2,...T

  • t时刻的观测态只依赖t时刻的隐状态

    P ( o t ∣ i T , o T , i T − 1 , o T − 1 . . . i t , o t , i t − 1 , o t − 1 . . . t 1 , o 1 ) = P ( o t ∣ i t ) P(o_t|i_{T},o_{T},i_{T-1},o_{T-1}...i_{t},o_{t},i_{t-1},o_{t-1}...t_{1},o_{1})=P(o_t|i_{t}) P(otiT,oT,iT1,oT1...it,ot,it1,ot1...t1,o1)=P(otit)

状态转移矩阵: A = [   a i j ] N × M A=\left[ \begin{matrix}\ a_{ij} \\ \end{matrix} \right]_{N×M} A=[ aij]N×M

其中 a i j = P ( i i + 1 = q j ∣ i t = q i ) a_{ij} = P(i_{i+1}=q_j|i_t =q_i) aij=P(ii+1=qjit=qi)

t时刻为$ q_i$ 状态下, t + 1 t+1 t+1时刻转化成 q j q_j qj的状态的概率是多少

观测状态生成矩阵: B = [   b j ( k ) ] N × M B=\left[ \begin{matrix}\ b_{j}(k) \\ \end{matrix} \right]_{N×M} B=[ bj(k)]N×M

其中 b j ( k ) = P ( o t = v k ∣ i t = q j ) b_{j}(k) = P(o_{t}=v_k|i_t =q_j) bj(k)=P(ot=vkit=qj)

在隐状态为 q j q_j qj的情况下,观测状态为 v k v_k vk的概 率是 多少

隐状态初始概率分布: Π = [ π i ] N \Pi = \left[ \pi_{i} \right]_N Π=[πi]N

其中 π i = P ( i 1 = q i ) \pi_i= P(i_1 = q_i) πi=P(i1=qi)

初始时刻,第 i i i个隐状态出现的概率

综上,HMM模式: λ = ( A , B , Π ) \lambda = (A,B,\Pi) λ=(A,B,Π)

用于解决 三个基本问题
观测序列概率
  • λ = ( A , B , Π ) \lambda = ( A,B, \Pi) λ=(A,B,Π) 已知模型

  • O = { o 1 , o 2 , . . . . o T } O = \{o_1,o_2,....o_T \} O={o1,o2,....oT} 预测这种序列发生的概率

    ====> P = ( O ∣ λ ) P = (O| \lambda ) P=(Oλ)

那么如何求概率P:

穷举法

概述:通过列举所有长度为T的隐状态序列,然后对每种隐状态序列下出现观测序列的概率进行求和,即可得出这种观测序列出现的概率

优缺点:穷举方法直接有效,但当隐状态较多时,复杂度高

P = P ( O ∣ λ ) = ∑ I P ( O , I ∣ λ ) P =P(O| \lambda )= \sum_I P(O,I|\lambda) P=P(Oλ)=IP(O,Iλ)

,其中$ P(O,I|\lambda) 是 指 在 模 型 是指在模型 \lambda$下,某个隐状态序列和观测态序列O同时同时发生的概率

所以把每个的隐状态序列下,当前隐状态序列和观测态序列O同时发生的概率相加求和就是模型λ下,观测态序列O的发生概率

P ( O , I ∣ λ ) = P ( I ∣ λ ) P ( O ∣ I , λ ) P(O,I|\lambda)= P(I|\lambda)P(O|I,\lambda) P(O,Iλ)=P(Iλ)P(OI,λ) 根据贝叶斯公式得来,模型λ下 当前隐状态序列I发生的概率 × 模型λ和当前隐状态序列I下 观测态序列O 的发生概率

P ( I ∣ λ ) = π i 1 a i 1 i 2 a i 2 i 3 . . . a i T − 1 i T P(I|\lambda) = \pi_{i_1}a_{i_1i_2}a_{i_2i_3}...a_{i_{T-1}i_T} P(Iλ)=πi1ai1i2ai2i3...aiT1iT

其中 π i 1 \pi_{i_1} πi1是指初始隐状态为 i 1 i_1 i1的概率 $ P(I|\lambda)$ 是指当前隐状态序列出现的概率

P ( O ∣ I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) . . . b i T ( o T ) P(O|I,\lambda)= b_{i_1}(o_1) b_{i_2}(o_2)...b_{i_T}(o_T) P(OI,λ)=bi1(o1)bi2(o2)...biT(oT)

前向后向算法

每次向前,都是通过计算 当前时刻 t t t,所有的N个隐状态 在 下一时刻 t + 1 {t+ 1} t+1出现隐状态 i h , h = { 1 , 2 , . . . , N } i_{h},h=\{1,2,...,N\} ih,h={1,2,...,N}且观测态为 o t + 1 o_{t+1} ot+1 的概率 (即有N个结果) ,这N个概率又用于计算下一个时刻 t + 2 t+2 t+2时,出现 隐状态 i h , h = { 1 , 2 , . . . , N } i_{h},h=\{1,2,...,N\} ih,h={1,2,...,N}且观测态为 o t + 2 o_{t+2} ot+2 的概率,直到得出 隐状态 i h , h = { 1 , 2 , . . . , N } , i_{h},h=\{1,2,...,N\}, ih,h={1,2,...,N},且观测态为 o N , o_{N}, oN, 的概率则终止

前向概率 a t ( i ) = P ( o 1 , o 2 , . . . o t , i t = q i ∣ λ ) a_t(i) = P(o_1,o_2,...o_t,i_t = q_i| \lambda ) at(i)=P(o1,o2,...ot,it=qiλ)

t时刻,隐状态为i 且观测序列为O的概率

(1) 初值: a 1 ( i ) = π i b i ( o 1 ) , i = 1 , 2 , 3 , . . , N a_1(i)=\pi_ib_i(o_1) , i=1,2,3,..,N a1(i)=πibi(o1),i=1,2,3,..,N

t 1 t_1 t1时刻,处于各个隐状态和观测态 o 1 o_1 o1同时发生的概率 = 初始时刻,第 i i i个隐状态出现的概率 × 在这个隐状态下,观测态 o 1 o_1 o1的概率

(2) 递推: a t + 1 ( i ) = [ ∑ j = 1 N a t ( j ) a j i ] b i ( o t + 1 ) a_{t+1}(i) = \left[\sum_{j=1}^Na_t(j)a_{ji}\right]b_i(o_{t+1}) at+1(i)=[j=1Nat(j)aji]bi(ot+1)

中括号内的含义 :当前时刻所有的N个隐含状态与下一时刻的第i个隐状态的转变

a 2 ( i ) a_{2}(i) a2(i) 为例, a 2 ( i ) = [ ∑ j = 1 N a 1 ( j ) a j i ] b i ( o 2 ) a_{2}(i) = \left[\sum_{j=1}^Na_1(j)a_{ji}\right]b_i(o_{2}) a2(i)=[j=1Na1(j)aji]bi(o2)

  1. a 1 ( j ) a j i a_1(j) a_{ji} a1(j)aji 是指 隐状态为j且观测序列为 O = { o 1 } O=\{o_1\} O={o1} 在下个时刻 t 2 t_2 t2 转变为隐状态为i观测序列为 O = { o 1 } O=\{o_1\} O={o1} 的概率

  2. ∑ j = 1 N a 1 ( j ) a j i \sum_{j=1}^Na_1(j)a_{ji} j=1Na1(j)aji是指 所有的隐状态且观测序列为 O = { o 1 } O=\{o_1\} O={o1} 在下个时刻 t 2 t_2 t2 转变为 隐状态为i 观测序列为 O = { o 1 } O=\{o_1\} O={o1} 的概率

  3. a 2 ( i ) = [ ∑ j = 1 N a 1 ( j ) a j i ] b i ( o 2 ) a_{2}(i) = \left[\sum_{j=1}^Na_1(j)a_{ji}\right]b_i(o_{2}) a2(i)=[j=1Na1(j)aji]bi(o2) 是指 隐状态为i 观测序列为 O = { o 1 , o 2 } O=\{o_1,o_2\} O={o1,o2} 的概率

(3) 终止: P ( O ∣ λ ) = ∑ i = 1 N a T ( i ) P(O|\lambda) = \sum_{i=1}^Na_T(i) P(Oλ)=i=1NaT(i)

​ 求解在时刻t,所有隐状态的概率求和


  • 模型参数学习

    • O = { o 1 , o 2 , o 3 . . . o T } O = \{ o_1,o_2,o_3...o_T\} O={o1,o2,o3...oT} 观测到这种序列

    ​ ====> λ = ( A , B , Π ) \lambda = (A,B,\Pi) λ=(A,B,Π) 尝试去找到三个参数,使得序列发生的概率最大

  • 预测(接码)问题

    • λ = ( A , B , Π ) \lambda = (A,B,\Pi) λ=(A,B,Π) 通过观测状态找到了一个模型

    • O = { o 1 , o 2 , . . . . o T } O = \{ o_1,o_2,....o_T \} O={o1,o2,....oT} 观测到这种序列

      ====> I = { i 1 , i 2 , . . . . , i T } I = \{ i_1,i_2,....,i_T\} I={i1,i2,....,iT} 有了观测序列,有了模型,可以进行 隐状态的预测

前向后向算法


RNN和HMM

RNN:是一个循环递归网络,在n时刻,网络的输出误差不仅和n时刻的隐含状态有关,也与n时刻之前的所有的隐含状态有关

RNN相比传统的HMM的优势是充分考虑了历史所有时刻的状态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

simpsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值