我对EM算法还不太熟悉,正在学习隐马尔可夫模型。
在使用EM算法训练我的隐马尔可夫模型时,我对数据设置(文本处理)感到非常困惑。
请确认我的EM算法使用是否正确。
首先,我用整个训练集计算了发射概率矩阵的统计数据。然后,我用同一数据集运行了EM算法。-> 此时,未见数据的发射概率收敛到零。
我在阅读《语音与语言处理》一书时,发现练习8.3提到了两阶段训练方法。
8.3 扩展你在练习8.??中构建的HMM标注器,增加使用一些未标记数据的能力,除了你的标记训练语料库。首先获取一个大的未标记语料库。接下来,实现前向-后向训练算法。现在从你在练习8.??中用训练语料库训练的HMM参数开始;称这个模型为M0。用这些HMM参数运行前向-后向算法来标记无监督语料库。现在你有了一个新的模型M1。在一些保留的标记数据上测试M1的性能。
根据这个说明,我从训练集中选择了一些实例(训练集的1/3)来获取初始统计数据。然后,我用整个训练集运行EM程序来优化EM中的参数。
这样做可以吗?
回答:
练习中提到的程序是一种称为自训练的无监督学习类型。其思想是,你使用整个标记的训练集来构建一个模型。然后收集更多未标记的数据。找到新的未标记数据比找到新的标记数据要容易得多。之后,你会使用最初训练的模型来标记新数据。现在,使用自动生成的标签,训练一个新的模型。