证明开始
首先这个概率 的形式其实是一个狄利克雷过程,有两个特殊值要定义一下,一个是 时,概率为:
还有就是当 时,因为 实际不存在,所以定义为句法距离无穷大,那么 定义为0,所以概率为:
然后可以求出 的期望(这里论文中又写的一塌糊涂,符号定义都不统一。。。):
进一步可以写为:
上面的求和裂项相消可以得到:
这里也可以验证出 ,所以最终得到下面的门是正确的:
然后要证明的就是根据这个策略求出的两个单词的关联区间没有交叉(但是可以完全覆盖)。首先放宽一下条件,证明当 只取0或者1时,性质成立,也就是定义(这里原文又打错了。。。):
也就是在原来的定义中令 r 为正无穷。这样的话如果 ,那么 就是1,否则就是0。放宽了条件之后, 取值就只有1和0了,所以求出的 一定是满足句法距离 所有位置中最右边的一个。而对于所有的 ,都满足 。证明也很简单,假设存在两个单词 ,其中 ,它俩的关联区间交叉了,那么假设 为 ,而 ,所以 。那么根据定义,有:
这两个式子显然矛盾,所以证明了在宽松的条件下,这个不交叉的性质是成立的。
另一个极端是令 ,这种情况下 ,最终算下来 是一个首项为 公比为2的等比数列。这里的话论文里说最终会形成一棵所有叶子结点都直接连接在根结点上面的句法树,但是我是没看出来为什么,首先这种情况下句法距离 d 对最终的损失函数没有影响了,所以梯度无法传播回来,句法距离 d 应该只受到词向量影响了,最终就是一个普通的语言模型,句法距离最终会是什么样子谁也不知道。
在具体实现时,将 设为一个中间值,但是这样会产生交叉的关联区间,所以测试的时候再将其设为正无穷。
证明结束
Reading Network
上面的Parsing Network求了半天就是为了得到这个gates ,然后怎么使用呢?既然是语言模型,下面当然要用LSTM来对句子进行编码了。众所周知,在LSTM中有两个隐含层状态 ,所以在这里不直接使用上一个时刻传过来的状态,而是用历史所有时刻的状态信息,再与gates加权后输入到下一时刻。在论文中并没有直接使用gates作为权重,而是计算了一个新的权重,这里称作结构化attention:
当然这还不是最终的权重,再通过加入gates,定义一个新的结构化intra-attention:
上面两个式子我也不是很清楚怎么解释,反正最后就用这个权重来对历史状态进行编码:
最后将加权求和后的隐含层状态作为下一个时刻的隐含层输入,得到新的隐含层表示。
Predict Network
最后就是预测下一个单词是什么了,这里并没有直接用当前时刻 t 的隐含层输出来预测,还是采用了下一个时刻输出对所有历史信息的attention,做加权求和,但是存在一个问题, 的值依赖于 ,也就是依赖于 ,但是这是我们需要预测的,那怎么办呢?论文中就直接用另一套参数直接预测出一个临时的 :
这样就能估计出 了。最后对历史状态加权求和,然后用一个前馈神经网络预测下一个单词:
其中 对加权求和。
实验
具体实验设置啥的去看论文吧,这里就贴几个结果图解释一下。
上面这个是字符级别的语言模型的结果,PRPN取得了SOTA的结果。
上面这个是词级别的语言模型的结果,除了那个用了4层LSTM和跨越连接的模型(参数多)外,PRPN效果是最好的。
当然我最关心的还是无监督成分句法分析上面的结果:
目前为止,无监督成分句法分析的标准做法还是用WSJ10数据集(也就是长度小于等于10的句子),然后用unlabeled F1评测。可以看到,PRPN效果只能说一般般,不是很好。
其实我也很疑惑,这里的无监督句法分析全靠Parsing Network产生的句法距离来产生,但是一个关键问题是句法距离并没有监督,唯一的监督信号来自于最后Predict Network的语言模型,那么这个句法距离真的能够学习到真实的句法距离吗?我比较怀疑,不过效果证明,这个对语言模型还是有帮助的,对无监督成分句法分析的话不好说。
总结
这篇论文几个review都给出了还算不错的评价,思想是不错的,但是和其中一个review观点一样,我觉得文章写得太烂了,一堆的笔误,逻辑很混乱,即使这已经是review后修改过的版本了,还是有一堆错误。
过两天再看一篇ICLR2019的还是这个组的PRPN的改进版本,看看到底有何改进。不过真要搞无监督句法分析的话,还是老老实实去做聚类吧。