在电气工程、计算机科学、统计计算和生物信息学中,Baum-Welch算法是用于寻找隐马尔可夫模型(HMM)未知参数的一种EM算法,它利用前向-后向算法来计算E-Step的统计信息。
Baum-Welch算法是以其发明者Leonard E. Baum和Lloyd R. Welch的名字命名的。Baum-Welch算法和隐马尔可夫模型在20世纪60年代末和70年代初由Baum和他的同事在国防分析研究所的一系列文章中首次描述。HMMs最初主要应用于语音处理领域。20世纪80年代,HMMs开始成为分析生物系统和信息,特别是遗传信息的有用工具。此后,它们成为基因组序列概率建模的重要工具。
隐马尔可夫模型描述了一组“隐含”变量和可观测到的离散随机变量的联合概率。它依赖于假设:第个隐藏变量只与第个隐含变量相关,而与其他先前的隐藏变量无关,而当前观测到的状态仅依赖于当前的隐藏状态。
Baum-Welch算法利用EM算法,在给定一组观测特征向量的情况下,求出隐马尔可夫模型参数的最大似然估计。
记离散的隐含随机变量为,它总共有种状态(有个不同的值)。设与时间无关,得到与时间无关的随机变量转移矩阵:
初始的状态(即)分布由下式给出:
记观测到的变量为,总共有种取值。同样假设由隐含变量得到的可观测变量与时间无关。在时间,由隐含变量得到的可观察变量的概率是:
由所有可能得和的取值,我们可以得到的矩阵,其中属于所有可能得隐含状态,属于所有的可观测状态。
给出可观测序列:。
我们可以用描述隐马尔科夫链,Baum-Welch算法寻找的局部极大值,也就是能够使得观测到的序列出现的概率最大的HMM的参数。
初始化参数,可以随机初始化,或者根据先验知识初始化。
记是参数的条件下,观测的序列是,时刻的状态是的概率。可以通过递归计算:
记是参数是,在时刻的状态是的条件下,余下部分的观测序列是的概率。
假设我们有一只会下蛋的鸡,每天中午我们都会去拾取鸡蛋。而鸡是否下蛋依赖于一些未知的隐含状态,这里我们简单的假设只有两种隐含状态会决定它是否下蛋。我们不知道这些隐含状态的初始值,不知道他们之间的转换概率,也不知道在每种状态下鸡会下蛋的概率。我们随机初始化他们来开始猜测。
假设我们得到的观测序列是(E=eggs, N=no eggs): N, N, N, N, N, E, E, N, N, N。
这样我们同时也得到了观测状态的转移:NN, NN, NN, NN, NE, EE, EN, NN, NN。
通过上面的信息来重新估计状态转移矩阵。
重新估计到的转移概率为(下表中的"Pseudo probabilities"),重新计算所有的转移概率,得到下面的转移矩阵:
接下来重新估计Emission Matrix:
重新估计从隐含状态得到观察结果E的概率是,得到新的Emission Matrix
为了估计初始状态的概率,我们分别假设序列的开始状态是和,然后求出最大的概率,再归一化之后更新初始状态的概率。
一直重复上面的步骤,直到收敛。