序列模型不完美,拥有层次才更佳
LSTM作为序列模型一直是自然语言处理的最佳选择之一,即使transformer出现了也依然无法撼动LSTM在NLP界的江湖地位。
然而,语言虽然看起来是一个序列,实际上内部是有复杂的层次结构的,这也是NLP的难点所在。复杂的层次结构,意味着序列即使看起来相同,也可能应为内部层次结构的不同而有语义的差别。
在斯坦福CS224n上提到了这样的一个例子:
The police killed the man with a knife.
这个句子,可以有两种理解:
- 警察把那个带刀的人干掉了
- 警察用刀干掉了那个人
上面两种解释对应的句法树分别是这样的:
这个根据我自己的理解画的,不一定对啊,但是我想表达的意思就是,序列看起来一样,但是内部的层级结构可能很不一样。
因此很多学者在思考如何将语言的树形结构融入到训练过程中,从而让模型具有更加强大的表示能力。
今天介绍的这篇论文,就设计了一个特殊的LSTM结构,使得模型可以将句子的层级结构给编码进去,从而增强了LSTM的表达能力。这篇论文也是ICLR2019的最佳论文之一。
ICLR 2019 Best paper
回顾LSTM:
上面这个图是我看到过的画的最清晰的LSTM结构图了。我们跟着图再来回顾一下LSTM的原理。
图中
,都可以看做是历史信息
和当前输入
经过一个全连接层得到,即一个单层神经网络。
三者的激活函数是sigmoid,输出是0-1之间,所以相当于一个控制开关,因此在这里称作“门”。
相当于是把历史信息和当前信息进行一个融合后得到的当前状态。
是历史状态,如何得到输出状态