Introduction
对于这种人格分类的任务,一般都是从用户在网络上的发帖(post)去估计其人格特征(多标签分类任务)。本文通过心理语言知识的三部图网络TrigNet揭示一个人的语言使用和心理特征之间的联系,并使用图神经网络去建模这种联系。为了减少GAT的计算复杂度,提出了一种新的流图注意网络,该网络只在三部图中相邻节点之间传递消息。之后,将平均后节点表示作为人格分类的最终用户表示。 三部图的构建如图所示: 一共有三种类型的节点,Post是用户发表的帖子,Word表示帖子中的单词,Category表示把单词分为心理学相关的类别,论文中使用了一个叫做Linguistic Inquiry and Word Count (LIWC)的工具完成单词Category的划分。构图的过程也很简单,如果单词属于某一个Post或是属于某一个Category,则添加边。
Approach
Notations
对于一个用户,他可能会发布一些列帖子:
P
=
{
p
1
,
p
2
,
.
.
.
p
r
}
P=\{p_1,p_2,...p_r\}
P={p1?,p2?,...pr?},假定一个帖子
p
i
p_i
pi?由一系列单词序列组成:
p
i
=
{
w
i
,
1
,
.
.
.
w
i
,
n
}
p_i=\{w_{i,1},...w_{i,n}\}
pi?={wi,1?,...wi,n?},任务目标是根据
P
P
P预测对应的
T
T
T个人格
Y
=
{
y
t
}
t
=
1
T
Y=\{y^t\}_{t=1}^T
Y={yt}t=1T?,其中
y
t
y^t
yt是一个
0
,
1
0,1
0,1的binary向量,表示多标签分类的结果。
Model
模型总体框架如下:
Graph Initialization
首先,需要对不同的节点进行初始化。对于单词,可以使用Bert获取表示。在本文中,如果单词没有超出词汇表,我们可以直接查找BERT嵌入层获得其嵌入;如果单词是词汇表之外的,我们使用它pieces的平均嵌入作为它的初始节点嵌入。对于Post,本文利用最后三层的表示来初始化Post节点嵌入,也就是: 然后使用attention进行三者的加权聚合: 而对于一共15个主要的category,用每一个category的单词代替Bert中的UNUSED标记,这样就可以用token look up table对category进行表示了:
Graph Learning
图的聚合时基于GAT的改进,为了本文的三部图定制了一个flow GAT for the tripartite graph模块。考虑到post之间的交互路径有两种:p-w-p以及p-w-c-w-p,所以设计了一种消息传递机制,只通过三部图中的这两个flow来传递消息。更新过程定义为: 其中,
H
p
(
l
)
H_p^{(l)}
Hp(l)?的两种不同更新方式如下: 这正好对应两个不同的flow。再之后,三种不同的节点更新为: 这里所有的
M
P
(
)
MP()
MP()都是message passing的意思,以
M
P
(
H
w
(
l
)
,
H
p
(
l
)
)
MP(H_w^{(l)}, H_p^{(l)})
MP(Hw(l)?,Hp(l)?)为例,
M
P
(
)
MP()
MP()可以视为一种多头注意力聚合: 这里面
i
i
i是
V
w
V_w
Vw?中的节点,
j
j
j是在
i
i
i的邻域内且类型为
V
p
V_p
Vp?的节点,
k
k
k表示head,这样就能计算节点之间的注意力系数
β
i
j
k
\beta_{ij}^k
βijk?。然后,通过注意力权重就可以实现如下的多头注意力更新: 而结点
i
i
i的最新表示是原来表示与注意力聚合之后的加和:
Merge & Classification
最终,用户的表示是他所发布的所有post的平均池: 然后,采用
T
T
T softmax-normalized线性变换去估计最终的人格: 目标函数的损失函数对应多标签分类的损失:
Experiments
Datasets
Results
其中
I
/
E
I/E
I/E这种表示不同的人格类型,一共分为:Introversion vs. Extroversion (I/E), Sensing vs. iNtuition (S/N), Think vs. Feeling (T/F), and Perception vs. Judging (P/J)。
消融试验
其中第二栏表示删除不同的LIWC标记后性能的下降。
复杂度
当然,本文提出的特殊GAT由于其稀疏性,在参数与复杂度、性能上都有提升。
Layer Attention Analysis
这个是说明不同的Bert Layer对最终结果的贡献程度,从热力图来看,最后的三层贡献程度最大。因此,本文前文也提到了使用后三层的加权和作为输入的embedding。
|