首先,如果我们知道观测序列以及其对应的状态序列 ,则可以直接通过频率计算初始状态概率 (π),状态转移概率 (A) ,以及生成观测概率 (B):
以 为例,统计状态序列中由状态 i 转换为 j 的个数
,除以所有状态转移个数的和
即可得到相应状态转移概率。
Baum_Welch算法
给定观测序列
,求解参数
使得
最大
此时相较于文章开始的问题,状态序列未知,相当于是一个含有隐含变量的参数估计问题,这就需要EM算法了。
EM算法全称Expectation Maximization算法,即期望最大化算法。EM算法是机器学习十大方法之一, 由Arthur P. Dempster,Nan Laird和Donald Rubin 1977年正式提出,是一种在已知部分相关变量的情况下,估计未知变量的迭代算法。
EM的算法流程相对而言比较简单,其步骤如下:
step1 :初始化分布参数
step2 :重复E、M步骤直到收敛:
a) E步骤-期望值计算:根据参数的假设值,给出未知变量的期望估计,应用于缺失值。
b) M步骤-最大化计算:根据未知变量的估计值,给出当前的参数的极大似然估计。
对于给定的隐藏状态 I 和观测状态 O ,求参数 的对数极大似然估计函数为:
给定模型 和观测变量 O,出现隐藏状态 I 的条件概率为:
则定义:Q函数是完全数据的对数似然函数关于给定模型参数和观测变量的前提下对隐变量的条件概率分布期望,接下来只需要对它极大化。
第一个 表示要求的极大化参数, 第二个
表示参数当前的估计值,每一次的迭代都是在求 Q函数的极大值。
其中后半部分:
在这里,对于估计参数来说分母就是常量了。
新的Q函数:
其中:
对Q函数进行对数展开得:
观察即可发现,括号内的三项即为我们想要求解的参数,其互相之间为加法,故求总体极大值,只需要分别最大化就可以了。
以第一项为例:
在条件下求极值,拉格朗日乘子法!
再将求得参数带回Q函数迭代计算,参数变化很小时,结束迭代,返回参数。