icml 2022
《ProGCL: Rethinking Hard Negative Mining in Graph Contrastive Learning》

文章关注了对比学习中的hard negative样本问题,尤其是对图中的。首先解释hard negative,就是和anchor很相近的负样本,很多对比学习方法专门挖掘hard negative来push模型。但作者发现在GCL上应用这个技术并不靠谱,因为其中很多hard negative实际上是false negative,就是本来就不应该和anchor分开的假负样本,我们并不希望把它们在对比学习的过程中push away。
如果和我一样有点忘了anchor是什么,一起回顾一下作者贴心介绍的(节点级)图对比学习。
image.png
对一张图做两种增强,一个节点增强后的那对称为anchor,譬如图中v_i和u_i,其它邻居就被认为是负样本。
而作者发现了很有趣的东西。
image.png
负样本有两种,true negative代表负样本与anchor属于不同类,而false negative代表与anchor属于同类,横轴相似度代表anchor和样本的相似度。左边普通处理图像的CL是一个单峰的,也就是true和false的负样本分布是一致的,而右边处理图的GCL呈双峰,相似度与anchor特别大的假负样本诡异地变多了。

于是作者定了两个小目标,考虑到hard(false) negative的存在,有没有更好的划分负样本的方法,以及如何对GCL进行无偏的对比学习。
作者首先给出了解释,说其实是因为message passing结构导致的。
image.png
把GCN换成纯MLP,就可以得到很类似CL的图,作者还给出了一个定理。
image.png
大意就是,信息传播框架每多经过一层,任意两个节点的embedding距离会被拉近,其实就是过平滑。还放了个证明。读完论文再看。
来了来了,看一下证明,组会无忧好吧。
首先有message passing:
image.png
也就是:
image.png
image.png
1-L_sym的特征值和特征向量有如下特点:
image.png
有:
image.png
这里开始恶心了,X^是X在以e为basis的空间里的坐标变换矩阵,感觉起到映射的作用。给这个式子求一个l2norm就行了。lamda小于1,所以求幂是在减小的。
image.png
具体讲proGCL,作者想给出一个负样本是true的概率。作者用混合模型来达到这一目的。怎么把另类摘出来呢!方法很简单,就是混合模型,一般会迅速想到GMM,但作者给了图,说GMM不如BMM。
image.png
作者拿了两个数据集,可以看到红色是比绿色拟合得更好。下一个问题:beta distribution是什么。pdf是这样的:
image.png
alpha和beta是参数,gamma函数:image.png
和GMM很像,不同类别的pdf组合起来的总相似度的pdf分布:
image.png
然后就是喜闻乐见的EM步骤来获取参数。共采样M个相似度。回顾一下EM,E-step就是计算当前模型参数,计算样本属于某类的概率。s属于簇c的概率如下:
image.png
均值和方差:
image.png
M-step是根据极大似然估计来重新计算参数。
image.png
概率分配:
image.png
作者设计迭代10次,EM之后就可以拿着相似度知道一个样本到底是真负样本还是假负样本了。认为概率大一些的是真负样本那类,毕竟这个多。
image.png

作者设计了2个proGCL方案:

ProGCL-weight:

知道负样本的真假之后,就要看怎么利用这点进行更好的GCL建模。作者的办法就是在infonce公式那里加权重。原公式:
image.png
加了权重的:
image.png
权重计算:
image.png
可以看到这个权重是加给负样本的,c_t就是true的那一方,可以想象一下,加入出现相似度很高的假负样本,那么就是分子上的p很小,s很大,相似度高的真负样本就会p和s都很大,就可以区分开了。最终的损失函数:
image.png

ProGCL-mix:

有个别人的工作叫mochi,用hard negative来合成新样本,但GCL中可能存在一些假负样本,改进方法就是在合成的时候把这个样本是false的概率考虑进去。对一个anchor节点u_i,合成m个hard negative。mixup公式如下:
image.png
这里的v_p和v_q是通过上面那个权重公式选出来的最像true negative的样本。
image.png
下面是mochi和progcl的对比图,红色和anchor是一类,也就是说proGCL产生的蓝色更多,是一个没有什么意义但更好看的图。
image.png
最终的损失多了一个合成的负样本:
image.png
最终损失:
image.png

实验和证明等要用来讲组会再看,icml难得有说人话的文章了(抹眼泪)。