在自监督图对比学习的损失函数中,除了本身的有监督损失函数之外,还有自监督损失函数,有监督损失函数主要以BPR损失函数为主,公式如下图所示:
(1)
其中表示用户集,表示用户u的交互物品集,即i是用户u使用过的物品,而j是用户没有使用过的物品。直白的说,BPR损失函数就是,对于每个用户u,其使用过的物品i的排名应该比他没使用过的物品j更靠前,即用户u与物品i的嵌入向量的乘积应该大于用户u与物品j的嵌入向量的乘积。
我猜这很好理解,就不过多赘述。
而对于自监督损失函数,其主要可以拆分成如下两部分:
(2)
因为和很相似,接下来我们以为例,其计算公式如下所示:
(3)
其中表示在不同子图中,子图1节点u'和子图2节点u''之间的相似度(同一节点在不同子图的相似度);表示的是子图1节点u'和子图2节点v''之间的相似度(不同节点在不同子图的相似度)。
将其转换一下,可得:
(4)
进一步化简得:
(5)
pytorch实现就是根据上述表达式,使用 torch.logsumexp() 进行对比损失计算。
or 进一步将表示式(4)分析得:
(6)
因为 ,那么要使得最小,使尽可能小即可,即尽可能大,尽可能小。
解释起来就是:同一个图节点在不同子图中的相似度应该尽可能的大,而不同的图节点在不同子图中的相似度要尽可能的小。