Baum-Welch 算法

Baum-Welch 算法

假设给定训练数据只包含 S S S 个长度为 T T T 的观测序列 { O 1 , O 2 , ⋯   , O S } \{O_1, O_2, \cdots, O_S\} {O1,O2,,OS} 而没有对应的状态序列,目标是学习隐马尔可夫模型 λ = ( A , B , π ) \lambda = (A, B, \pi) λ=(A,B,π) 的参数。我们将观测序列看作在观测数据 O O O ,状态序列数据看作不可观测的隐数据 I I I,那么隐马尔可夫模型事实上是一个含有隐变量的概率模型:

P ( O ∣ λ ) = ∑ I P ( O , I ∣ λ ) (10.32) P(O|\lambda) = \sum_{I} P(O, I|\lambda) \tag{10.32} P(Oλ)=IP(O,Iλ)(10.32)

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

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

    所有观测数据写成 O = ( o 1 , o 2 , ⋯   , o T ) O = (o_1, o_2, \cdots, o_T) O=(o1,o2,,oT),所有隐数据写成 I = ( i 1 , i 2 , ⋯   , i T ) I = (i_1, i_2, \cdots, i_T) I=(i1,i2,,iT),完全数据是 ( O , I ) = ( o 1 , o 2 , ⋯   , o T , i 1 , i 2 , ⋯   , i T ) (O, I) = (o_1, o_2, \cdots, o_T, i_1, i_2, \cdots, i_T) (O,I)=(o1,o2,,oT,i1,i2,,iT)。完全数据的对数似然函数是 log ⁡ P ( O , I ∣ λ ) \log P(O, I|\lambda) logP(O,Iλ)

  2. EM 算法的 E 步:求 Q Q Q 函数 Q ( λ , λ ^ ) Q(\lambda, \hat{\lambda}) Q(λ,λ^)

    Q ( λ , λ ^ ) = ∑ I log ⁡ P ( O , I ∣ λ ) P ( I ∣ λ ^ ) (10.33) Q(\lambda, \hat{\lambda}) = \sum_{I} \log P(O, I|\lambda)P(I|\hat{\lambda}) \tag{10.33} Q(λ,λ^)=IlogP(O,Iλ)P(Iλ^)(10.33)

    其中, λ ^ \hat{\lambda} λ^ 是隐马尔可夫模型参数的当前估计值, λ \lambda λ 是要极大化的隐马尔可夫模型参数。

    P ( O , I ∣ λ ) = π i 1 b i 1 ( o 1 ) a i 1 i 2 b i 2 ( o 2 ) ⋯ a i T − 1 i T b i T ( o T ) P(O, I|\lambda) = \pi_{i_1} b_{i_1}(o_1) a_{i_1i_2} b_{i_2}(o_2) \cdots a_{i_{T-1}i_T} b_{i_T}(o_T) P(O,Iλ)=πi1bi1(o1)ai1i2bi2(o2)aiT1iTbiT(oT)

    于是函数 Q ( λ , λ ^ ) Q(\lambda, \hat{\lambda}) Q(λ,λ^) 可以写成
    Q ( λ , λ ^ ) = ∑ I log ⁡ π i 1 P ( O , I ∣ λ ^ ) + ∑ I ( ∑ t = 1 T − 1 log ⁡ a i t i t + 1 ) P ( O , I ∣ λ ^ ) + ∑ I ( ∑ t = 1 T log ⁡ b i t ( o t ) ) P ( O , I ∣ λ ^ ) (10.34) Q(\lambda, \hat{\lambda}) = \sum_{I} \log \pi_{i_1} P(O, I|\hat{\lambda}) + \sum_{I} \left(\sum_{t=1}^{T-1} \log a_{i_t i_{t+1}}\right) P(O, I|\hat{\lambda}) + \sum_{I} \left(\sum_{t=1}^{T} \log b_{i_t}(o_t)\right) P(O, I|\hat{\lambda}) \tag{10.34} Q(λ,λ^)=Ilogπi1P(O,Iλ^)+I(t=1T1logaitit+1)P(O,Iλ^)+I(t=1Tlogbit(ot))P(O,Iλ^)(10.34)

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

  3. EM 算法的 M 步:极大化 Q Q Q 函数 Q ( λ , λ ^ ) Q(\lambda, \hat{\lambda}) Q(λ,λ^) 求模型参数 A , B , π A, B, \pi A,B,π

    由于要极大化的参数在式 (10.34) 中单独地出现在 3 个项中,所以只需将各项分别极大化。

    (1) 式 (10.34) 的第 1 项可以写成

    ∑ I log ⁡ π i 1 P ( O , I ∣ λ ^ ) = ∑ i = 1 N log ⁡ π i P ( O , i 1 = i ∣ λ ^ ) \sum_{I} \log \pi_{i_1} P(O, I|\hat{\lambda}) = \sum_{i=1}^{N} \log \pi_i P(O, i_1 = i|\hat{\lambda}) Ilogπi1P(O,Iλ^)=i=1NlogπiP(O,i1=iλ^)

    注意 π i \pi_i πi 满足约束条件 ∑ i = 1 N π i = 1 \sum_{i=1}^{N} \pi_i = 1 i=1Nπi=1,利用拉格朗日乘子法,写出拉格朗日函数:
    ∑ i = 1 N log ⁡ π i P ( O , i 1 = i ∣ λ ^ ) + γ ( ∑ i = 1 N π i − 1 ) \sum_{i=1}^{N} \log \pi_i P(O, i_1 = i|\hat{\lambda}) + \gamma \left(\sum_{i=1}^{N} \pi_i - 1\right) i=1NlogπiP(O,i1=iλ^)+γ(i=1Nπi1)

    对其求偏导数并令结果等于0:
    ∂ ∂ π i [ ∑ i = 1 N log ⁡ π i P ( O , i 1 = i ∣ λ ^ ) + γ ( ∑ i = 1 N π i − 1 ) ] = 0 (10.35) \frac{\partial}{\partial \pi_i} \left[ \sum_{i=1}^{N} \log \pi_i P(O, i_1 = i|\hat{\lambda}) + \gamma \left(\sum_{i=1}^{N} \pi_i - 1\right) \right] = 0 \tag{10.35} πi[i=1NlogπiP(O,i1=iλ^)+γ(i=1Nπi1)]=0(10.35)

    得:

    P ( O , i 1 = i ∣ λ ^ ) + γ π i = 0 P(O, i_1 = i|\hat{\lambda}) + \gamma \pi_i = 0 P(O,i1=iλ^)+γπi=0

    i i i 求和得到 γ \gamma γ

    γ = − P ( O ∣ λ ^ ) \gamma = -P(O|\hat{\lambda}) γ=P(Oλ^)

    代入式 (10.35) 即得:

    π i = P ( O , i 1 = i ∣ λ ^ ) P ( O ∣ λ ^ ) (10.36) \pi_i = \frac{P(O, i_1 = i|\hat{\lambda})}{P(O|\hat{\lambda})} \tag{10.36} πi=P(Oλ^)P(O,i1=iλ^)(10.36)

    (2) 式 (10.34) 的第 2 项可以写成

    ∑ I ( ∑ t = 1 T − 1 log ⁡ a i t i t + 1 ) P ( O , I ∣ λ ^ ) = ∑ i = 1 N ∑ j = 1 N ∑ t = 1 T − 1 log ⁡ a i j P ( O , i t = i , i t + 1 = j ∣ λ ^ ) \sum_{I} \left(\sum_{t=1}^{T-1} \log a_{i_t i_{t+1}}\right) P(O, I|\hat{\lambda}) = \sum_{i=1}^{N} \sum_{j=1}^{N} \sum_{t=1}^{T-1} \log a_{ij} P(O, i_t = i, i_{t+1} = j|\hat{\lambda}) I(t=1T1logaitit+1)P(O,Iλ^)=i=1Nj=1Nt=1T1logaijP(O,it=i,it+1=jλ^)

    类似第 1 项,应用具有约束条件 ∑ j = 1 N a i j = 1 \sum_{j=1}^{N} a_{ij} = 1 j=1Naij=1 的拉格朗日乘子法可以求出:

    a i j = ∑ t = 1 T − 1 P ( O , i t = i , i t + 1 = j ∣ λ ^ ) ∑ t = 1 T − 1 P ( O , i t = i ∣ λ ^ ) (10.37) a_{ij} = \frac{\sum_{t=1}^{T-1} P(O, i_t = i, i_{t+1} = j|\hat{\lambda})}{\sum_{t=1}^{T-1} P(O, i_t = i|\hat{\lambda})} \tag{10.37} aij=t=1T1P(O,it=iλ^)t=1T1P(O,it=i,it+1=jλ^)(10.37)

    (3) 式 (10.34) 的第 3 项为

    ∑ I ( ∑ t = 1 T log ⁡ b i t ( o t ) ) P ( O , I ∣ λ ^ ) = ∑ j = 1 N ∑ t = 1 T log ⁡ b j ( o t ) P ( O , i t = j ∣ λ ^ ) \sum_{I} \left(\sum_{t=1}^{T} \log b_{i_t}(o_t)\right) P(O, I|\hat{\lambda}) = \sum_{j=1}^{N} \sum_{t=1}^{T} \log b_j(o_t) P(O, i_t = j|\hat{\lambda}) I(t=1Tlogbit(ot))P(O,Iλ^)=j=1Nt=1Tlogbj(ot)P(O,it=jλ^)

    同样用拉格朗日乘子法,约束条件是 ∑ k = 1 M b j ( k ) = 1 \sum_{k=1}^{M} b_j(k) = 1 k=1Mbj(k)=1。注意,只有在 o t = v k o_t = v_k ot=vk b j ( o t ) b_j(o_t) bj(ot) b j ( k ) b_j(k) bj(k) 的偏导数才不为 0,以 I ( o t = v k ) I(o_t = v_k) I(ot=vk) 表示。求得:

    b j ( k ) = ∑ t = 1 T P ( O , i t = j ∣ λ ^ ) I ( o t = v k ) ∑ t = 1 T P ( O , i t = j ∣ λ ^ ) (10.38) b_j(k) = \frac{\sum_{t=1}^{T} P(O, i_t = j|\hat{\lambda}) I(o_t = v_k)}{\sum_{t=1}^{T} P(O, i_t = j|\hat{\lambda})} \tag{10.38} bj(k)=t=1TP(O,it=jλ^)t=1TP(O,it=jλ^)I(ot=vk)(10.38)


以上部分公式详解的博文:
10.33 Q函数-新参数λ在旧参数λ^下的期望对数似然函数 解析
10.34 Q函数拆分的过程
Q(λ,λ^)的第一项(与初始状态分布π相关的部分)从隐状态序列 I 的总和形式转换为更具体的形式 公式解析
10.35初始状态分布π的拉格朗日函数对其求偏导数并令结果为0
参数优化中与状态转移概率aij相关公式解析
10.37状态转移概率aij的更新公式 推导过程
参数优化中与观测概率矩阵B相关公式解析
10.38观测概率矩阵B中的元素bj(k)更新公式 推导过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

彬彬侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值