我正在一个大的英语文本( Brown语料库的前50,000个字符,只包括字母和空格)上训练一个2-state HMM,我的算法遵循Mark stamp的教程(www.cs.sjsu.edu/~stamp/RUA/HMM.pdf)。
由于观察值只包括26个字母和空格,最初我为每个观察值(在一个州内)提供了1/27的概率,然后将每个观察值修改0.0001,同时保持行的随机性。
运行训练器50次迭代后,我在logP(O| lambda )中获得了非常微小的增量改进,其中lambda是更新后的模型。
我认为我被困在一个局部最大值上,所以我改变了观察矩阵的初始猜测,以匹配Stamp的,它实际上给了我一个更新后的观察矩阵,在相同的迭代次数内,状态*不同。(50次迭代:http://pastebin.com/U0AgrJ2N;100次迭代:http://pastebin.com/yAkruNjs)
我的问题是,我改变了的初始观测矩阵(发射prob)显然让我摆脱了可悲的局部最大值;但我该如何找到/优化这个初始猜测呢?
发布于 2013-07-12 21:18:57
在拉比纳的HMM教程paper中给出了这个问题的答案,第V-C节第273页:
基本上,上面的问题没有简单或直接的答案。相反,经验表明,随机(受制于随机和非零值约束)或先验概率和转移矩阵的统一初始估计在几乎所有情况下都足以对这些参数进行有用的重新估计。
然而,对于发射矩阵,经验表明,良好的初始估计在离散符号情况下是有帮助的,并且在连续分布情况下(在处理多个混合物时)是必不可少的。**
这样的初始估计可以通过多种方式获得,包括:
1)手动地将观察序列分割成具有状态内平均观察值的状态,
2)具有平均的观察值的最大似然分割,
3)具有聚类的分段k-means分割,
等。
https://stackoverflow.com/questions/13966699
复制相似问题