首页 > 代码库 > inside-outside 算法以及应用

inside-outside 算法以及应用

学习一下inside-outside算法,主要用于在已知文法结构下CFG,无监督parse。

CFG可定义为 Chomsky Normal Form, 对于生成的任何一个分析树有对应的potential值,树的potential值由其生成规则的potential值之乘积。因此对于potential的不同定义可衍生出类似的CFG,例如:

1,  将其potential定义为概率,则衍生出PCFG

2,  将其potential定义为特征的集合表示,则衍生出CRF-style CFG

类似于forward-backward算法,inside-outside算法需定义两个变量。

 定义为内部的potential加和,表示以非终结符A为root,span(A) = [xi, xi+1, …, xj]的所有可能subtree的potential之和。

 定义为外部的potential加和,表示以非终结符A为root,span(A) = [x0, x1,…, xi-1, A, xj+1, …, xn]的所有可能子结构的potential之和。

通过输入串以及CFG文法,计算inside和outside值

1, inside

初始化,如果存在于中,则其中为potential值,否则为0

通过自底向上的方法依次计算inside值,过程类似于CKY-style

 2,outside

初始化,其余都为0

通过自顶向下的方法依次计算outside值

outside值分为两个部分

即A在span(i,j)的outside值为B在span(i,k)的outside值乘以C在span(j+1,k)的inside值

即A在span(i,j)的outside值为B在span(k,i)的outside值乘以C在span(k,i-1)的inside值

因此计算公式为

通过inside和outside的值可以计算的内容如下(一个句子):

所有可能的parse树potential值之和

在这些所有可能的parse树中,包含规则的parse树potential值之和

此外可以计算在所有可能的parse树中,存在非终结符A,span(A) = [xi, xi+1, …, xj]的parse树potential值之和

因此,在PCFG中参数估算中可使用inside-outside算法,potential函数定义为规则概率。在CRF-CFG中potential函数定义为特征向量的形式。

 

PCFG参数估计

首先定义potential函数

通过inside-outside算法可以得到一个句子所有可能性parse树potential之和,以及包含某个规则的所有parse树potential之和,因此:

以此形式不断的迭代从而估计规则概率值

 

CRF-CFG参数估计(此部分还是有些不清楚)

首先定义potential函数

余下的问题就是,在CRF-CFG中估计特征权重。在传统的PCFG中使用公式计算规则数量然后归一化成概率。而在CRF-CFG中规则是以某些特征值表示,因此需要估计的是特征的权重。

然后构造似然函数

在各个参数上求偏导(梯度矩阵)

此偏导表示某一特证“实际计数得到的值”与“在参数下模型期望的值”的差值,这种差值主要变现在上式的括号中,第一部分为实际计数得到的值,第二部分为在theta参数下模型期望值。