这里首先要明白两种网络:
-
recursive neural network
递归神经网络:网络是定义在递归树结构上,每一个树结点是从它的孩子计算出来的向量。叶子节点和中间节点自底向上的组合。 -
recurrent neural network
循环神经网络:链式结构,LSTM
是循环神经网络的特例。
递归神经网络示例,来自论文Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank
句子的语义并不是单词的线性的拼接;相反,句子有解析结构。
论文将LSTM
扩展为树形结构,称为S-LSTM
。S-LSTM
可以看作是上述两种网络的结合。
利用S-LSTM
来代替recursive neural network
中的语义组合层,从而更好的学习不同文本片段组合之后的文本语义表征。
与先前的recurrent neural network
相比,S-LSTM
有避免梯度消失的潜力,通过树结构对长距离交互进行建模。
S-LSTM的例子
图中的圆圈和横线分别代表pass
(通过)和block
(阻滞);这里通过LSTM
中的遗忘门实现,是一个概率值。可以看出有多少个孩子结点,就有多少个遗忘门。孩子节点之间是没有交互的
S-LSTM模型
S-LSTM
的记忆单元包括一个输入门,一个输出门,和多个遗忘门(数量和孩子的结点数相同),图中是给出的二叉树的结构,所以有两个遗忘门,此结构在现实生活中应该有很多应用,也可以把一般的树转化为二叉树。
对应的计算公式如下:
i t = σ ( W h i L h t − 1 L + W h i R h t − 1 R + W c i L c t − 1 L + W c i R c t − 1 R + b i ) i_{t} =\sigma(W_{h i}^{L} h_{t-1}^{L}+W_{h i}^{R} h_{t-1}^{R}+W_{c i}^{L} c_{t-1}^{L}+W_{c i}^{R} c_{t-1}^{R}+b_{i}) it=σ(WhiLht−1L+WhiRht−1R+WciLct−1L+WciRct−1R+bi)
f t L = σ ( W h f l L h t − 1 L + W h f l R h t − 1 R + W c f l L c t − 1 L + W c f l R c t − 1 R + b f l ) f_{t}^{L} =\sigma(W_{h f_{l}}^{L} h_{t-1}^{L}+W_{h f_{l}}^{R} h_{t-1}^{R}+W_{c f_{l}}^{L} c_{t-1}^{L}+W_{c f_{l}}^{R} c_{t-1}^{R}+b_{f_{l}}) ftL=σ(WhflLht−1L+WhflRht−1R+WcflLct−1L+WcflRct−1R+bfl)
f t R = σ ( W h f r L h t − 1 L + W h f r R h t − 1 R + W c f r L c t − 1 L + W c f r R c t − 1 R + b f r ) f_{t}^{R} =\sigma(W_{h f_{r}}^{L} h_{t-1}^{L}+W_{h f_{r}}^{R} h_{t-1}^{R}+W_{c f_{r}}^{L} c_{t-1}^{L}+W_{c f_{r}}^{R} c_{t-1}^{R}+b_{f_{r}}) ftR=σ(WhfrLht−1L+WhfrRht−1R+WcfrLct−1L+WcfrRct−1R+bfr)
x t = W h x L h t − 1 L + W h x R h t − 1 R + b x c t = f t L ⊗ c t − 1 L + f t R ⊗ c t − 1 R + i t ⊗ tanh ( x t ) o t = σ ( W h o L h t − 1 L + W h o R h t − 1 R + W c o c t + b o ) h t = o t ⊗ tanh ( c t ) \begin{aligned} x_{t} &=W_{h x}^{L} h_{t-1}^{L}+W_{h x}^{R} h_{t-1}^{R}+b_{x} \\ c_{t} &=f_{t}^{L} \otimes c_{t-1}^{L}+f_{t}^{R} \otimes c_{t-1}^{R}+i_{t} \otimes \tanh \left(x_{t}\right) \\ o_{t} &=\sigma\left(W_{h o}^{L} h_{t-1}^{L}+W_{h o}^{R} h_{t-1}^{R}+W_{c o} c_{t}+b_{o}\right) \\ h_{t} &=o_{t} \otimes \tanh \left(c_{t}\right) \end{aligned} xtctotht=WhxLht−1L+WhxRht−1R+bx=ftL⊗ct−1L+ftR⊗ct−1R+it⊗tanh(xt)=σ(WhoLht−1L+WhoRht−1R+Wcoct+bo)=ot⊗tanh(ct)
与标准的LSTM
区别在于:
(1) 标准的LSTM
将上一个时刻的
h
t
−
1
h_{t-1}
ht−1,
c
t
−
1
c_{t-1}
ct−1作为
t
t
t时刻的输入,而S-LSTM
需要考虑左右孩子结点。
(2) 标准的LSTM
每个时刻都有当前时刻对应的输入
x
t
x_{t}
xt,而S-LSTM
对应的输入
x
t
x_{t}
xt来自于左右孩子结点隐层状态
反向误差传递的时候要区分当前处理的节点是左孩子还是右孩子。反向传播的时候,先计算各个门的的导数,然后再计算权重的导数,做更新。
目标函数需要考虑输出结构,依赖问题规模,本文定义目标函数是最小化所有节点的交叉熵的和。
E ( θ ) = ∑ i ∑ j t j i log y s e n i j + λ ∥ θ ∥ 2 2 E(\theta)=\sum_{i} \sum_{j} t_{j}^{i} \log y^{s e n_{i}}{ }_{j}+\lambda\|\theta\|_{2}^{2} E(θ)=i∑j∑tjilogysenij+λ∥θ∥22
实验
在Stanford Sentiment Tree Bank 进行情感五分类的实验,该数据集不仅包含句子级别的情感类别信息,还包含了短语级别的情感类别信息,详见介绍
RvNN 递归神经网络
RNTN 论文Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank
提出的模型