0
点赞
收藏
分享

微信扫一扫

[NAACL19]无监督循环神经网络文法 (URNNG)

论文地址:

​​Unsupervised Recurrent Neural Network Grammars​​

代码地址:

​​harvardnlp/urnng​​

介绍

这篇是新鲜出炉的NAACL19的关于无监督循环神经网络文法(URNNG)的论文,在语言模型和无监督成分句法分析上都取得了非常不错的结果,主要采用了变分推理和RNNG。本文公式量较大,因此我也推了好久,算法也挺多的,首先上一张我推导的公式笔记:



[NAACL19]无监督循环神经网络文法 (URNNG)_推理网络

我这篇博客就不按照论文的顺序来讲了,就按照我上面这张笔记讲一讲我的理解吧,很多细节可能会忽略[NAACL19]无监督循环神经网络文法 (URNNG)_语言模型_02

URNNG模型

先上一张模型图,让大家对整体模型有个大概的认知:


[NAACL19]无监督循环神经网络文法 (URNNG)_语言模型_03

[NAACL19]无监督循环神经网络文法 (URNNG)_推理网络_04



[NAACL19]无监督循环神经网络文法 (URNNG)_推理网络_05

[NAACL19]无监督循环神经网络文法 (URNNG)_句法树_06


[NAACL19]无监督循环神经网络文法 (URNNG)_语言模型_07

其实就是自顶向下的根据概率分布来采样每个span的split,用一个队列来保存所有还没有采样出split的span,然后把所有采样出的span在邻接矩阵中的对应值标为1。

[NAACL19]无监督循环神经网络文法 (URNNG)_句法树_08

​​Recurrent Neural Network Grammars​​

这里稍稍做了一些改进。

[NAACL19]无监督循环神经网络文法 (URNNG)_推理网络_09[NAACL19]无监督循环神经网络文法 (URNNG)_语言模型_10[NAACL19]无监督循环神经网络文法 (URNNG)_语言模型_11

数组算出来,算法如下:


[NAACL19]无监督循环神经网络文法 (URNNG)_推理网络_12

然后偏导可以交给深度学习库的自动微分,就不用你自己求啦。

至于第一项的偏导可以用类似于策略梯度的方法解决:[NAACL19]无监督循环神经网络文法 (URNNG)_句法树_13

实验

实验结果这里就不多说了,细节具体看论文吧,就贴两个结果,一个是语言模型:


[NAACL19]无监督循环神经网络文法 (URNNG)_推理网络_14

可以看出在标准的PTB数据集上,URNNG效果只比监督学习的RNNG和用URNNG损失函数微调后的RNNG效果略差一点,但是在大数据集上,URNNG的优势就体现出来了。

另一个是无监督成分句法分析,这里是用的全部长度的测试集:


[NAACL19]无监督循环神经网络文法 (URNNG)_推理网络_15

这个任务上URNNG效果是最好的。

结论

和之前两篇语言模型做无监督成分句法分析类似,这篇论文用推理网络学习句法树的概率分布并采样句法树,再用生成网络计算这些句法树和句子的联合概率,最后用变分推理最大化句子的概率,也就是学习出一个好的语言模型。

这篇论文的工作还是挺令人惊叹的,融合了inside算法、RNNG、变分推理等等知识。本来我变分推理听老师讲了好几次了都云里雾里的,看了这篇论文后总算弄懂了一点了,不过所了解的还是很少,EM算法、VAE之类的高级境界根本不会。。。

举报

相关推荐

0 条评论