文章目录
Motivation
-
几乎所有的研究人员都忽略了包含多个单词的 target 的情况,只是使用 target 构成词向量的平均值来表示目标(例如 ATAE-LSTM)。所以如何能用更好的方法来表示整个 target 信息很重要。
-
target 和 context 会相互影响。举个例子:
-
target 对 context 影响: ”手机电池充一次电能用挺久,但是屏幕有点小“ -> 对于不同 target ”电池“、”屏幕“,则显然应该分别重点考虑 ”久“ 和 ”小“;
-
context 对 target 影响: ”华为的电脑有点贵“ 和 ”华为的电脑竟然也这么厉害“ -> 虽然两句话 target 都是 ”华为的电脑“,但是因为 context 不同,对 target 分别更关注的是 ”电脑“ 和 ”华为“。
-
方法概述
总结一下 Motivation,当时遇到的问题简单说来有两点:
- 如何更有效地表示目标,特别是当目标包含多个单词时?
- 如何利用目标和上下文之间的交互作用来捕捉目标和上下文表示中最重要的单词?
为了解决这个问题,该文提出了一种具有旋转注意机制的左中右分离神经网络(LCR-Rot)。
具体来说:
- 先建立一个 左、中、右 三部分分离的 LSTM(这里的左中右指的是 target 左边的 context、target、target 右边的 context)。
- 接下来,(类比 ATAE-LSTM)在三部分分别都被 LSTM 处理之后用 Attention,但为了能够同通过交互来找到 target 和 context 各自重要的部分,所以作者要用 rotatory attention mechanism(之前的 attention 不能满足这个要求)。而这部分 Attention 又分为两部分:
- target2context: 用 target 的信息帮助 context 的注意力处理 -> 因为有 context 被分为了 target 左边的 context 和 target 右边的 context,所以 target2context 是将 target 分别送入左右两部分 context 进行注意力处理。
- context2target: 同样,context 也要帮助 target 进行 attention 处理 -> 因为左右 context 都会影响 target 的表示,所以 target 对于左右 context 会得出不同的表示。所以最后会得到两个 target representation:left-aware target 和 right-aware target。
- 最后,将上一步得到的各个组件的表示连接为句子的最终表示,并将其输入到Softmax层中,以预测情绪极性。
方法详述
作者提出的 LCR-Rot 模型的总体框架如图1所示。
![](https://i-blog.csdnimg.cn/blog_migrate/4051f9348cc3320057fc773ab5248f83.png)
Left-Center-Right Separated LSTMs
将句子分成目标左边的上下文、目标、目标右边的上下文三部分,例如 “I am pleased with the life of battery, but the windows 8 operating system is so bad.” 这句话,当选 “the life of battery” 为目标时,左上下文为 “i am pleased with”,右上下文为 “, but the windows 8 operating system is so bad.”;而当选 “windows 8 operating system” 为目标时,左上下文为 “i am pleased with the life of battery, but the”、右上下文为 “is so bad.”
假设整句话的长度为 N N N,left context 为 [ w 1 l , w 2 l , . . . , w L l ] [w^l_1,w^l_2,...,w^l_L] [w1l,w2l,...,wLl],target 为 [ w 1 t , w 2 t , . . . , w M t ] [w^t_1,w^t_2,...,w^t_M] [w1t,w2t,...,wMt] 和 right context [ w 1 r , w 2 r , . . . , w R r ] [w^r_1,w^r_2,...,w^r_R] [w1r,w2r,...,wRr],其中 L , M , R L,M,R L,M,R 分别是三个部分的长度( L + M + R = N L+M+R = N L+M+R=N)。
分别将三部分放入三个 Bi-LSTM(left-, center-, and right- Bi-LSTM)中,分别得到对应的隐层表示,即 left context 的 [ h 1 l , h 2 l , . . . , h L l ] [h^l_1,h^l_2,...,h^l_L] [h1l,h2l,...,hLl],target 的 [ h 1 T , h 2 T , . . . , h M T ] [h^T_1,h^T_2,...,h^T_M] [h1T,h2T,...,hMT] 以及 right context 的 [ h 1 r , h 2 r , . . . , h R r ] [h^r_1,h^r_2,...,h^r_R] [h1r,h2r,...,hRr]
Rotatory Attention Mechanism
旋转注意机制用来捕获目标和左/右上下文中最具指示性的单词。这个机制包括两个步骤,正如 Figure 1 中所示,在得到 Hidden States 后图中有 ① 和②,这即代表了两步。
总的来说这两步分别就是第一步 target2context 部分和第二步 context2target 部分。第一步,使用 target2context 来捕捉 left/right contexts 中最具指示性的情感词;第二步,基于 left/right contexts 的新表示,进一步构造 context2target attention,以捕获目标中最重要的单词,并最终得到目标的双面表示。
(1) target2context
首先利用目标的平均表示来获得更好的左右上下文表示。
-
先用一个 average pooling 操作得到 target 的平均表示。average pooling 在此处即取各个向量的平均值,即
r t = p o o l i n g ( [ h 1 t , h 2 t , … , h M t ] ) (1) r^t = pooling([h^t_1,h^t_2,…,h^t_M]) \tag1 rt=pooling([h1t,h2t,…,hMt])(1) -
接下来就是如何得到 left and right contexts 的更好的表示。
-
首先,作者定义了一个 score function f f f,这个函数用上下文中每个单词的隐状态 h i l h^l_i hil 或 h i r h^r_i hir 和目标短语 r t r^t rt 的平均池化值作为输入,用 left context 举例(这部分整个过程都沿着这个例子继续):
f ( h i l , r t ) = t a n h ( h i l ⋅ W c l ⋅ r t + b c l ) (2) f(h^l_i, r^t) = tanh(h^l_i · W^l_c · r^t + b^l_c) \tag2 f(hil,rt)=tanh(hil⋅Wcl⋅rt+bcl)(2)
其中 W c l W^l_c Wcl 和 B c l B^l_c Bcl 分别是权重矩阵和偏差, t a n h tanh tanh 是非线性函数。分数 f f f 被用作一个权重,它表示一个上下文中的单词对于揭示目标情感的重要性。
-
在上面的基础上得到了各个 word 的重要性,得分有高低,接着对这些分数做归一化操作得到 left context 中各个 word 的重要性权重 α i l α^l_i αil:
α i l = e x p ( f ( h i l , r t ) ) ∑ j = 1 L e x p ( f ( h j l , r t ) ) (3) α^l_i = \frac{exp(f(h^l_i, r^t))}{\sum_{j=1}^L exp(f(h^l_j, r^t))} \tag3 αil=∑j=1Lexp(f(hjl,rt))exp(f(hil,rt))(3) -
最后根据重要性权重 α l α^l αl 计算得到 left context 的表示:
r l = ∑ i = 1 L α i l ⋅ h i l (4) r^l = \sum_{i=1}^L α^l_i · h^l_i \tag4 rl=i=1∑Lαil⋅hil(4)与方程(2)-(4)相同,我们可以得到 right context 的 r r r^r rr。
-
(2) context2target
作者进一步利用左右上下文的新表示,以构建一个更好的目标表示。
context2target 与 target2context 类似。
-
因为 target2context 部分得到了 left context、right context 更好的表示(也是最终的表示) r l , r r r^l,r^r rl,rr,所以不需要计算 average pooling 了,接下来直接用 r l , r r r^l,r^r rl,rr 即可。
-
接下来就是如何得到更好的 target 的表示。
-
首先,定义一个评分函数 f f f,其输入是每个 target 中的隐状态 h i t h^t_i hit 和 最终表示 r l r^l rl 或 r r r^r rr(以 left context 为例,整个过程都以 left 为例):
f ( h i t , r l ) = t a n h ( h i t ⋅ W t l ⋅ r l + b t l ) (5) f(h^t_i, r^l) = tanh(h^t_i · W^l_t · r^l + b^l_t) \tag5 f(hit,rl)=tanh(hit⋅Wtl⋅rl+btl)(5)
其中 W t l W^l_t Wtl 和 b t l b^l_t btl 分别是权重矩阵和偏置, t a n h tanh tanh 是一个非线性函数。这个评分函数 f f f 用来得到 target 中每个单词受 context 影响后的重要性。
-
在上面的基础上,归一化的重要性权重 α i α_i αi 的计算方法如下:
α i t l = e x p ( f ( h i t , r l ) ) ∑ j = 1 M e x p ( f ( h j t , r l ) ) (6) α^{t_l}_i = \frac{exp(f(h^t_i, r^l))}{\sum_{j=1}^M exp(f(h^t_j, r^l))} \tag6 αitl=∑j=1Mexp(f(hjt,rl))exp(f(hit,rl))(6) -
最后计算目标短语隐藏状态的加权组合:
r t l = ∑ i = 1 M α i t l ⋅ h i t (7) r^{t_l} = \sum^M_{i=1}α^{t_l}_i · h^t_i \tag7 rtl=i=1∑Mαitl⋅hit(7)
r t l r^{t_l} rtl 称之为 left-aware target representation。 类似于方程(5)-(7),我们可以得到 right-aware target representation r t r r^{t_r} rtr。我们将 left-aware and right-aware target representation 的组合 [ r t l , r t r ] [r^{t_l},r^{t_r}] [rtl,rtr] 命名为目标的 two-side representation。
-
Representation Concatenation
最后将上面基于注意力机制得到的 4 个表示
r
l
r^l
rl、
r
t
l
r^{t_l}
rtl、
r
t
r
、
r
r
r^{t_r}、r^r
rtr、rr 将其首尾拼接成最终的表示
v
v
v,该过程可表示为:
v
=
[
r
l
;
r
t
l
;
r
t
r
;
r
r
]
(8)
v = [r^l;r^{t_l};r^{t_r};r^r] \tag8
v=[rl;rtl;rtr;rr](8)
于注意力机制得到的 4 个表示
r
l
r^l
rl、
r
t
l
r^{t_l}
rtl、
r
t
r
、
r
r
r^{t_r}、r^r
rtr、rr 将其首尾拼接成最终的表示
v
v
v,该过程可表示为:
v
=
[
r
l
;
r
t
l
;
r
t
r
;
r
r
]
(8)
v = [r^l;r^{t_l};r^{t_r};r^r] \tag8
v=[rl;rtl;rtr;rr](8)
接下来将其送入 softmax layer 得到预测结果即可。