正确性证明
那么我们如何证明,按照这个最小的损失函数值走下去,一定能得到最优的句法树呢?也就是要证明,这个状态c的损失函数,的确就是从状态c能得到的最优句法树和标准树的汉明损失。
首先证明这个损失函数是短语可分解的,也就是证明,对于一个标准树中的短语集合,如果其中的每一个短语都是各自可达的,那么整个集合中的短语可以同时生成。
证明这个性质要用到数学归纳法。首先 时显然成立,然后假设集合元素个数为 时性质成立,下面证明集合T元素个数为 时性质也成立。
令 表示集合T中偏序最小的短语,即l是最小的,如果l有相等的,就再取r最小的。根据假设, 是从状态c可到达的gold短语。令 ,所以集合T'有m个元素,根据递归定义,整个集合都是从状态c可达的。
如果短语的可达性条件中第一种情况满足,那么 已经存在于状态c已生成短语集合中了,那么整个T集合当然是可达的。
如果第二种情况满足,即 ,那么可以通过不断SHIFT再一个REDUCE来得到短语 。那么T'集合又如何能全部生成呢?可以发现T'集合中的短语,要么是左边界等于l并且右边界大于r的(根据定义),这种可以继续SHUFT再REDUCE得到(满足条件3)。要么是左边界大于等于r的(因为都是标准树中的短语,所以不会有边界交叉),这种满足条件2,也可达。论文中就说了这两种情况,是否还存在一种左边界大于等于l,右边界小于等于r的情况呢?当然这种情况满足条件1,因为在生成的时候就已经生成了。所以最终T集合还是全部可达的。
如果第三种情况满足,即l是栈里某个短语的边界,而r大于等于j,那么这种情况依然可以通过不断SHIFT再REDUCE得到,而T集合仍然可以全部可达,原因和上一种情况类似。
所以可以证得,从状态c开始,存在某个转移序列,使得所有可达短语全部生成,那么只有不可达的短语会被错过,即:
最后一步就是证明另一项 等于 。首先因为前者肯定包含了后者,因为随着转移的进行,预测错误的短语只会增加,不会减少。然后证明最优句法树不会再增加新的错误短语,即从状态c开始的最优句法树一定是 。这里不是很好想,可以想象从包含当前栈顶短语的最小的标准短语开始,一步步的进行转移,按照James and Huang中的Dynamic Oracle。
至此已经证明了,这个损失函数可以保证每一步都按照最优的策略来进行转移。
实验
实验采用的转移模型都是基于Dyer et al.,并且也采用了James and Huang中的exploration策略来增加错误状态,提高Dynamic Oracle的准确率。
在PTB上的实验结果如下:
结果其实也不是很高,现在来看算低的了,本文只和其他的转移系统结果进行了比较,可以说在转移系统上还算比较高的吧,虽然今年转移系统也做到了92.0了。在运行速度上,本文的模型也比其他转移系统略有提升,我感觉虽然不需要二叉化了,但是REDUCE#k动作的增加同样会增加复杂度,这是自底向上转移系统的一个固有的问题。
总结
本文提出了一个非二叉化的自底向上的转移系统,主要有如下几个贡献点吧:
- 非二叉化预测,采用REDUCE#k动作。
- 采用损失函数来实现Dynamic Oracle。
- 准确率上超过了除了in-order的大多数转移系统。
- 训练速度上是所有转移系统中最快的。
看完这篇,我准备在chart-based的top-down模型上面也搞一个这种Dynamic Oracle试试,需要改变的就是每个状态的损失函数,现在的F1还只有91.87,希望能有所突破吧。