第七周.直播.Tree LSTM带读


本文内容整理自深度之眼《GNN核心能力培养计划》
公式输入请参考: 在线Latex公式

Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks
这期内容需要有LSTM的基础,没学过LSTM直接看估计又会蒙,所以还是看这里比较容易理解:李宏毅学习笔记13.RNN Part I
RNN
LSTM
Bi-LSTM
多层LSTM

摘要

从LSTM的特点入手(可以记忆序列的信息),夸夸LSTM的优点(处理序列任务效果好)
Because of their superior ability to preserve sequence information over time, Long Short-Term Memory (LSTM) networks, a type of recurrent neural network with a more complex computational unit, have obtained strong results on a variety of sequence modeling tasks.

再说说LSTM的局限(目前的LSTM主要用在线性的链式结构)
The only underlying LSTM structure that has been explored so far is a linear chain.

转折:自然语言里面存在类似树形的语法属性
However, natural language exhibits syntactic properties that would naturally combine words to phrases.

为了解决这个问题,我们咋做?引入Tree-LSTM
We introduce the Tree-LSTM, a generalization of LSTMs to tree-structured network topologies.

介绍实验结果
Tree-LSTMs outperform all existing systems and strong LSTM baselines on two tasks: predicting the semantic relatedness of two sentences (SemEval 2014, Task 1) and sentiment classification (Stanford Sentiment Treebank).

Introduction

第一段:
先讲词表征的定义:
bag-of-words models
sequence models
tree-structured models
分别讲三种词表征的特点,套路:
In bag-of-words models,。。。。In contrast, 。。。。Lastly,。。。。
第二段:
bag-of-words models属于词序无关的表示方法(Order-insensitive models),缺点是。。。。We therefore turn to后面两种模型。In particular, tree-structured models又比第二种模型好在哪里哪里,最后提出本文的目标,就是要弄出一个Tree LSTM模型来生成tree-structured表征。
第三段:
从模型角度来看,介绍LSTM,及其特点,这段属于过度,因为本文模型是LSTM的扩展。
第四段:
简单介绍本文模型
第五段:
介绍实验

Long Short-Term Memory Networks

原文第二节,这里不展开,相当于Related Work,有两个小节,第一小节介绍LSTM,第二小节介绍LSTM变种:双向LSTM和多层LSTM
关于语法树的例子可以看这里还有这里
StandFord也提供了一些自动生成语法树的工具。
然后在实作的时候,通常要把树转成二叉树,将所有单词都放到叶子节点上。

Tree-Structured LSTMs

先过渡句讲下LSTM有缺点,然后先总后分,总的说明本文模型相对于原始的LSTM有什么改进:

  1. the Child-Sum Tree-LSTM
  2. the N-ary Tree-LSTM.

然后总体上给出Tree-Structured LSTM的数学表达,比起原始的LSTM,针对树的孩子节点,每个都分配一个遗忘门:
Additionally, instead of a single forget gate, the Tree-LSTM unit contains one forget gate f j k f_{jk} fjk for each child k k k.

这里要说明一下,树和图的关系,学过数据结构的同学应该知道,树其实是图的一种特殊情况,因此将树看做图当然是没有问题的,例如当前节点的邻居当然是他的父节点和子节点,除此之外,还可以加入其他的一些额外的边信息,例如兄弟节点,也可以有二跳邻居:父节点的父节点。

在这里插入图片描述

Child-Sum Tree-LSTMs

对于结点 j j j而言, C ( j ) C(j) C(j)表示节点 j j j的孩子节点的集合,那么Child-Sum Tree-LSTMs可以表示为:
h ~ j = ∑ k ∈ C ( j ) h k \tilde h_j =\sum_{k\in C(j)} h_k h~j=kC(j)hk
就是把所有孩子节点的信息求和(类别GNN的消息汇聚)得到 h ~ j \tilde h_j h~j
对于输入门和输出门表达式都直接用孩子节点汇聚的信息进行计算:
i j = σ ( W ( i ) x j + U ( i ) h ~ j + b ( i ) ) i_j = \sigma\left(W^{(i)}x_j+U^{(i)}\tilde h_j+b^{(i)}\right) ij=σ(W(i)xj+U(i)h~j+b(i))
o j = σ ( W ( o ) x j + U ( o ) h ~ j + b ( o ) ) o_j = \sigma\left(W^{(o)}x_j+U^{(o)}\tilde h_j+b^{(o)}\right) oj=σ(W(o)xj+U(o)h~j+b(o))
更新门:
u j = tanh ⁡ ( W ( u ) x j + U ( u ) h ~ j + b ( u ) ) u_j = \tanh\left(W^{(u)}x_j+U^{(u)}\tilde h_j+b^{(u)}\right) uj=tanh(W(u)xj+U(u)h~j+b(u))
对于遗忘门,由于每个孩子节点都有,因此每个孩子节点的遗忘门打开程度不一样,这里借鉴了attention机制,如果有孩子节点比较重要,那么忘记少点,反之忘记多点:
f j k = σ ( W ( f ) x j + U ( f ) h k + b ( f ) ) f_{jk} = \sigma\left(W^{(f)}x_j+U^{(f)}h_k+b^{(f)}\right) fjk=σ(W(f)xj+U(f)hk+b(f))
可以看到,由于是针对每一个孩子分别进行计算的,因此用的 h k h_k hk,不是求和结果 h ~ j \tilde h_j h~j,这里得到的结果相当于attention里面的权重(遗忘门打开的大小)
然后遗忘门打开的大小计算当前节点 j j j的self-state:
c j = i j ⊙ u j + ∑ k ∈ C ( j ) f j k ⊙ c k c_j = i_j\odot u_j+\sum_{k\in C(j)}f_{jk}\odot c_k cj=ijuj+kC(j)fjkck
最后算隐藏层状态hidden-state:
h j = o j ⊙ tanh ⁡ ( c j ) h_j = o_j\odot\tanh (c_j) hj=ojtanh(cj)
最后文章总结了一下3.1,提到这个模型通常用在孩子节点数量较大,且孩子节点无序的情况,这样弄出来的树也叫:dependency tree,整个模型就叫Dependency Tree-LSTM.

N-ary Tree-LSTMs

如果树中节点的子节点数量最大为 N N N,那么,且子节点有序,那么可以标识为1到 N N N,对于节点 j j j可以把他的第 k k k个子节点的隐藏状态和当前状态记为 h j k h_{jk} hjk c j k c_{jk} cjk
对于输入门和输出门表达式都直接用 N N N个孩子节点信息进行计算:
i j = σ ( W ( i ) x j + ∑ l = 1 N U l ( i ) h j l + b ( i ) ) i_j = \sigma\left(W^{(i)}x_j+\sum_{l=1}^NU_l^{(i)}h_{jl}+b^{(i)}\right) ij=σ(W(i)xj+l=1NUl(i)hjl+b(i))
o j = σ ( W ( o ) x j + ∑ l = 1 N U l ( o ) h j l + b ( o ) ) o_j = \sigma\left(W^{(o)}x_j+\sum_{l=1}^NU_l^{(o)}h_{jl}+b^{(o)}\right) oj=σ(W(o)xj+l=1NUl(o)hjl+b(o))
更新门:
u j = tanh ⁡ ( W ( u ) x j + ∑ l = 1 N U l ( u ) h j l + b ( u ) ) u_j = \tanh\left(W^{(u)}x_j+\sum_{l=1}^NU_l^{(u)}h_{jl}+b^{(u)}\right) uj=tanh(W(u)xj+l=1NUl(u)hjl+b(u))
可以看到,公式明显比3.1的复杂,每个孩子节点有一套参数,因此表达能力变强。
对于遗忘门,也是对每个子节点都会计算一个 f j k f_{jk} fjk
f j k = σ ( W ( f ) x j + ∑ l = 1 N U k l ( f ) h j l + b ( f ) ) f_{jk}=\sigma\left(W^{(f)}x_j+\sum_{l=1}^NU_{kl}^{(f)}h_{jl}+b^{(f)}\right) fjk=σ(W(f)xj+l=1NUkl(f)hjl+b(f))
例如:当 k = 1 k=1 k=1
∑ l = 1 N U 1 l ( f ) h j l \sum_{l=1}^NU_{1l}^{(f)}h_{jl} l=1NU1l(f)hjl
这里可以看到 k k k j j j是固定的,就是算节点 j j j的1号节点与其他所有 j j j的子节点的参数 U k l U_{kl} Ukl(相当于self attention里面的权重)
然后计算当前节点 j j j的self-state:
c j = i j ⊙ u j + ∑ l = 1 N f j l ⊙ c l c_j = i_j\odot u_j+\sum_{l=1}^Nf_{jl}\odot c_l cj=ijuj+l=1Nfjlcl
最后算隐藏层状态hidden-state:
h j = o j ⊙ tanh ⁡ ( c j ) h_j = o_j\odot\tanh (c_j) hj=ojtanh(cj)

Models

这里开始描述模型用到两个任务上怎么做,包括损失函数等。
Softmax加Crossentropy,常规操作,不展开。
思考:
生成中文语法树的工具有哪些?
为什么Tree LSTM只汇聚孩子节点信息,不汇聚父节点信息?
看下语法树就知道,都是由子节点单词拼成父节点的短语的,因此不需要汇聚父节点信息

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oldmao_2000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值