需要训练的参数
1.对应于混淆矩阵B的高斯混合模型参数B
2.状态转移矩阵A
3.A中只有对应于自环和后继的状态转移概率需要被训练,其他项全都设置为零,并且不再改变
训练过程
Step 1:构建整个句子的HMM结构
Step 2:将A矩阵中对应于自环和后继的项初始化为0.5,其他项初始化为0
Step 3:用整个训练集的全集均值和方差对B矩阵进行初始化
Step 4:运行Baum-Welch算法的迭代过程。在每一次迭代中,计算前向概率和后向概率(计算方法见下文)以得到t时刻处于状态i的概率,然后将它用于更新参数A和B,重复迭代,直至收敛
前向算法
前言
以下解释建立在已掌握基本隐马尔可夫模型的基础上,隐马尔科夫模型不再做过多解释,这里仅阐明下文用到的相关符号含义:
符号 | 含义 |
---|---|
π \pi π | 初始状态概率向量 |
b b b | 观测概率矩阵(观测概率也称发射概率) |
b i ( o j ) b_i(o_j) bi(oj) | 状态i产生观测 o j o_j oj 的概率 |
α \alpha α | 状态转移矩阵 |
前向概率定义
给定隐马尔可夫模型 λ \lambda λ,定义到时刻 t t t部分观测序列为 o 1 , o 2 , … , o t o_1,o_2, …,o_t o1,o2,…,ot,且状态为 q i q_i qi的概率为前向概率,记作(可省略 λ \lambda λ):
α
t
(
i
)
=
P
(
o
1
,
o
2
,
…
,
o
t
,
i
t
=
q
i
∣
λ
)
\alpha_t(i)=P(o_1,o_2, …,o_t,i_t=q_i| \lambda )
αt(i)=P(o1,o2,…,ot,it=qi∣λ)
用图可能更好理解(即已知隐马尔可夫模型,t时刻的观测序列,求状态为
q
i
q_i
qi的概率):
算法步骤
输入:隐马尔科夫模型
λ
\lambda
λ,观测序列
O
O
O
输出:观测序列概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)
1.初值:
α
1
(
i
)
=
π
i
b
i
(
o
1
)
,
i
=
1
,
2
,
…
,
N
\alpha_1(i)=\pi _i b_i(o_1),i=1,2,…,N
α1(i)=πibi(o1),i=1,2,…,N
(理解:即第一个观测为
o
1
o_1
o1的情况下,对应的第一个状态为1、2、3的概率)
2.递推:
对t=1,2,…,T-1,
α
t
+
1
(
i
)
=
[
∑
j
=
1
N
α
t
(
j
)
α
j
i
]
b
i
(
o
t
+
1
)
,
i
=
1
,
2
,
…
,
N
\alpha_{t+1}(i)=\bigg[\sum_{j=1}^{N}\alpha_{t}(j)\alpha_{ji}\bigg] b_i(o_{t+1}),i=1,2,…,N
αt+1(i)=[j=1∑Nαt(j)αji]bi(ot+1),i=1,2,…,N
(理解:以求t=3为例,已知t=2时,即第一和二个观测为
o
1
,
o
2
o_1,o_2
o1,o2的情况下,对应的第二个状态为1、2、3的概率,那么分情况来说即:第二个状态为1时,由状态转移矩阵求第三个状态为1、2、3的概率,再分别乘上对应状态发射产生观测
o
3
o_3
o3的概率进行叠加,第二个状态为2、3同理,把所有的都叠加起来就得到我们想要的结果(解释的过于冗余了,其实就一句话,叠加所有可能的情况)
)
3.终止:
P
(
O
∣
λ
)
=
∑
i
=
1
N
α
T
(
i
)
P(O|\lambda)=\sum_{i=1}^{N}\alpha_{T}(i)
P(O∣λ)=i=1∑NαT(i)
PS:先写到这里,要去上课了