论文标题 | Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks
论文来源 | ACL 2015
论文链接 | https://arxiv.org/abs/1503.00075
源码链接 | https://github.com/stanfordnlp/treelstm

TL;DR

目前的 LSTM 仅能对序列信息进行建模,但是自然语言中通常由词组成短语形成了句法依存的语义树。为了学习到树结构的语义信息,论文中提出了两种 Tree-LSTM 模型:Child-Sum Tree-LSTMs 和 N-ary Tree LSTMs。实验部分 Tree-LSTMs 对比多种 LSTMs 变体,在语义相似性计算和情感分类任务中超过所有 baselines。

Algorithm/Model

LSTM

LSTM 主要模型架构如下所示

LSTM 模型

每个门电路的计算方式如下所示:

ft=σ(W(f)xt+U(f)ht1+b(f))it=σ(W(i)xt+U(i)ht1+b(i))ut=tanh(W(u)xt+U(u)ht1+b(u))ct=itut+ftct1ot=σ(W(o)xt+U(o)ht1+b(o))ht=ottanh(ct)f_{t} =\sigma\left(W^{(f)} x_{t}+U^{(f)} h_{t-1}+b^{(f)}\right) \\ i_{t} =\sigma\left(W^{(i)} x_{t}+U^{(i)} h_{t-1}+b^{(i)}\right) \\ u_{t} =\tanh \left(W^{(u)} x_{t}+U^{(u)} h_{t-1}+b^{(u)}\right) \\ c_{t} =i_{t} \odot u_{t}+f_{t} \odot c_{t-1} \\ o_{t} =\sigma\left(W^{(o)} x_{t}+U^{(o)} h_{t-1}+b^{(o)}\right) \\ h_{t} =o_{t} \odot \tanh \left(c_{t}\right)

此部分不再细述,详细可以参考另一篇文章:Understanding LSTM Networks

LSTM 能够处理序列信息,但是无法处理带有树结构的数据,例如下图所示的依存句法分析树 (Dependency Tree)、成分句法分析树 (Constituency Tree)等。

依存句法分析树 成分句法分析树

以上仅表示两种自然语言分析中两种语义表示格式,但是模型可以类推到其它树结构数据~

Tree-LSTMs

为了解决将树结构的数据作为输入训练 RNN 的问题,论文中提出了两种结构的 Tree-Structured LSTM:

  • Child-Sum Tree-LSTMs (Dependency Tree-LSTMs)

    适用于子节点个数不定或者子节点乱序的树结构。

  • N-ary Tree-LSTM (Constituency Tree-LSTMs)

    适用于每个单元的子单元的个数最多是NN,且子单元之间是有序的。

Tree-LSTM

与标准 LSTM 结构类似,Tree-LSTM 中每个 cell 都包括类似的输入门iti_t,输出门oto_t,cell statectc_t 和隐层输出hth_t。不同的是 Tree-LSTM 单元中门向量和细胞状态的更新依赖于所有与之相关的子单元的状态,另外,相比于标准 LSTM 的单个遗忘门,Tree-LSTM 拥有多个遗忘门fjkf_{jk} ,分别对应当前单元的每个子单元kk,因此 Tree-LSTM 可以选择性地从子节点中获取信息,例如在情感分析任务中去保存语义信息更加丰富的子节点的信息。

与标准 LSTM 相同,每个 Tree-LSTM 单元会有一个输入向量xjx_jxjx_j 可以表示一个句子中的单词的向量表示,每个节点的 input word 取决于网络的树结构,例如要处理 Dependency tree 的 Tree-LSTM,那么 Tree-LSTM 树中的每个节点将 head word 对应的向量当作输入;而在 constituency tree 中,叶子节点将对应的词向量当作输入。

考虑到目前需要处理的数据类似于 Dependency Tree,因此本文中仅介绍下 Child-Sum Tree-LSTMs。

Child-Sum Tree-LSTMs

给定树且令C(j)C(j) 表示节点jj 的子节点集合,那么 Child-Sum Tree-LSTMs 的计算公式如下图所示:

h~j=kC(j)hk,ij=σ(W(i)xj+U(i)h~j+b(i))fjk=σ(W(f)xj+U(f)hk+b(f)),   kC(j)oj=σ(W(o)xj+U(o)h~j+b(o))uj=tanh(W(u)xj+U(u)h~j+b(u))cj=ijuj+kC(j)fjkckhj=ojtanh(cj)\tilde{h}_{j}=\sum_{k \in C(j)} h_{k},\\ i_{j}=\sigma\left(W^{(i)} x_{j}+U^{(i)} \tilde{h}_{j}+b^{(i)}\right)\\ f_{j k}=\sigma\left(W^{(f)} x_{j}+U^{(f)} h_{k}+b^{(f)}\right),~~~k\in C(j)\\ o_{j}=\sigma\left(W^{(o)} x_{j}+U^{(o)} \tilde{h}_{j}+b^{(o)}\right)\\ u_{j}=\tanh \left(W^{(u)} x_{j}+U^{(u)} \tilde{h}_{j}+b^{(u)}\right)\\ c_{j}=i_{j} \odot u_{j}+\sum_{k \in C(j)} f_{j k} \odot c_{k}\\ h_{j}=o_{j} \odot \tanh \left(c_{j}\right)

从上述计算公式可以看出,Tree-LSTM 和 LSTM 间的区别包含两点:

  • LSTM 中只用到了上一步神经元的隐藏输出ht1h_{t-1},而 Tree-LSTM 用到了所有子节点的隐藏输出h~j=kC(j)hk\tilde{h}_{j}=\sum_{k \in C(j)} h_{k}
  • Tree-LSTM 使用了多个遗忘门fjkf_{jk} 来控制多个子节点的 cell state candidateckc_k

由于 Child-Sum Tree-LSTMs 将其子节点的状态hkh_k 进行累加,因此适合多分支、子节点无序的树,例如 dependency tree, 一个 head 的 dependent 数量是高度可变的,因此我们将应用在dependency tree上的 Child-Sum Tree-LSTM称为 Dependency Tree-LSTM 。

介绍完 Child-Sum Tree-LSTMs 后即可将其用于下游任务中,论文中用于情感分类和语义相似性计算任务中。

Experiments

在不同实验中模型的参数如下所示

参数设置

情感分类任务中

实验结果

语义相似性计算任务中

实验结果

Contact