CCGL: Contrastive Cascade Graph Learning

https://arxiv.org/pdf/2107.12576

https://github.com/Xovee/ccgl

CCGL: Contrastive Cascade Graph Learning,2022,TKDE

总结:算是一篇领域迁移的文章吧,提出了CCGL模型,将对比学习引入级联图学习中,同时结合了预训练-微调模式和知识蒸馏。文章值得参考的一点应该是在级联图中如何进行数据增强,CCGL其他的模块感觉参考意义不大,有点A+B的感觉。必须要吐槽的一点是,文章Introduction和动机写的太烂了!!读这部分的时候,明显感觉到,先东拼西凑设计好模型,再编故事。虽然我们可能经常这样,但是作者故事编的有点太烂了,强行根据CCGL的功能来编这篇工作希望解决的问题。

1. 简介

1.1 摘要

Supervised learning, while prevalent for information cascade modeling, often requires abundant labeled data in training, and the trained model is not easy to generalize across tasks and datasets. It often learns task-specific representations, which can easily result in overfitting for downstream tasks. Recently, self-supervised learning is designed to alleviate these two fundamental issues in linguistic and visual tasks. However, its direct applicability for information cascade modeling, especially graph cascade related tasks, remains underexplored. In this work, we present Contrastive Cascade Graph Learning (CCGL), a novel framework for information cascade graph learning in a contrastive, self-supervised, and task-agnostic way. In particular, CCGL first designs an effective data augmentation strategy to capture variation and uncertainty by simulating the information diffusion in graphs. Second, it learns a generic model for graph cascade tasks via self-supervised contrastive pre-training using both unlabeled and labeled data. Third, CCGL learns a task-specific cascade model via fine-tuning using labeled data. Finally, to make the model transferable across datasets and cascade applications, CCGL further enhances the model via distillation using a teacher-student architecture. We demonstrate that CCGL significantly outperforms its supervised and semi-supervised counterparts for several downstream task.

监督学习虽然在信息级联建模中很流行,但是在训练过程中需要大量的有标签数据,并且训练好的模型很难扩展到其他任务和数据集上。监督学习方法通常学习task-specific表示,因此在下游任务中很容易过拟合。最近在语言和视觉任务中,研究人员设计了自监督学习方法来消除这两个问题。但是将其应用于信息级联模型,尤其是图级联相关的任务中,还未被探索。本文我们提出了对比级联图学习CCGL,一种新的基于对比、自监督和任务无关的,用于信息级联的图学习框架。CCGL首先设计了一种有效的数据增强策略,通过模拟图的information diffusion来捕捉变化和不确定性。其次,CCGL同时使用有标签和无标签数据,通过自监督对比预训练来学习一个通用的图级联模型。然后,CCGL通过有标签数据对模型进行微调,学习一个task-specific级联模型。最后,为了提高模型的可迁移性,CCGL通过一个teacher-student架构进行蒸馏。我们在一些下游任务中证明了CGL的性能显著优于有监督和半监督对手。

1.2 本文工作

背景: 信息级联在现实世界中很常见,随着深度神经网络的发展,人们提出了许多有监督学习方法来对级联信息进行建模。比如使用RNN对用户的时空依赖级联进行建模,以级联的方式使用深度语言模型和CNN来学习语言和视觉表示等等。但是这些有监督方法存在一些问题依赖大量有标签数据,容易过拟合。研究人员提出了很多无监督学习方法。

动机: In many situations (e.g., information cascade prediction), we need to learn general knowledge from both labeled and unlabeled data without relying solely on specific downstream task and/or label supervision. 也就是说,以一种抽象的方式学习这些表示来捕获高级语义可能更有用。具体来说:(1)模型可以适用于不同任务和数据;(2)无标签数据的特征要被利用起来,不能浪费;(3)可以通过微调和蒸馏提高模型表现;(4)可以很好的将学习到的知识迁移到其他任务和数据集上。这一想法驱动着作者利用对比自监督学习来设计一个用于信息级联数据的模型。

个人感觉这里完全是乱扯的,应该是先有了模型,然后开始编故事,强行加上这些动机的,写的有点烂!

本文工作: 目前还没有工作将对比学习应用到graph-based information cascade tasks,这一工作存在以下几个挑战:(1)如何以对比、自监督、任务无关的方式学习通用的知识;(2)如何构建正负样本对;(3)如何在下游任务中对预训练好的模型进行微调。

为了解决这些问题,作者提出了一种通用的半监督框架CCGL。CCGL首先通过模拟information diffusion(就是边和节点扰动)生成对比视角,然后进行常规的对比学习,对Graph Encoder进行预训练。预训练完成之后,在下游任务中对Predictor进行微调,同时利用teacher-student架构的蒸馏模型进行知识蒸馏。

2. 方法

一些定义

  1. Information Cascade Graph

    给定一个item II(比如一个推特或者一篇文章),发表时间是t0t_0。一段时间后,item II获得了一些adoptions MM(转发或者引用)。这些adoptions就组成了信息级联CI(t)={(uj,tj)j[1,M],tj<t}C_I(t)=\left\{\left(u_j, t_j\right) \mid j \in[1, M], t_j< t\right\},其中uju_j在时刻tjt_jadopts item II。(类似时空图的一个东西)

    这样我们就可以定义出级联图G(t)={V,E}\mathcal{G}(t)=\{\mathcal{V}, \mathcal{E}\},其中V\mathcal V表示CI(t)C_I(t)中的用户集合,E\mathcal E表示adoption关系,比如retweet或者citing。

    本文作者主要关注信息级联中的temporal-structural模型,即给定一系列级联图,学习级联图的表示用于下游级联任务,比如异常检测、链路预测、推荐等。

  2. Information Cascade Popularity Prediction

    给定在tot_o时刻观察得到的级联图Gi(to)\mathcal G_i(t_o),popularity预测问题旨在预测在未来tpt_p时刻级联图的popularity(or size)Pi(tp)P_i(t_p),其中tp>>tot_p>> t_o

    注:popularity应该就是流行程度或者受欢迎程度。反映在图上应该就是图的规模,图越大说明这个item越流行。比如对于tweet,被转发的越多,级联图中节点数量越多,说明这条tweet越受欢迎。

CCGL框架

CCGL主要包含三个模块,首先使用对比学习框架,对图编码器进行预训练。然后在下游任务中利用有标签数据对Predictor进行微调,同时利用Teacher-Student架构对知识进行蒸馏。下面看看这几部分具体是如何实现的。

2.2.1 对比学习

这里需要关注的一点就是增强视角的生成,其他的和常规对比学习框架一模一样。这里重点看下作者如何生成增强视角的。

对于级联学习,无法直接使用现有的一些增强策略,有以下三点原因:

  • There are no straightforward ways to project text/image augmentation strategies to graphs; (不知道啥意思)
  • 级联图是一种tree-structured结构,从根节点出发,向外延展。随机增删节点和边对级联图造成的改变太大,比如可能导致图变成disconnected
  • 级联图中的节点具有时间特征,节点的adoption time对级联图的建模至关重要。节点数量相似甚至具有相同结构的级联图,时间行为可能相差巨大。

作者正对级联图设计了三种增强策略。

  1. AugSIM:模拟信息扩散进行增强(增删节点)

    其实就是增加删除节点,只不过不是随机增删,并且只针对叶子节点进行操作。

    • 增加节点

      对于级联图Gi\mathcal G_i中的每个user uiu_i,计算添加节点的概率ajia_j^i

      aji=ηidegree(uji)ukiVdegree(uki)a_j^i=\eta_i \frac{\operatorname{degree}\left(u_j^i\right)}{\sum_{u_k^i \in \mathcal{V}} \operatorname{degree}\left(u_k^i\right)}

      其中ηi\eta_iGi\mathcal G_i添加节点的超参。对于添加的节点unewiu_{new}^i我们还需要分配一个adoption time tnewi[tji,to]t_{new}^i\in[t_j^i,t_o],其计算方式如下:

      tnew i=tji+θttlocal i+(1θt)tglobal ,t_{\text {new }}^i=t_j^i+\theta_t t_{\text {local }}^i+\left(1-\theta_t\right) t_{\text {global }},

      其中θt\theta_t是一个权重超参数,tlocalit_{local}^i表示cascade-level adoption time,tglobalt_{global}表示dataset-level adoption time,计算方式如下:

      tlocali=1VijVitjitglobal=f(t;λ)λeλt, with λ>0t_{local}^i = \frac{1}{\left|\mathcal{V}_i\right|} \sum_{j \in\left|\mathcal{V}_i\right|} t_j^i\\ t_{global} = f(t ; \lambda) \sim \lambda e^{-\lambda t}, \quad \text { with } \quad \lambda>0

  • 删除节点

    假设增加完节点后的节点集合表示为ViVinew \mathcal{V}_i \cup \mathcal{V}_i^{\text {new }},对于每一个叶子节点ujiVileaf u_j^i \in \mathcal{V}_i^{\text {leaf }},其被删除的概率为rjir_j^i

    rji=ηi degree (parent(uji))ukiVileat degree(parent(uki)) r_j^i=\eta_i \frac{\text { degree }\left(\operatorname{parent}\left(u_j^i\right)\right)}{\sum_{u_k^i \in \mathcal{V}_i^{\text {leat }}} \operatorname{degree}\left(\operatorname{parent}\left(u_k^i\right)\right)}

    其实就是根据其父节点的度计算得到。

  1. AugRWR:基于RWR随机游走

    通过重复执行RWR,获得节点自己VirwrVi\mathcal V_i^{rwr}\subset \mathcal V_i,然后通过删除那些不在Virwr\mathcal V_i^{rwr}中的节点得到增强后的视角。

  2. AugAttr:替换节点属性

    在本文就是修改adoption time tjit_j^i,对于Gi\mathcal G_i中的每个节点ujiu_j^i,在区间[tj1, new i,tj+1i]\left[t_{j-1, \text { new }}^i, t_{j+1}^i\right]中随机采样一个新时间tj,newit_{j,new}^i

得到增强视角后,剩下的工作就很简单了。首先利用级联图编码器计算两个视角的图嵌入,并使用MLP将其映射到对比空间:

hi1=cascade_encoder(G~i1),zi1=MLP(hi1)hi2=cascade_encoder(G~i2),zi2=MLP(hi2)\begin{aligned} \mathbf{h}_i^1=cascade\_encoder\left(\tilde{\mathcal{G}}_i^1\right), & \mathbf{z}_i^1=\operatorname{MLP}\left(\mathbf{h}_i^1\right) \\ \mathbf{h}_i^2=cascade\_encoder\left(\tilde{\mathcal{G}}_i^2\right), & \mathrm{z}_i^2=\operatorname{MLP}\left(\mathbf{h}_i^2\right) \end{aligned}

最后对比损失的定义如下:

L1,2contrastive =logexp(sim(zi1,zi2)/τ)k=12B1(ki)exp(sim(zi1,zik)/τ)))\mathcal{L}_{1,2}^{\text {contrastive }}=-\log \frac{\exp \left(\operatorname{sim}\left(\mathbf{z}_i^1, \mathbf{z}_i^2\right) / \tau\right)}{\left.\left.\sum_{k=1}^{2 B} \mathbb{1}(k \neq i) \exp \left(\operatorname{sim}\left(\mathbf{z}_i^1, \mathbf{z}_i^k\right) / \tau\right)\right)\right)}

2.2.2 微调

通过对比学习预训练好cascade encoder后,在下游任务中使用有标签数据对cascade graph encoder进行微调。有监督对比损失定义如下:

Lsupervised =1Ni=1N(logP^i(tp)logPi(tp))2\mathcal{L}^{\text {supervised }}=\frac{1}{N} \sum_{i=1}^N\left(\log \hat{P}_i\left(t_p\right)-\log P_i\left(t_p\right)\right)^2

其实就是均方误差。

至此,在CCGL中作者首先使用对比学习对encoder进行预训练,然后在下游任务中,使用有标签数据进行有监督微调。这种模式会存在“negative transfer”问题。

所谓负迁移,比较权威的一种定义指的是: 在源域上学习到的知识,对于目标域上的学习产生负面作用

2.2.3 蒸馏

对于上述提到的负迁移问题,作者使用teacher-student架构来解决。

具体来说,定义两个网络:

  • teacher 网络:参数直接拷贝自微调后的predictor
  • student网络: started from the scratch,白手起家

通过以下损失函数,让两个网络尽可能的相似:

Lsemi=1N+Ui=1N+U(logP^iT(tp)logP^iS(tp))2\mathcal{L}^{\mathrm{semi}}=\frac{1}{N+U} \sum_{i=1}^{N+U}\left(\log \hat{P}_i^T\left(t_p\right)-\log \hat{P}_i^S\left(t_p\right)\right)^2

其中NNUU分别表示有标签样本和无标签样本的数量,P^iT(tp)\hat{P}_i^T\left(t_p\right)P^iS(tp)\hat{P}_i^S\left(t_p\right)分别表示教师网络和学生网络的预测结果。在反向传播过程中,固定教师网络的参数,优化学生网络的参数。

3. 方法

3.1 基础对比实验

3.2 消融实验

  1. projection head深度

  2. 模型大小和预训练的epochs

  3. 蒸馏给模型带来的性能增益

  4. 超参敏感性

3.3 知识迁移

检验模型在不同数据及上进行知识迁移的能力:

  1. 迁移到不同数据集
  2. 迁移到不同任务
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信