一篇来自WWW21的论文,看完觉得颇为有趣,特地记录一下:
mixup是一种CV中常用的数据处理手段,可以从现存的有标签样本中生成新的样本,其思想也非常简单,假设有两个样本
(x
i
,
y
i
)
,
(
x
j
,
y
j
)
(x_i,y_i),(x_j,y_j)
(
x
i
,
y
i
)
,
(
x
j
,
y
j
)
,新的样本生成方式为:
xi
j
=
α
x
i
+
(
1
−
α
)
x
j
x_{ij}=\alpha x_i+(1-\alpha)x_j
x
i
j
=
α
x
i
+
(
1
−
α
)
x
j
yi
j
=
α
y
i
+
(
1
−
α
)
y
j
y_{ij}=\alpha y_i+(1-\alpha)y_j
y
i
j
=
α
y
i
+
(
1
−
α
)
y
j
其实也蛮好理解,比方说
xi
,
x
j
x_i,x_j
x
i
,
x
j
代表着两张图片,对应的标签分别为1和0,
α\alpha
α
取0.9,即0.9个
xi
x_i
x
i
掺了0.1个
xj
x_j
x
j
,那么
yi
j
y_{ij}
y
i
j
就是0.9,这很符合直觉。
实验证明mixup可以减小训练中的过拟合,这个似乎也可以直观理解:如果样本中标签只有0和1,那么模型再训练时会让预测的标签尽可能地向两端去逼近,但是我们使用mixup可能使得样本的标签处于[0,1]这个区间,从而使得模型预测的结果均匀地分布在这个区间内。
说到这篇论文,这篇论文就是将mixup应用到了图神经网络中的节点分类和图分类两个任务上,先说图分类,因为这个比较简单:
-
我们从图分类的样本中取出两个样本
(G
i
,
y
i
)
,
(
G
j
,
y
j
)
(G_i,y_i),(G_j,y_j)
(
G
i
,
y
i
)
,
(
G
j
,
y
j
)
,因为图分类是先使用一个
re
a
d
o
u
t
readout
r
e
a
d
o
u
t
函数先得到图的一个embedding,我们记作
xx
x
,那么对于这个得到的
(x
i
,
y
i
)
,
(
x
j
,
y
j
)
(x_i,y_i),(x_j,y_j)
(
x
i
,
y
i
)
,
(
x
j
,
y
j
)
直接套上面的公式就行。 -
节点分类:给定一个图
GG
G
,从这个图中取出一个节点对
(i
,
j
)
(i,j)
(
i
,
j
)
,在GNN训练的过程中进行mixup,过程也很有意思,不赘述。