1. 隐马尔可夫模型简介
先提一句,判别式模型(计算条件概率分布)和生成式模型(计算联合概率分布),而HMM是生成式模型。
隐马尔可夫模型是一种贝叶斯网,是一种有向图模型,主要用于时序数据建模,主要应用于语音识别和NLP。
状态序列:yi表示第i时刻的系统状态,它是隐藏的不可被观测的,亦称“隐变量”。例如:Y表示大气层的变化!
观测序列:xi表示第i时刻的观测值,可以是连续值也可以是离散值(仅讨论离散的)。例如:X表示天气的情况!
模型的参数:矩阵A(状态转移概率 N*N N种状态) 矩阵B(观测概率矩阵N*M N种状态M种观测) 向量(初始化状态 N种状态), 这就是模型的三要素:
2.模型的假设和三个基本问题
两个基本假设:
(1)任意t时刻的状态只依赖于前一时刻的状态,与其他时刻的状态与观测都无关,也与t时刻无关。
(2)任意时刻的观测只依赖于该时刻模型的状态,与其他观测和状态无关。
这就是它的模型:
三个基本问题:
(1)概率计算问题。给定模型参数和观测序列O,计算在模型参数条件下观测序列出现的概率
。(DP)
(2)学习问题。已知观测序列,估计模型参数,使得在该模型下观测序列出现概率最大
。(EM)
(3)预测问题。已知模型参数和观测序列O,求给定观测序列条件概率
最大的状态序列
。(DP)
3.问题一:概率计算算法
直接计算法:
前向算法:
给定模型,定义到时刻t观测序列为O1,O2.....Ot且状态为qi的概率为前向概率。
算法过程:
递推解释:
后向算法:
给定参数,定义在时刻t状态为qi前提下,从t+1到T部分的观测序列为Ot+1,Ot+2,OT的概率为后向概率。
递推解释:同上
给定模型参数求观测序列:
4.问题二:学习算法
若训练数据包含观测序列和状态序列,那么HMM的学习非常简单,是监督学习。
可以直接利用大数定理“频率的极限是概率”给出HMM的参数估计!
若训练数据不包含状态序列,那么HMM的学习需要使用EM算法,是非监督学习。
第一步(E):根据初始化的参数求值,确定Q函数并且取期望。
确定Q函数(对数似然函数):
并且对Q取期望得:
第二步(M):将第一步求出来的值带入到化简的模型(用极大似然估计建立)中去,在求极值更新参数即可
注意三个参数分别位于三个项中,所以可以分别极大化,分别用拉格朗日乘子法+概率和为1的约束条件去求!
5.问题三:预测算法
近似算法:
在每一时刻t选择一个最有可能出现的状态,从而得到一个状态序列,将他作为预测结果。
实际中是有效的!
维特比(Viterbi)算法:
利用DP思路求概率最大的路径,这一条路径对应一个状态序列!
递推解释:同上
注意:本文归作者所有,未经作者允许,不得转载