关于使用EM算法训练隐马尔可夫模型

我对EM算法还不太熟悉,正在学习隐马尔可夫模型。

在使用EM算法训练我的隐马尔可夫模型时,我对数据设置(文本处理)感到非常困惑。

请确认我的EM算法使用是否正确。

首先,我用整个训练集计算了发射概率矩阵的统计数据。然后,我用同一数据集运行了EM算法。-> 此时,未见数据的发射概率收敛到零。

我在阅读《语音与语言处理》一书时,发现练习8.3提到了两阶段训练方法。

8.3 扩展你在练习8.??中构建的HMM标注器,增加使用一些未标记数据的能力,除了你的标记训练语料库。首先获取一个大的未标记语料库。接下来,实现前向-后向训练算法。现在从你在练习8.??中用训练语料库训练的HMM参数开始;称这个模型为M0。用这些HMM参数运行前向-后向算法来标记无监督语料库。现在你有了一个新的模型M1。在一些保留的标记数据上测试M1的性能。

根据这个说明,我从训练集中选择了一些实例(训练集的1/3)来获取初始统计数据。然后,我用整个训练集运行EM程序来优化EM中的参数。

这样做可以吗?


回答:

练习中提到的程序是一种称为自训练的无监督学习类型。其思想是,你使用整个标记的训练集来构建一个模型。然后收集更多未标记的数据。找到新的未标记数据比找到新的标记数据要容易得多。之后,你会使用最初训练的模型来标记新数据。现在,使用自动生成的标签,训练一个新的模型。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注