标题
《Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks》
项目地址:https://github.com/stanfordnlp/treelstm
背景
基于传统LSTM的各种复杂模型的结构都是线性链,而句子、短语都是由单词自然地组成,并不一定是线性的。本文提出的tree-lstm并不是只能考虑给定句子树结构的情况,特殊情况下,tree-lstm就会恢复成传统的序列lstm,所以tree-lstm更像是lstm的一种范式。
相关工作
- 词袋模型:短语和句子表示是词序无关的。比如:把单词向量表示做平均(Landauer and Dumais, 1997; Foltz et al., 1998)
- 缺点:无法解释由于词序或句法结构的不同而造成的意义差异
- 序列模型:把句子表示构建作为序列单词的顺序敏感的函数(Elman, 1990; Mikolov, 2012)
- 树形模型:根据给定句子的语法结构,得到句子表示(Goller and Kuchler, 1996;Socher et al., 2011).
依存树 & 短语结构树
http://blog.sina.com.cn/s/blog_72d083c70102drof.html
短语结构树像依存树进行转化:
模型结构
Child-Sum Tree-LSTMs(基于依存树)
处理依存树的树形LSTM变体是Child-Sum Tree-LSTMs。他所用到的原因是依存树的孩子节点是无序的而且对于每一个父节点,他所拥有的孩子节点是不限制个数的。
非叶子节点的隐层计算过程:
输入:
- 当前节点所对应的单词向量
- 当前节点所有孩子节点的隐层
- 当前节点所有孩子节点的记忆细胞
计算:
- 把所有孩子节点的隐层求和,得到输入的隐层
- 使用该隐层,以及当前节点所对应的单词向量计算三个门(输入门、遗忘门、输出门)。其中,模型为每一个孩子节点都计算了一个遗忘门,每一个孩子节点具体计算方式为:使用当前节点所对应的单词向量和该孩子节点的隐层计算
- 计算 u j u_j uj,理解为当前节点的综合输入
- 计算 c j c_j cj,使用当前节点所对应的单词向量,和所有孩子节点的遗忘门,和所有孩子节点的记忆细胞计算
- 根据 c j c_j cj计算 h j h_j hj
N-ary Tree-LSTMs(基于短语结构树)
短语结构树每一个父节点的孩子节点是有序的而且限制个数为N个。
非叶子节点的隐层计算过程:
输入:
- 当前节点所对应的单词向量
- 当前节点所有孩子节点的隐层
- 当前节点所有孩子节点的记忆细胞
计算: - 并没有把所有孩子节点的隐层求和,而是给每一个孩子节点都设定一个单独的权重
- 计算三个门(输入门、遗忘门、输出门)。其中,计算遗忘门的时候,一共涉及到了N * N-1个参数矩阵。这是因为,对于每一个孩子节点k来说,它的遗忘门计算涉及到了 ∑ l = 1 N U k l h l ( l ≠ k ) \sum_{l=1}^{N}U_{kl}h_{l}(l≠k) ∑l=1NUklhl(l=k)
- 计算 u j u_j uj,理解为当前节点的综合输入
- 计算 c j c_j cj,使用当前节点所对应的单词向量,和所有孩子节点的遗忘门,和所有孩子节点的记忆细胞计算
- 根据 c j c_j cj计算 h j h_j hj
下游任务
- 预测两个句子的语义相似度
- 情感分类
优缺点
文中没有提到缺点。