我正在对大型英文文本(布朗语料库的前 50,000 个字符,仅包括字母和空格)训练 2 状态 HMM,我的算法遵循 Mark Stamp 的教程(www.cs.sjsu.edu/~stamp/RUA/ HMM.pdf)。
由于观察只包括 26 个字母和空格,最初我给每个观察(在一个状态内)的概率为 1/27,然后在保持行随机的同时将每个观察修改 0.0001。
将训练器运行 50 次迭代可以让我在 log[P(O|lambda)] 中获得非常微小的增量改进,其中 lambda 是更新后的模型。此外,在最终模型的观察矩阵中,每个观察的概率在两种状态下几乎相同(参见http://pastebin.com/xVVYNhGs)。
我想我被困在一个局部最大值上,所以我改变了观察矩阵的初始猜测以匹配 Stamp 的,它实际上给了我一个更新的观察矩阵,在相同的迭代次数内因状态*而不同。(50 次迭代: http: //pastebin.com/U0AgrJ2N;100 次迭代: http: //pastebin.com/yAkruNjs)
我的问题是,我改变的初始观察矩阵(发射概率)显然使我脱离了可悲的局部最大值;但是我将如何去寻找/优化这个最初的猜测?