Higru Hierarchical gated recurrent units for utterance-level emotion recognition
Wenxiang Jiao, Haiqin Yang, Irwin King, Michael R. Lyu:
HiGRU: Hierarchical Gated Recurrent Units for Utterance-Level Emotion Recognition. NAACL-HLT (1) 2019: 397-406
Abstract
在本文中, 我们解决了对话系统中话语级情感识别的三个挑战:
- 在不同的上下文中相同的单词可以表达不同的情感
- 有些情绪很少出现在一般的对话中
- 远程上下文信息很难被有效地捕获.
因此提出了一个分层GRU框架HiGRU, 其使用低层次的GRU来建模单词级别的输入, 使用高层次的的GRU来捕获话语级别嵌入的上下文. 此外, 我们将框架推广到两个变体, 带有单个特征融合的HiGRU(HiGRU-f)以及带有自注意力和特征融合的HiGRU(HiGRU-sf), 因此单词级别或话语级别的单个输入和长距离的上下文信息可以被充分的利用.
1 Introduction
. . . . . .
本文关注文本类型的对话系统, 因为文本特征在音频和视频特征上占主导地位. 在话语级情绪识别中, 话语是呼吸或停顿所限制的言语单位, 它的目标是为对话中的每一个话语标注指示情感.
在本文中, 我们要解决三个挑战, 首先, 在不同的上下文中相同的单词可以表达不同的情感. 例如图一所示, 单词’okay’可以分别表达anger, neutral, joy三种不同的情感.强烈的情绪, 如喜悦和愤怒, 可以通过词语后的“!”或“?”来表示. 为了精确的识别说话者的情感,需要充分的探索对话的上下文信息.第二,有些情绪很少出现在一般的对话中. 例如, 人们通常会保持镇静并表现出中性的情绪, 而仅在某些特定情况下, 他们才会表现出强烈的情绪, 例如愤怒或恐惧. 因此, 我们需要对较少见的情绪保持敏感, 同时减轻较常见的情绪的影响. 第三, 远程上下文信息很难被有效地捕获. 尤其是当测试集中的话语/对话的长度比训练集中的长时.
为解决这些挑战, 本文提出了分层的GRU框架(HiGRU)来进行话语级别的情感识别. 更具体地说, HiGRU由两个级别的双向GRU组成, 低级别的GRU来建模每一个话语的单词序列来产生单个话语的嵌入, 高级别的GRU捕获话语的序列关系和上下文关系. 我们更进一步将所提出的模型推广为两个变体, 带有单个特征融合的HiGRU(HiGRU-f)以及带有自注意力和特征融合的HiGRU(HiGRU-sf). 在前者中, 单个输入, 即低级别GRU的单词嵌入和高级别GRU中的单个话语嵌入分别与隐藏状态连接起来来产生与上下文有关的单词和话语嵌入. 在后者中, 将一个自注意力层置于GRU的隐藏状态之上来学习长距离的上下文嵌入, 之后上下文嵌入与原来的单个嵌入和隐藏状态进行连接来生成与上下文有关的单词或话语嵌入. 最终与上下文有关的话语嵌入被送入全连接层来判断对应的情感. 为了缓解数据不平衡的问题, 采用 (Khosla, 2018) 的方法来通过最小化加权分类交叉熵来训练本文的模型.
本文的贡献总结如下:
- 提出了一个HiGRU框架来更好地学习单个话语嵌入和话语语境信息, 从而更准确地识别情感.
- 提出了两个HiGRU的变体, HiGRU-f和HiGRU-sf, 分别充分的整合单个单词/话语级别的信息以及长距离的上下文信息
- 本文提出的模型仅使用文本特征, 实验证明表现优于使用三种模态特征的CMN.
2 Related Work
. . . . . .
Contextual Information Extraction.
Representation Enrichment.先前的方法使用CNN提取文本特征, 但CNN并不能很好地捕捉每个话语中的上下文信息.
3 Approach
定义1 话语级别的情感识别.
- D = { D i } i = 1 L \mathcal{D}=\{D_i\}_{i=1}^L D={Di}i=1L,为对话集合,其中 L L L对话数目
-
D
i
=
{
(
u
j
,
s
j
,
c
j
)
}
j
=
1
N
i
D_i=\{(u_j,s_j,c_j)\}_{j=1}^{N_i}
Di={(uj,sj,cj)}j=1Ni,表示在每一个对话
D
i
D_i
Di中的
N
i
N_i
Ni个话语构成的序列
- 其中 u j u_j uj由带有特定情感 c j ∈ C c_j\in\mathcal{C} cj∈C的说话者 s j ∈ S s_j\in\mathcal{S} sj∈S说出
- S \mathcal{S} S说话者集合
- C \mathcal{C} C所有感情的集合,比如 anger, joy, sadness, neutra
目标是训练模型来用 C \mathcal{C} C中的一种情感来尽可能准确的标记每一个话语
3.1 HiGRU: Hierarchical GRU
HiGRU由两个级别的双向GRU组成, 低级别的GRU来建模每一个话语的单词序列来产生单个话语的嵌入, 高级别的GRU通过对对话中的话语序列建模来学习上下文相关的话语嵌入.
-
Individual Utterance Embedding.对于 D i D_i Di中的第 j j j个话语, u j = { w k } k = 1 M j u_j= \{w_k\}_{k=1}^{M_j} uj={wk}k=1Mj,其中 M j M_j Mj是话语 u j u_j uj中的单词数目. 对应的单个单词嵌入序列 { e ( w k ) } k = 1 M j \{e(w_k)\}_{k=1}^{M_j} {e(wk)}k=1Mj被送入低级别的双向GRU中来在两个相反的方向学习单个话语嵌入:
h k → = G R U ( e ( w k ) , h k − 1 → ) (1) \overrightarrow{h_k}=GRU(e(w_k),\overrightarrow{h_{k-1}})\tag{1} hk=GRU(e(wk),hk−1)(1)
h k ← = G R U ( e ( w k ) , h k + 1 ← ) (2) \overleftarrow{h_k}=GRU(e(w_k),\overleftarrow{h_{k+1}})\tag{2} hk=GRU(e(wk),hk+1)(2)
两个隐藏状态被连接为 h s = [ h k → , h k ← ] h_s=[\overrightarrow{h_k},\overleftarrow{h_k}] hs=[hk,hk],并通过在一个线性变换上的tanh激活函数来产生 w k w_k wk的与上下文有关的单词嵌入:
e c ( w k ) = t a n h ( W w ⋅ h s + b w ) (3) e_c(w_k)=tanh(W_w\cdot h_s+b_w)\tag{3} ec(wk)=tanh(Ww⋅hs+bw)(3)之后通过话语中上下文相关的单词嵌入之上的最大池化来获得单个话语嵌入:
e ( u j ) = m a x p o o l ( { e c ( w k ) } k = 1 M j ) (4) e(u_j)=maxpool(\{e_c(w_k)\}_{k=1}^{M_j})\tag{4} e(uj)=maxpool({ec(wk)}k=1Mj)(4) -
Contextual Utterance Embedding.对于第 i i i个对话 D i = { ( u j , s j , c j ) } j = 1 N D_i=\{(u_j,s_j,c_j)\}_{j=1}^N Di={(uj,sj,cj)}j=1N,所学到的单个话语嵌入 { e ( u j ) } j = 1 N j \{e(u_j)\}_{j=1}^{N_j} {e(uj)}j=1Nj被送入高级别的双向GRU来捕获对话中话语的序列关系和上下文关系:
H j → = G R U ( e ( u j ) , H j − 1 → ) (5) \overrightarrow{H_j}=GRU(e(u_j),\overrightarrow{H_{j-1}})\tag{5} Hj=GRU(e(uj),Hj−1)(5)
H j ← = G R U ( e ( u j ) , H j + 1 ← ) (6) \overleftarrow{H_j}=GRU(e(u_j),\overleftarrow{H_{j+1}})\tag{6} Hj=GRU(e(uj),Hj+1)(6)
此处,为了与低级别的GRU的隐藏状态 h k h_k hk进行区分,高级别GRU的隐藏状态被表示为 H j ∈ R d 2 H_j\in R^{d_2} Hj∈Rd2.因此可以通过下式获得上下文相关的话语嵌入:
e c ( u j ) = t a n h ( W u ⋅ H s + b u ) (7) e_c(u_j)=tanh(W_u\cdot H_s+b_u)\tag{7} ec(uj)=tanh(Wu⋅Hs+bu)(7)
其中 H s = [ H j → , H j ← ] H_s=[\overrightarrow{H_j},\overleftarrow{H_j}] Hs=[Hj,Hj],因为情感是在话语级别进行识别的,所学到的上下文相关的话语嵌入 e c ( u j ) e_c(u_j) ec(uj)被直接送入全连接层(FC)然后跟上一个softmax函数来判断对应的情感标签:
y ^ = s o f t m a x ( W f c ⋅ e c ( u j ) + b f c ) (8) \hat{y}=softmax(W_{fc}\cdot e_c(u_j)+b_{fc})\tag{8} y^=softmax(Wfc⋅ec(uj)+bfc)(8)
3.2 HiGRU-f: HiGRU + Individual Features Fusion
原型HiGRU包含两个主要的问题:
- 单个单词/话语嵌入被层层的叠加稀释了
- 高级别的GRU倾向于从占多数的情感中获取更多上下文信息,会降低模型的整体性能
为解决上述两个问题,提出使用GRU的隐藏状态与单个的单词/话语嵌入融合,来加强每一个单词/话语嵌入在其上下文相关的嵌入中的信息. 此变体名为HiGRU-f,表示带有单个特征融合的HiGRU.因此低级别的GRU可以维持单个单词嵌入并且高级别的GRU可以缓解占多数的情感的影响并获得对于不同情感的更加精确的话语表示.具体来说,与上下文相关的嵌入的更新为:
e
c
(
w
k
)
=
t
a
n
h
(
W
w
⋅
h
s
f
+
b
w
)
(9)
e_c(w_k)=tanh(W_w\cdot h_s^f+b_w)\tag{9}
ec(wk)=tanh(Ww⋅hsf+bw)(9)
e
c
(
u
j
)
=
t
a
n
h
(
W
u
⋅
H
s
f
+
b
u
)
(10)
e_c(u_j)=tanh(W_u\cdot H_s^f+b_u)\tag{10}
ec(uj)=tanh(Wu⋅Hsf+bu)(10)
其中
h
s
f
=
[
h
k
→
;
e
(
w
k
)
;
h
k
←
]
,
H
s
f
=
[
H
j
→
,
e
(
u
j
)
,
H
j
←
]
h_s^f=[\overrightarrow{h_k};e(w_k);\overleftarrow{h_k}],H_s^f=[\overrightarrow{H_j},e(u_j),\overleftarrow{H_j}]
hsf=[hk;e(wk);hk],Hsf=[Hj,e(uj),Hj]
3.3 HiGRU-sf: HiGRU + Self-Attention andFeature Fusion
另一个挑战是从长序列中提取上下文信息,特别是测试集中的序列的比训练集中的序列更长的情况.为了完全利用全局上下文信息,我们将一个自注意力层置于HiGRU的隐藏状态之上并将注意力输出与单个的单词/话语嵌入进行融合,来学习上下文相关的单词/话语表示.因此,此变体称为HiGRU-sf,表示带有自注意力和特征融合的HiGRU.
特别地,我们将自注意力层分别应用于前项和后向的隐藏状态之上,来分别产生左上下文嵌入
h
k
l
(
H
j
l
)
h_k^l(H_j^l)
hkl(Hjl) 和右上下文嵌入
h
k
r
(
H
j
r
)
h_k^r(H_j^r)
hkr(Hjr).这允许我们在当前时间步的两个相反的方向上收集唯一的全局上下文信息并通过下式产生对应的与上下文相关的嵌入:
e
c
(
w
k
)
=
t
a
n
h
(
W
w
⋅
h
s
s
f
+
b
w
)
(11)
e_c(w_k)=tanh(W_w\cdot h_s^{sf}+b_w)\tag{11}
ec(wk)=tanh(Ww⋅hssf+bw)(11)
e
c
(
u
j
)
=
t
a
n
h
(
W
u
⋅
H
s
s
f
+
b
u
)
(12)
e_c(u_j)=tanh(W_u\cdot H_s^{sf}+b_u)\tag{12}
ec(uj)=tanh(Wu⋅Hssf+bu)(12)
其中
h
s
s
f
=
[
h
k
l
;
h
k
→
;
e
(
w
k
)
;
h
k
←
;
h
k
r
]
,
H
s
s
f
=
[
H
k
l
;
H
j
→
,
e
(
u
j
)
,
H
j
←
;
H
k
r
]
h_s^{sf}=[h_k^l;\overrightarrow{h_k};e(w_k);\overleftarrow{h_k};h_k^r],H_s^{sf}=[H_k^l;\overrightarrow{H_j},e(u_j),\overleftarrow{H_j};H_k^r]
hssf=[hkl;hk;e(wk);hk;hkr],Hssf=[Hkl;Hj,e(uj),Hj;Hkr]
Self-Attention自注意力机制是一种计算一个输入与其他所有输入的关系的有效的非周期性架构并且已经被成功的应用到各种NLP应用中,图三显示了在GRU的前向隐藏状态之上学习左上下文嵌入
h
k
l
h_k^l
hkl的点乘SA.注意力矩阵中的每一个元素通过下式计算:
f
(
h
k
→
,
h
p
→
)
=
{
h
k
→
T
h
p
→
i
f
k
,
p
≤
M
j
−
∞
o
t
h
e
r
w
i
s
e
(13)
f(\overrightarrow{h_k},\overrightarrow{h_p})=\begin{cases} \overrightarrow{h_k}^T\overrightarrow{h_p}& if\; k,p\leq M_j\\ -\infin&\;otherwise \tag{13}\end{cases}
f(hk,hp)={hkThp−∞ifk,p≤Mjotherwise(13)
然后使用注意力掩码来消除序列输入和paddings之间的内部注意力. 在每一步中,对应的左上下文
h
k
l
h_k^l
hkl之后被通过所有前向状态的加权求和来计算:
h
k
l
=
∑
p
=
1
M
j
α
k
p
h
p
→
,
α
k
p
=
exp
(
f
(
h
k
→
,
h
p
→
)
)
∑
p
′
=
1
M
j
exp
(
f
(
h
k
→
,
h
p
′
→
)
)
(14)
h_k^l=\sum\limits_{p=1}^{M_j}\alpha_{kp}\overrightarrow{h_p},\;\;\alpha_{kp}=\dfrac{\exp(f(\overrightarrow{h_k},\overrightarrow{h_p}))}{\sum\limits_{p'=1}^{M_j}\exp(f(\overrightarrow{h_k},\overrightarrow{h_{p'}}))}\tag{14}
hkl=p=1∑Mjαkphp,αkp=p′=1∑Mjexp(f(hk,hp′))exp(f(hk,hp))(14)
其中
α
k
p
\alpha_{kp}
αkp是被包含在
h
k
l
h_k^l
hkl中的
h
p
→
\overrightarrow{h_p}
hp的权重.右上下文
h
k
r
h_k^r
hkr可以通过类似方式求出.
3.4 Model Training
最小化所有对话中每一个话语的加权分类交叉熵来优化模型参数:
l
o
s
s
=
−
1
∑
i
=
1
L
N
i
∑
i
=
1
L
∑
j
=
1
N
i
ω
(
c
j
)
∑
c
=
1
∣
C
∣
y
i
c
log
2
(
y
^
i
c
)
(15)
loss=-\dfrac{1}{\sum_{i=1}^LN_i}\sum\limits_{i=1}^L\sum\limits_{j=1}^{N_i}\omega(c_j)\sum\limits_{c=1}^{|\mathcal{C}|}y_i^c\log_2(\hat{y}_i^c)\tag{15}
loss=−∑i=1LNi1i=1∑Lj=1∑Niω(cj)c=1∑∣C∣yiclog2(y^ic)(15)
类似于(Khosla,2018),使损失权重
ω
(
c
j
)
\omega(c_j)
ω(cj)与类别
c
j
c_j
cj中训练话语的数目成反比例,表示为
I
c
I_c
Ic,即对占多数的类别分配一个较大的损失权重,以缓解数据不平衡问题.不同之处在于,本文添加了一个常数
α
\alpha
α来调整分布的平滑性.
1
ω
(
c
j
)
=
I
c
α
∑
c
′
=
1
∣
C
∣
I
c
′
α
(16)
\dfrac{1}{\omega(c_j)}=\dfrac{I_c^\alpha}{\sum_{c'=1}^{|\mathcal{C}|}I^\alpha_{c'}}\tag{16}
ω(cj)1=∑c′=1∣C∣Ic′αIcα(16)
4 Experiments
4.1 Datasets
- IEMOCAP
- Friends
- EmotionPush
Data Preprocessing.通过如下步骤处理数据集
- 这些话语被分解成符号,每个单词都是小写的
- 除’?‘和’!'外的所有的non-alphanumerics被删除,因为这两个符号通常表现出强烈的情感
- 根据提取的单词和符号构建字典,遵循(Poria et al., 2017)的方法,使用在谷歌新闻的1000亿个单词上训练的公开可用的300维word2vec向量来表示tokens。对于不在word2vec字典中出现tokens,通过随机产生的向量来初始化。
4.2 Evaluation Metrics
两个评估标准:
- WA: 加权精确度
- UWA: 不加权精确度
4.3 Compared Methods
- bcLSTM
- CMN
- SA-BiLSTM
- CNN-DCNN
- bcLSTM∗ and bcGRU
4.4 Training Procedure
4.5 Main Results
4.6 Discussions