从现有的多输入最大熵分类器创建最大熵马尔可夫模型


9

最大熵马尔可夫模型(MEMM)的概念引起了我的兴趣,我正在考虑将其用于词性(POS)标记器。目前,我正在使用常规的最大熵(ME)分类器来标记每个单词。这使用了许多功能,包括前面的两个标签。

MEMM使用维特比算法找到通过马尔可夫链的最优路径(即为句子找到完整的最优标签集,而不是为每个单词找到单独的最优值)。读到它,这似乎具有奇妙的优雅和简约。但是,每个阶段仅依赖于上一个阶段的“结果”(即,根据马尔可夫链)。

但是,我的ME模型使用了前两个阶段(即前两个单词的标签)。看来我有两种可能的方法:

  • 与传统的Viterbi实现一样,使用根据一个(上一个)阶段存储的一组路径。我的ME分类器将使用此阶段和此阶段之前的“冻结”阶段(冻结到所考虑的路径中)来产生传递函数。

  • 或者我编写算法来跟踪两个阶段。这更加复杂,将不再是真正的马尔可夫模型,因为每个传递函数(即,来自ME模型)将取决于前两个阶段而不是一个阶段。

令我惊讶的是,第二秒将更加准确,尽管它将更加复杂。

在文献搜索过程中,我还没有找到任何示例。是否尝试过?两阶段方法是否改善了整体精度?

Answers:


4

(这确实是我面临的一个真实问题,并且ML StackExchange网站上线的时机几乎是完美的时机:我已经进行了几天的阅读和在线研究,并即将开始实施。这是我的结果。尽管他们并不严格,我认为他们确实回答了我自己的问题。如果有人有任何有用的输入,尝试过类似的尝试或有一些有用的参考,我将暂时保留此问题。)

好吧,在过去的几天中,我已经对此进行了编码。该代码不是很有效-大量创建和复制馆藏,但是练习的目的是查看它是否可以工作以及效果如何。

我将数据随机分为两个列表:训练数据和测试数据。我正在通过常规的最大熵POS Tagger运行测试数据;和我的新MEMM标记器。因此,他们看到的是相同的测试数据,可以直接进行比较-由于所选数据的随机性,我发现测试之间存在一些差异(通常为0.2-0.4%)。

第一个测试使用具有单个阶段的MEMM标记器(即真正的马尔可夫链)。它始终比简单的ME标记器性能好约0.1-0.25%。

接下来,我尝试了似乎更正确的两阶段方法。但是结果甚至更微不足道。通常结果是相同的,偶尔会稍差一些,但大多数时候可能会稍好一些(所以+/- 0.05%)。

MEMM标记器很慢。好的,我还没有进行任何优化,但是第一阶段(真正的马尔可夫链)要慢N倍(其中N =标签数),因为这是每一步之间传递的路径数。第2阶段的实现要慢N * N(因为传输的路径数量更多)。尽管优化可能会有所改善,但对于大多数实际应用而言,这可能太慢了。

我正在尝试的一件事是将较低的概率限制应用于路径。就是 维特比路径会在每次迭代过程中被修剪,所有路径的概率都低于某个概率(当前Log(总路径P)<-20.0)会被修剪。它的运行速度确实快了很多,但是问题仍然在于是否值得。我认为可能不是。

为什么我们看不到任何改善?我认为这主要归因于POS标签的行为方式和最大熵模型。尽管模型采用的是基于前两个标签的功能,但与前一个标签相比,前一个标签更为重要。直觉上,这对于英语来说是有意义的(例如,一个形容词通常后跟一个名词或另一个形容词,但这并不完全取决于该形容词之前的内容)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.