前言

本来从头到尾完整地叙述inside-outside的原理的。但一方面,看了材料之后,我反而对em algorithm for PCFGs有一些理解,能够与模型的训练联系起来,而inside-outside我真的不知道它有什么用,只知道一个公式,所以需要进一步去理解; 另一方面,接下来的今天没时间看这个,所以先记下一些粗糙的想法,以免忘了。

inside-outside algorithm

对于每一棵完整的 parsing tree:
谁都能懂的inside-outside算法
我们够可以将它分成两个部分(inside tree 和 outside tree):
谁都能懂的inside-outside算法
谁都能懂的inside-outside算法
这样的分解过程,用白话来讲就是: 我知道完整的一棵树,然后在某一个点上,就比如现在是在NP那个点上,我可以把这棵树分解开来,分成两个部分:

  • 具体NP下面是怎样的一棵小树
  • 不管,NP下面是怎样的一棵树,我只要一棵残缺的大树
    这样,就可以得到下面的公式:
    谁都能懂的inside-outside算法
    上面的公式在我看来解释为: 所有含有(A,I,J)的完整的树的概率和 = 所有含有(A,I,j)的残缺的树的概率和 * 所有以A为根,以x_i,….x_j为叶子节点的树的概率和。
    上面的残缺解释为: 概率计算时,并不考虑 A为根,x_i,….x_j为叶子节点的树具体是什么。

The EM algorithm for PCFGs

先初始化一组参数(也就是每一个规则都有一个概率),记为q。算法的过程就是q的迭代过程,q的迭代公式如下:

f®代表r这个规则在所有训练样本(句子)的所有可能的解析树上的count。
所以最重要的计算count®(这里的count®代表对于一个训练样本,所有可能的解析树上的count)。
经过公式推导,count®可以被表示成:

而这些都在inside algorithm的计算过程中都被记录了下来,只要查表就好。具体:1. 要查分子的话,先确定l = j-i, 在确定分割点k,再去看是不是A->BC,就可以查到;2. 要查分母Z的话,那就是root的值(所有可能的解析树的概率)。

目前不理解的地方

  • inside-outside里面的那个公式到底有什么用呢…
  • em算法中,既然 inside algorithm已经把答案算好,也就是说,对于每一个训练样本而言,上式中的分字和分母都是固定的,进一步得到:对于每一个训练样本而言,每一个count®都是固定的,进一步得到:f®是固定的,那么就是说:只要进行一次迭代,所有参数就固定了呀?
  • em算法中,依然没有找到outside algorithm的踪迹,因为所有需要的都在inside里被求好了,跟outside又有啥关系呢…

补充

有空一定会把上面说成人话的。

相关文章: