尽管最近出现的Transformer系列的模型在nlp领域内很流行,但RNN仍然有着重要的地位。本文介绍的模型来自于ICLR 2019的最佳论文之一,它针对自然语言具有语法分层的特点,对原有的LSTM模型的结构做出了改进,使得新模型不仅具有更好的性能,还能够无监督地从语料文本中学习到句子的语法结构。
LSTM与ON-LSTM
先介绍一下该模型的出发点,自然语言虽然从表面来看呈现出来的是序列形式,但其实句子的结构并不是连续的序列,而是树状结构,如下图所示。因此如果我们能够设计一种可以考虑到句子的语法结构的模型,那么就有可能在nlp任务中表现的更好。
先来看原始的LSTM模型,如下所示,其中
在原始LSTM中,更新的方式是通过遗忘门和输入门来完成的,即
有序的神经元
为了达到这样的目的,首先我们就需要对信息进行语法分层,对神经元按照语法层次进行排序,语法层次较高的信息储存在上面的神经元中,较低的则储存在下面的神经元,然后根据层次的不同,采用不同的更新方式。如下图所示,对于句子中较高层次的信息S,则位于cell states的上面的维度,这类信息的更新频率不应该很快;而对于底层信息如N和V,它们位于cell states的下部,这些信息应该较快地进行更新。这样,我们就能通过cell stats的维度的高低来将信息中不同语法层次的内容分开,从而实现了有序的神经元。
完成了对cell states的排序之后,我们接下来就是划分区间,以便模型按照区间的不同实现不同的更新方式。为了实现区间的划分,模型用到了两个整数
对于上面的区间,有如下的更新规则:
- 当 时,两区间有交叠。对于交叠的部分,采用原始LSTM的方式进行更新;对于高于的部分,只保留原来的历史信息;对于低于的部分,只保留当前输入的信息。
- 当 时,两区间没有交叠。对于没有交叠的部分,直接设其为0;而对于大于和小于的部分,分别只保留历史信息和当前输入信息。
可以看出,其实模型在这里认为高层次的语法信息主要是来自于历史信息,而低层次的主要来自当前输入信息,而这也比较符合人们的直观印象,对于一个新的输入,它对于语法信息的影响往往局限于一个较低的层次,高层次的信息(如句子或者短语信息)仍然来自于历史信息,只有当一个句子或者短语完结的时候,历史信息的影响变小,这时新的输入才有可能影响较高语法层次的信息。而这样也就使得高语法层次的信息的更新频率较低,大多时候是保持不变,而低语法层次的信息则随着当前的输入在一直变化。
上面是区间划分的思想,而具体的实现过程如下:
定义向量
定义函数
可以得到
它们表示了历史信息和当前信息的影响范围,可以看作窗口函数,也就起到了区间划分的作用。这两个向量需要通过模型学习得到,但是如果直接去学习
得到
其中
对上式简单分析一下,
其流程图如下:
最后补充一下,通常隐层神经元的数目都比较大,而实际中语法的层数远远达不到这个数字,因此对于
无监督提取语法结构
上面就是ON-LSTM模型的全部内容,不过该模型除了在性能表现上更优以外,还有一个很有意思的特性,那就是能够无监督地提取出句子的语法结构,其基本思想如下:
在时间步t,可以得到历史信息的语法层次
其中
下图是一些语法结构提取的实验结果对比,其中左侧是模型结果,右侧是人类专家的结果
总结
该ON-LSTM模型从语法结构的角度出发,根据语法层次对cell states进行有序排列,再按照语法层次的不同实行不同的更新规则,从而实现对于较高语法层次信息的保留,这样对于语言模型等任务无疑是很有利的。另外,利用该模型还能够较好地从句子中无监督地提取出语法结构,而这也是该模型的一大亮点。
参考资料
[1] ORDERED NEURONS: INTEGRATING TREE STRUCTURES INTO RECURRENT NEURAL NETWORKS
[2] 苏剑林. (2019, May 28). 《ON-LSTM:用有序神经元表达层次结构 》[Blog post]. Retrieved from https://kexue.fm/archives/6621
[3] ON-LSTM:能表示语言层次的LSTM