Baum-Welch算法(EM算法)对HMM模型的训练
2023-09-11 14:15:28 时间
Baum-Welch算法就是EM算法,所以首先给出EM算法的Q函数
\[\sum_zP(Z|Y,\theta')\log P(Y,Z|\theta)
\]
换成HMM里面的记号便于理解
\[Q(\lambda,\lambda') = \sum_zP(I|O,\lambda')\log P(I,O|\lambda)
\]
根据状态序列和观测序列的联合分布
\[\begin{align*}
P(O,I|\lambda) &= \sum_IP(O|I,\lambda)P(I|\lambda)\\
&= \pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)\dots a_{i_{T-1}i_T}b_{i_T}(o_T)\\
\end{align*}\]
代入上式后得
\[\begin{align*}
Q(\lambda, \lambda') &= \sum_IP(I|O,\lambda')\log\pi_{i_1}\\ &+ \sum_IP(I|O,\lambda')\log\sum_{t=1}^Tb_{i_t}(o_t) \\ &+ \sum_IP(I|O,\lambda')\log\sum_{t=2}^Ta_{i_{t-1}i_T}
\end{align*}\]
这便是E步,下面看看M步.
看Q函数得第一步, 由于带有约束
\[\sum_i^N\pi_i = 1
\]
这个时候就需要请出拉格朗日乘子了
\[\begin{align*}
L &= \sum_IP(I|O,\lambda')\log\pi_1 + \gamma(\sum_{i=1}^N\pi_i -1)\\
&= \sum_{i=1}^NP(O,i_1=i|\lambda')\log\pi_i + \gamma(\sum_{i=1}^N\pi_i -1)\\
\end{align*}\]
令\(\dfrac{\partial L}{\partial\pi_i} = 0\)得到
\[\begin{align*}
P(O, i_1 = i|\lambda') + \gamma \pi_i &= 0\\
P(O, i_1 = i|\lambda') &= -\gamma \pi_i\\
\sum_{i=1}^NP(O, i_1 = i|\lambda') &= -\gamma \sum_{i=1}^N\pi_i\\
\gamma &= -P(O|\lambda')
\end{align*}\]
回代,得到
\[\pi_i = \dfrac{P(O, i_1=i|\lambda')}{P(O|\lambda')}
\]
其他得参数同样可以得到
相关文章
- 计算机等级考试二级C语言程序设计专项训练题——数组元素的移动
- 如何训练个人的ChatGpt4 - tokengo - 博客园 (cnblogs.com)
- MNN 是一个高效、轻量的深度学习框架,端侧的推理与训练性能在业界处于领先地位
- 『NLP经典项目集』02:使用预训练模型ERNIE优化情感分析
- HDU-SupportOrNot训练实录
- 【UWB系统同步】OFDM基于训练序列的同步算法的MATLAB仿真
- YOLOV3训练环境的搭建
- C#,人工智能,机器学习,聚类算法,训练数据集生成算法、软件与源代码
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- OpenCV3.x实现KNN算法(K近邻算法),并保存训练模型
- pytorch Dataset, DataLoader产生自定义的训练数据
- YOLOv7学习笔记(一)——概述+环境+训练
- Pytorch训练时显存分配过程探究
- 人脸检测和行人检测2:YOLOv5实现人脸检测和行人检测(含数据集和训练代码)
- 戴眼镜检测和识别2:Pytorch实现戴眼镜检测和识别(含戴眼镜数据集和训练代码)
- 试题 算法训练 K好数(分析到位哦)
- 学生python编程----飞机训练
- 算法训练 区间k大数查询
- 算法训练 友好数(VIP试题)
- 算法训练 出现次数最多的整数
- 算法训练 字串统计
- 算法训练 最小乘积(基本型)
- 算法训练 5-1最小公倍数
- 蓝桥杯 之 算法训练 P0103
- 04-05组合问题_算法训练
- 算法训练 2的次幂表示(递归)
- 算法训练 最大最小公倍数(数论)
- 算法训练 最大的算式(DP)
- 算法训练 Balloons in a Box (枚举,模拟)
- 算法训练 Cowboys(DP)
- PyTorch实现断点继续训练,学习率接着上一个epoch的接着变化