Method
依旧是一篇emotion recognition in conversations (ERC)的文章,因此不对背景进行过多的介绍。因为基于图的神经网络没有考虑话语中包含的顺序信息,本文提出了关系位置编码,为RGAT(关系图注意力网络)提供反映关系图结构的顺序信息。总体的结构如图所示:
模型一共分为三部分:contextual utterance embedding, speaker dependency
modeling with position encodings and emotion classification。
Contextual Utterance Embedding
通过Bert将对话中的每一个utterance中的单词转化为token的向量化表示,并使用最大池化得到utterance的表示 h i ( 0 ) , i = 1 , 2 , . . . , M h_i^{(0)}, i=1,2,...,M hi(0),i=1,2,...,M。这里 M M M表示speaker的数量。
Speaker Dependency Modeling with Position Encodings
Graphical Structure
接下来,为一个对话构建多关系的图结构。节点就是通过Bert得到的utterance的向量化表示,边则通过如下方式定义:
Labeled Edges Representation。边的类型主要依赖于两点:说话人依赖——这取决于自我依赖和说话人之间的依赖;时间依赖——这也取决于对话中的时间变化。也就是一个utterance
u
j
u_j
uj是在目标话语
u
i
u_i
ui的过去还是未来发出的,这回产生不同的影响。基于此,构建出四种类型的边:
- self - past type( r 1 r_1 r1)
- inter - past type( r 2 r_2 r2)
- self - future type( r 3 r_3 r3)
- inter - future type( r 4 r_4 r4)
然后,使用两种不同的滑动窗口 p , f p,f p,f分别针对past以及feature的边,窗口内的utterance节点根据共现关系以及past或是feature关系进行构建。
EdgeWeight
接下来借助不同的关系进行GAT传播。
α
i
j
r
\alpha_{ijr}
αijr表示节点
i
,
j
i, j
i,j在关系
r
r
r下的注意力。LRL是LeakyReLU。
Position Encodings
接下来不同边的相对位置信息进行位置编码。本文唯一有难度的点在这里。为什么叫相对位置编码呢?是因为对于当前的节点
i
i
i,要考虑与其邻居的相对距离,这个Transformer差不多。并且,由于RGAT是基于不同的关系类别的,因此需要为不同的关系设计不同的位置编码方式。具体看公式:
这里的
N
1
(
i
)
N^1(i)
N1(i)当然表示关系
1
1
1的邻居,所以每一种相对编码只针对某一种特定的关系。同样,这里还需要考虑past或是feature的不同,不能计算超过这个窗口的节点,因为窗口外部的节点是不予考虑的。下图说明了本文的编码与其他编码方式的不同:
接下来,需要子啊RGAT进行注意力聚合的时候将PE也考虑进去,也就是将公式(1)修改为:
用图描述一下:
接下来,就是基于关系注意力的聚合了:
(4)表示同一种关系类别下的聚合;(5)表示不同关系之间的聚合。
Emotion Classification
经过
L
L
L层之后,将
h
i
(
0
)
h_i^{(0)}
hi(0)与
h
i
(
L
)
h_i^{(L)}
hi(L)拼接起来进行转换分类:
实验
数据集是老四样:
实验结果:
消融实验:
这里,对比了不同的编码方法,以及不同的GAT方式。本文的方法在每个类别的平均结果中取得了最好的效果。
接下来,还需要验证本文的PE的有效性:
可以看到Figure2中给出的几种PE方法,还是本文给出的最有效。
past以及feature窗口大小的选择:
像是这种窗口大小的选择一般都是类似倒U变化的,大家看看就好。