机器学习笔记之隐马尔科夫模型(三)

本文介绍了机器学习中的隐马尔科夫模型(HMM),详细阐述了在监督学习和非监督学习场景下,如何估计模型参数。在监督学习中,通过极大似然估计法计算转移、观测和初始状态概率。而在非监督学习中,通过Baum-Welch算法更新模型参数。
摘要由CSDN通过智能技术生成

学习算法

1.1 监督学习算法

假设已给训练数据包含 S 个长度相同的观测序列和对应的状态序列{(O1,I1),(O2,I2),,(Os,Is)}, 那么可以利用极大似然估计来估计隐马尔科夫模型的参数。方法如下:

  1. 转移概率 aij 的估计

设样本中时刻 t 处于状态 i 时刻 t+1 转移到状态 j 的频数为 Aij, 那么状态转移概率 aij 的估计是

â ij=AijNj=1,i=1,2,,N,j=1,2,,N

  1. 观测概率 bj(k) 的估计

设样本中状态为 j 并观测为 k 的频数是 Bjk , 那么状态为 j 观测为 k 的概率 bj(k) 的估计是

b̂ =BjkMk=1Bjk,j=1,2,,N;k=1,2,,M

  1. 初始状态概率 πi 的估计 π̂ i S 个样本中初始状态为 qi 的频率

1.2 非监督学习算法(Baum-Welch 算法)

假设给定训练数据只包含 S 个长度为 T 的观测序列 {O1,O2,,Os} 而没有对应的状态序列, 目标是学习隐马尔科夫模型 λ=(A,B,π) 的参数,我们将观测序列数据看做观测数据 O , 状态序列数据看做不可观测的隐藏数据 I, 那么隐马尔科夫模型可以看做是一个含有隐变量的模概率模型

P(O|λ)=IP(O|I,λ)P(I|λ)

它的参数学习可以由 EM 算法实现

算法步骤及推导:

  1. 确定完全数据的对数似然函数

所有观测数据写成 O=(o1,o2,,oT) ,所有隐数据写成 I=(i1,i2,,iT) , 完全数据是 (O,I)=(o1,o2,,oT,i1,i2,,iT) . 完全数据的对数似然函数是 logP(O,I|λ) .

  1. EM 算法的 E 步: 求 Q 函数 Q(λ,λ¯)
    Q(λ,λ¯)=IlogP(O,I|λ)P(O,I|λ¯)

其中, λ¯ 是隐马尔科夫模型参数的当前估计值, λ 是要极大化的隐马尔科夫模型参数

P(O,I|λ)=πi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)

于是 Q 函数可以写成:

Q(λ,λ¯)=Ilogπi1P(O,I|λ¯)+I(t=1T1logaitit+1)P(O,I|λ)+I(t=1Tlogbit(ot))P(O,I|λ)

式中的求和都是对所有训练数据的序列总长度 T 进行的。

  1. EM 算法的 M 步 : 极大化 Q 函数, 求模型参数 A,B,π

    由于要极大化的参数在上面式子中分别单独的出现,所以可以对各项分别极大化

    • 第一项计算 πi ,可写成:
      Ilogπi0P(O,I|λ¯)=Ilogπi1P(O,i1=i|λ¯)

      注意到 πi 满足约束条件 Ni=1=1 , 利用拉格朗日乘子法,写出拉格朗日函数:
      Ilogπi1P(O,i1=i|λ¯)+γ(i=1Nπi1)

    对上式求偏导并令结果为0

    πi[i=1NlogπiP(O,i1=i|λ¯)+γ(i=1Nπi1)]=0

    注意到对 πi 求偏导时,只有当下标 i 都相同时才有偏导,否则为0
    P(O,i1=i|λ¯)πi+γ=0

    P(O,i1=i|λ¯)+γπi=0

    因为 πi 一共有 N 个可能的状态,于是对其求偏导可以得到 N 个等式,我们可以对 所有的 i 求和:
    i=1NP(O,i1=i|λ¯)+γi=1Nπi=0

    因为 Ni=1πi=1,Ni=1P(O,i1=i|λ¯)=P(O,|λ¯) 带入得 :
    γ=P(O|λ¯)

    我们将 γ 带入 P(O,i1=i|λ¯)+γπi=0 中 可以求出 πi :
    πi=P(O,i1=1|λ¯)P(O|λ¯)

    • 对第二项极大化

    I(t=1T1logaitit+1)P(O,I|λ¯)=i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=j|λ¯)

    类似于第一项的做法,因为状态转移矩阵每行加和为1 所以有 Njaij=1 , 同样用拉格朗日乘子法求解,设拉格朗日函数如下:
    i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=j|λ¯)+γ(j=1Naij1)

    对上式对 aij 求偏导,并令偏导结果为0:

    T1t=1P(O,it,it+1=j|λ¯)aij+γ=0

    t=1T1P(O,it,it+1=j|λ¯)+γaij=0

    这里对 aij 中的 j 求和得,且将 Nj=1aij=1 代入得:
    j=1Nt=1T1P(O,it=i,it+1=j|λ¯)+γj=1Naij=0

    因为对 j 求和,计算了所以关于处在 j 状态,所以有下式
    t=1T1P(O,it=i|λ¯)+γ=0

    解出 γ 并回代入,求得偏导的式子可以解得
    aij=T1t=1P(O,it=i,it+1=j|λ¯)T1t=1P(O,it=i|λ¯)

    • 第三项 可以写成:
      I(t=1Tlogbit(ot))P(O,I|λ¯)=j=1Nt=1Tlogbj(ot)P(O,it=j|λ¯)

    这里约束条件是 Mk=1bj(k)=1 (这里的 M 是可能的观测数),只有在 ot=vk 的时候, bj(ot) bj(k) 的偏导才不为0,这里用指示函数 I(ot=vk) 表示, 相等为1 否则为0. 写出拉格朗日函数:

    j=1Nt=1Tlogbj(ot)P(O,it=j|λ¯)+γ(k=1Mbj(k))=0

    bj(k) 求偏导得:

    t=1TP(O,it=j|λ¯)I(ot=vk)+γbj(k)=0

    这里对上式中的 k 求和得:

    t=1TP(O,it=j|λ¯)+γ=0

    解出 γ 并且回代入最初求的偏导的式中解得:

    bj(k)=Tt=1P(O,it=j|λ¯)I(ot=vk)Tt=1P(O,it=j|λ¯)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值