HMM(隐马尔科夫模型)的训练

智数琉璃引
• 阅读 14896

HMM的训练

隐马尔科夫模型的训练。上篇文章讲述了,已知模型(初始矩阵,状态转移矩阵,发射矩阵)求某一观察序列的几率。但没有提及如何获取模型参数,这篇文章就概略的讲述HMM的训练。

极大似然估计(Maximum Likelihood Estimate)

在很多网上文章里,提到如果有标注数据可以通过极大似然估计对HMM的参数进行计算。
极大似然估计其实就是在已经概率分布形式的情况下,对参数进行估算的一种方法。

  1. 写出似然函数
  2. 加入对数(方便求导,不会影响结果)
  3. 设导数为0
  4. 求解方程(如果有多个参数,会联立求方程组)

通过隐马尔可夫模型中最大似然估计的推导过程
[https://wenku.baidu.com/view/...]()

  • 可以推出

状态转换概率:
$$P(t | s) = \frac{Count(t,s)}{Count(s)}$$
发射概率:
$$P(w | t) = \frac{Count(w,t)}{Count(t)}$$

里边的Count(t,s) 就是隐藏状态t,s在训练集中得出现次数。Count(w,t)是隐藏状态t和观察状态w一起出现的次数。
其实这个也很符合常识,不用上边复杂的推导过程,根据经验(大数定律), 我们也能知道频率近似于概率。

Baum–Welch算法

很多时候我们并没有标注数据,只有很多组观察数据(未标注), 在进行极大似然估计计算的时候,根本无法进行(维数等于样本数据)。
但我们能比较两组不同的参数,判断谁得到样本集的概率更高。EM(Expectation-maximization)算法能帮助我们在这种情况下,得到概率分布参数的局部最优解。从某种意义上来说,EM算法可以看做求极大似然的一种特殊算法。

回到HMM上,Baum–Welch算法就是EM算法在HMM上的具体实现。
顺便说下,Baum–Welch算法(1960s)比EM算法(1977)早出现, 但EM总结这类算法的一般步骤。所以现在都把Baum–Welch看成EM的特殊实现。

Baum–Welch算法的步骤。

  1. 随机构造初始化参数。
  2. E-step,通过前向后向计算,得到参数的数据期望
  3. M-step,通过E(X)更新参数。
  4. 迭代2-3步。直到参数稳定,得到局部最优解。

算法先假定一组概率参数,然后利用向前向后计算,计算出符合目前观察现象的概率的数学期望,
然后再拿这组数学期望去更新参数,逐渐逼近局部最优解。

现在让我们看看E-STEP到底怎么做的,在此前我们得先弄明白向前变量和向后变量。

  • 向前变量
    $$\alpha_{t}(i)=P(O_{1},O_{2},...,O_{t},q_{t}=S_{i}|\theta )$$

给定模型下,观察序列为$O_{1},O_{2},...,O_{t}$ 和 t时刻隐藏状态为$S_{i}$的联合概率。

  • 向后变量
    $$\beta_{t}(i)=P(O_{t+1},O_{t+2},...|q_{t}=S_{i},\theta )$$

给定模型下,t时刻隐藏状态为$S_{i}$并且后续观察序列为$O_{t+1},O_{t+2},...$的概率。

注意两个定义都可以使用我们前一篇文章所说的前向后向算法进行计算。就是一个递归计算的过程。

这两个变量合在一起就可以表示.在给定观察序列下,t时刻隐藏状态为i的概率。
$$\gamma_{t}(i)=P(q_{t}=S_{i}|O,\theta)=\frac{\alpha_{t}(i)*\beta_{t}(i)}{P(O|\theta)}=\frac{\alpha_{t}(i)*\beta_{t}(i)}{\sum_{i=1}^{n}\alpha_{t}(i)*\beta_{t}(i)}$$

又定义, 在给定观察序列下,t时刻从隐藏状态 i 转移到 j的概率。
$$\xi_{t}(i,j)=P(q_{t}=S_{i},q_{t+1}=S_{j}|O,\theta) = \frac{\alpha_{t}(i)*a_{i,j}*b_{j,O_{t+1}}*\beta_{t+1}(j)}{\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_{t}(i)*a_{i,j}*b_{j,O_{t+1}}*\beta_{t+1}(j)}$$

隐藏状态为i的数学期望,其实就是算个平均值
$$E(i)=\frac{\sum_{t=1}^{T-1}\gamma_{t}(i)} {T-1}$$

隐藏状态从 i 转移到 j 的数学期望(是t时刻为i,t+1时刻为j的联合概率)
$$E(i,j)=\frac{\sum_{t=1}^{T}\xi_{t}(i,j)} {T-1}$$

所以自然可以推出
$$估算初始概率=\gamma_{1}(i)$$
$$估算转移概率=\frac{E(i,j)}{E(i)}$$
$$估算发射概率=\frac{E(i,O=为O_{x})}{E(i)}$$
上边$(O=为O_{x})$是指只计算隐藏状态为i,发射后的观察状态为x的情况$

然后使用上边计算的估算值,替换初始的参数。反复进行迭代,直到得到局部最优解。


E=> M=> E=> ...直到稳定
点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Pytorch固定部分参数(只训练部分层)
在迁移学习中我们经常会用到预训练模型,并在预训练模型的基础上添加额外层。训练时先将预训练层参数固定,只训练额外添加的部分。完了之后再全部训练微调。在pytorch固定部分参数训练时需要在优化器中施加过滤。!(https://oscimg.oschina.net/oscnet/c2e82d04a39a6ac7a0edc7e41e7bbad219a
Stella981 Stella981
3年前
PaddlePaddle预训练模型大合集,还有官方使用说明书
PaddlePaddle在不断增加官方支持的模型的同时,也在关注预训练模型的丰富度。在过去的版本中,我们已经发布了目标检测FasterRCNN、MobileNetSSD、PyramidBox和场景文字识别CRNNCTC、OCRAttention共计5个预训练模型。近期,在图像分类领域我们一口气发布了四个系列共十个预训练模型,丰富扩充了预训练模
Wesley13 Wesley13
3年前
4项探索+4项实践,带你了解华为云视觉预训练研发技术
摘要:本文主要讲述云原生时代华为云在AI基础研究、视觉预训练模型研发和行业实践,以及AI开发平台ModelArts的最新进展。近日,在Qcon全球软件开发大会(深圳站)上,华为云人工智能领域首席科学家、IEEEFELLOW田奇博士,发表了“云原生时代,视觉预训练大模型探索与实践”的主题演讲,介绍了云原生时代华为云在AI基础研究、视觉预训练模
京东广告算法架构体系建设--大规模稀疏场景高性能训练方案演变
一、前言京东广告训练框架随着广告算法业务发展的特点也在快速迭代升级,回顾近几年大致经历了两次大版本的方案架构演变。第一阶段,随着2016年Tensorflow训练框架的开源,业界开始基于Tensorflow开源框架训练更复杂的模型。模型对特征规模和参数规模
DeepSpeed: 大模型训练框架 | 京东云技术团队
目前,大模型的发展已经非常火热,关于大模型的训练、微调也是各个公司重点关注方向。但是大模型训练的痛点是模型参数过大,动辄上百亿,如果单靠单个GPU来完成训练基本不可能。所以需要多卡或者分布式训练来完成这项工作。
数字先锋 | “言”之有“力”,大模型背后的算力“推手”!
在算力调度方面,天翼云通过自研的调度系统,协助思必驰DFM2大模型调度GPU、NPU、CPU等异构算力资源,大规模训练上云1个月,可以完成数十亿规模大模型所有阶段训练和效果评估。在训练能力打造方面,天翼云支持多种模型训练方式,不仅可以提升大模型训练平台的数据量,还大幅缩短了训练周期和交付进度。
高耸入云 高耸入云
1年前
如何做Bert模型的fine-tuning?近屿智能OJAC带你一探究竟
📖更多AI资讯请👉🏾选择合适的预训练模型:从预训练的BERT模型开始,例如Google提供的BERTbase或BERTlarge。这些模型已经在大量文本数据上进行过预训练了,我们如何对BERT模型进行finetuning呢?准备和预处理数据:集针对特
智数琉璃引
智数琉璃引
Lv1
他年我若为青帝,报与桃花一处开。
文章
5
粉丝
0
获赞
0