一、摘要

深度学习不用去手工提取特征,但是现有深度模型没有在传播预测任务中使用社区结构。所以提出一个CS-RNN框架,把社区在传播中的影响考虑在内,做传播预测。

二、杂记

  1. 贡献:①引入community structure information;②CS-RNN模型包含社区结构标签预测层(community structure labels prediction layer),可以预测下一个活跃节点的社区结构标签;③参数健壮、结果好;(PS:原文中3、4点被总结到此处第3点了,单从此处来看创新并不是很吸引人。)
  2. 参考文献结论:strong community 通过加强局部和社区内部的传播,有利于信息进行全局传播。
  3. 文章缺点:参考文献列举了随着神经网络发展产生的一些深度模型,但是并没有描述这些深度模型的侧重点或者缺点。(PS:那如何突出自己工作的重要性)

三、模型思想

3.1 问题定义:

Network:\(G=(V,E)\),\(V\)是顶点代表用户,\(E\)是边代表用户间关系;

Cascade:\(S=\{\left(t_{i}, v_{i}\right) | v_{i} \in V, t_{i} \in[0,+\infty), t_i \le t_{i+1}, i=1,2,...,N \}\),代表节点\(v_i\)在\(t_i\)时刻分享了消息;

Community:\(G(V',E')\)代表内部连接紧密的子图。假设图\(G=(V,E)\)可以被分为q个子部分\(\mathcal{L} = \left\{L_{1}, L_{2} \ldots L_{q}\right\}\),一个用户 \(v_i\) 只能属于一个社区,且它的社区标签并定义为\(c_{v_i} \in X_{\mathcal{X}}\);

问题描述:观察之前的传播过程,给定k个时间节点对(Cascade)表示为\(S_{\le k}\),在传播级联中进行序列建模,来预测下一个激活节点的概率,即\(p(v_{k+1}|S_{\le k})\),还要预测下一个激活节点的社区标签\(c_{v_{k+1}}\),即\(P{c_{v_{k+1}}|S_{\le k}}\),还要预测节点激活的确切时间。

3.2 模型框架

基本原理:信息传播到下一个节点不仅跟活跃节点的历史序列状态有关,还跟信息传播过的社区有关。

模型框架图如下,带标号和有颜色背景的无边缘线图形,是我为了更好的描述框架而加上的:

输入层:

①图中标记1的部分,把节点\(v_k\)转换成一个低维的向量\(\mathbf{v}_k \in R^{d_v}\),\(\mathbf{v}_{k}=\mathbf{W}_{e m v}^{T} v_{k}\);

②图中标记2的部分,把社区标签\(c_{v_k}\)也初始化转换为低维向量\(\mathbf{c}_{v_k} \in R^{d_c}\),\(\mathbf{c}_{v_{k}}=\mathbf{W}_{e m c}^{T} c_{v_{k}}\);

隐藏层:

①图中标记3的部分,这里是把\(\mathbf{v}_1\)到\(\mathbf{v}_k\)用一个RNN串联起来,表示每个节点的初始隐含表示,由之前得到的表示向量\(\mathbf{v}_k\)和传播过程中上一个节点的隐含表示所决定:\(\mathbf{h}_{k}^{(0)}=R N N\left(\mathbf{v}_{k}, \mathbf{h}_{k-1}^{(0)}\right)\)。其中,\(h_0^{(0)}\)由全0的向量初始化,RNN层中可以使用GRU和LSTM。这里暂时把\(\mathbf{h}_{k}^{(0)}\)和上一步得到的\(\mathbf{c}_{v_{k}}\)拼接起来,组成\(\mathbf{h}_{k}^{(1)}= \mathbf{h}_{k}^{(0)} \oplus \mathbf{c}_{v_{k}}\),备用。

②图中标记4的部分,把传播级联中的时间t,也按照序列顺序用RNN串联,得到\(\mathbf{h}_{k}^{(2)}=R N N\left(\mathbf{t}_{k}, \mathbf{h}_{k-1}^{(2)}\right)\)。

最后,把上述的两个(其实是三个\(\mathbf{h}_{k}^{(1)}\)由两部分组成)拼接起来,组成一个向量(图中三色向量图形),然后通过一个线性变换层(FC层)和一个非线性变换(激活层)【图中Linear and Activation Layer】,得到结果:\(\mathbf{h}_{k}^{\mathrm{cas}}=\delta\left(\mathbf{W}_{h}^{T}\left(\mathbf{h}_{k}^{(1)} \oplus \mathbf{h}_{k}^{(2)}\right)+\mathbf{b}_{h}\right)\)。

社区结构标签产生:(图中右上部分)

由上面得到的\(\mathbf{h}_{k}^{\mathrm{cas}}\),在通过一个线性变换层和激活层,目的是为了把\(\mathbf{h}_{k}^{\mathrm{cas}}\)映射到和社区结构标签嵌入向量同样的空间中去,得到\(\mathbf{h}_{k}^{\mathrm{com}}=\delta\left(\mathbf{W}_{\mathrm{com}}^{T} \mathbf{h}_{k}^{\mathrm{cas}}+\mathbf{b}_{\mathrm{com}}\right)\),然后把\(\mathbf{h}_{k}^{\mathrm{com}}\)和所有社区标签向量做余弦相似度,在用一个softmax层归一化所有相似度,得到(预测)下一个激活节点的社区标签,\(\mathbf{p}_{k}^{c o m}=\operatorname{sigmoid}\left(\mathbf{h}_{k}^{c o m} \mathbf{W}_{e m c}^{T}\right)\)。

下一个激活节点的产生:(图中右上部分)

我们可以看到,图中的右上部分有一个类似残差神经网络(大雾)的连接,其实是作者又做了一个下一个激活节点的预测,具体如下:

通过模型左侧得到的\(h_k^{cas}\),和刚刚预测的社区结构标签 $ \mathbf{p}_{k}^{\text {com}}$,作者把这两个向量拼接起来,再送入线性变换层和激活层,得到 \(\mathbf{h}_{k}^{\text {node }}=\delta\left(\mathbf{W}_{\text {node }}^{T}\left(\mathbf{h}_{k}^{\text {cas }} \oplus \mathbf{p}_{k}^{\text {com }}\right)+\mathbf{b}_{\text {node }}\right)\),然后如法炮制,在计算隐向量\(h_k^{node}\)和所有节点的嵌入表示之间的余弦相似度,再用softmax层归一化,得到每个节点的概率表示,从而预测下一个激活结点是哪个节点。

下一个激活时间预测:(图中左上部分)

利用最开始得到的传播级联第K步的表示\(h_k^{cas}\),还可以预测传播过程的第K+1步和第k步之间的时间间隔,即\(t_{k+1}-t_{k}=\mathbf{W}_{t}^{T} \mathbf{h}_{k}^{c a s}+\mathbf{b}_{t}\)。

哇,这是一口气做了三个预测,通过传播级联第K步的表示\(h_k^{cas}\),文中做了下一个激活节点的预测,下一激活节点所在的社区标签的预测,还做了时间间隔的预测,感觉文章要做multi-task了(是不是做multi-task会有收获呢?),然而没有,文中的损失函数:
\[
\operatorname{Loss}(Q)=\sum_{f=1}^{F} \sum_{i=1}^{N_{f}-1} \log p\left(\left(t_{k+1}, v_{k+1}, c_{k+1}\right) | c_{v_{k}}, S_{\leq k}\right)
\]
利用基于时间的反向传播(backpropagation through time,BPTT)来训练模型,最后用SGD,mini-batch和Adam优化。为了加快速度,在训练过程中使用正交初始化方法。

四、实验

利用合成数据和真实数据(Digg数据集)。主要在合成数据集上做了分析,对于真实数据集分析简短。

设备:Tesla V100 32G GPU, Intel Xeon E5 CPU,512G内存。

合成数据生成方法:(不太懂,之后用到生成数据可以参考这里,关键是传播都能够生成!)

网络结构和传播过程都是生成的。

网络结构生成,两种方法:①kronecker graph model;②LFR bechmark,更像真实网络。产生两种网络结构①random network(RD);②层级社区网络(HC)。

传播过程生成,对于每个节点,按照一定的时间分布来设置被激活用户的激活时间,参考其他文献,也设置了两种分布,①混合指数分布(Exp);②混合瑞利分布(Ray);

对比算法:

CYANRNN(AAAI’17):使用attention-based RNN,利用传播过程中的交叉依赖性(什么是交叉依赖性?)。

RNNPP(AAAI’17):用RNN的视角处理point process,建模背景和历史作用。可以预测event时间,主要类型的event和子类型的event。作者在论文中把社区结构当做main-types,把node当做sub-type。

RMTPP(SIGKDD‘16):将时间点过程的强度函数视为历史的非线性函数,利用RNN自动学习事件历史影响的表示。

S-RNN,CS-RNN,CS-GRU,CS-LSTM:分别是去掉社区结构的方法,原始方法,使用GRU的方法和使用LSTM的方法。前两个是为了对比结果证明,社区结构有用的,后面两个是对比GRU好还是LSTM好。

结果还是比较中规中矩的,提出的方法肯定是最优的,社区结构是有用的。

五、其他

瑞利分布(Rayleigh Distribution):当一个随机二维向量的两个分量呈独立的、有着相同的方差的正态分布时,这个向量的模呈瑞利分布。

六、参考文献

[1]. Liu, Chaochao, et al. “Community Structure Enhanced Cascade Prediction.” Neurocomputing, vol. 359, Elsevier B.V., 2019, pp. 276–84, doi:10.1016/j.neucom.2019.05.069.

Community structure enhanced cascade prediction 笔记的更多相关文章

  1. {ICIP2014}{收录论文列表}

    This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...

  2. Content-Type List

    Content-Type List Description of Data Content Typical Filename Extensions MIME type/subtype       Te ...

  3. A Brief Review of Supervised Learning

    There are a number of algorithms that are typically used for system identification, adaptive control ...

  4. 蛋白质结构模型和功能预测:I-TASSER工具的使用

    I-TASSER是一款用于预测蛋白质结构和功能的工具,网站链接:https://zhanglab.ccmb.med.umich.edu/I-TASSER/ 具体描述如下: I-TASSER (Iter ...

  5. 关于Intel芯片架构的发展史

    ---恢复内容开始---  当你真正的深入去行走在底层的道路上,你就会接触大量的一些貌似懂的概念性名词,比如Intel公司的x86架构,x64等等,又或者是当年的386,486等等,唉,有的时候真的是 ...

  6. 论文解读(DFCN)《Deep Fusion Clustering Network》

    Paper information Titile:Deep Fusion Clustering Network Authors:Wenxuan Tu, Sihang Zhou, Xinwang Liu ...

  7. hibernate笔记--cascade级联以及inverse属性

    cascade : 不管是单向多对一还是一对多,或者是双向的一对多关系,在一的一端映射文件中有一个set标签,在多的一端有many-to-one标签,拿前几篇笔记里讲的Grade和Student举例, ...

  8. scikit-learn使用笔记与sign prediction简单小结

    经Edwin Chen的推荐,认识了scikit-learn这个非常强大的python机器学习工具包.这个帖子作为笔记.(其实都没有笔记的意义,因为他家文档做的太好了,不过还是为自己记记吧,为以后节省 ...

  9. [原创]java WEB学习笔记83:Hibernate学习之路---双向 1-n介绍,关键点解释,代码实现,set属性介绍(inverse,cascade ,order-by )

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. CodeForces999A-Mishka and Contest

    A. Mishka and Contest time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. 使用 Ocelot 匹配路由的方法匹配路由

    使用 Ocelot 匹配路由的方法匹配路由 Intro 之前我们在 Ocelot 网关的基础上自定义了一个认证授权的 Ocelot 中间件,根据请求的路径和 Method 进行匹配,找到对应的权限配置 ...

  3. python3导入子模块

    基础知识 参考资料1上有一句话Regular packages are traditional packages as they existed in Python 3.2 and earlier. ...

  4. 探究UE4网络系列(二)、UE4网络核心类分析

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.概要 前面分析了网络核心的基础类Socket/BSDSocket/SocketSubsystem/SocketSubs ...

  5. 016_List/Set/Map

    先写一下3这种遍历方法 for循环 List<Teacher> list = new ArrayList<>(); list.add(new Teacher("张三& ...

  6. pipelineDB学习笔记-2. Stream (流)

    一.流的定义: 所谓的“流”(stream)在pipelineDB中是指那些被允许的数据库客服端推送到 Continuous View(连续视图) 的时序化数据的一种“抽象”.流中的每一个raw(数据 ...

  7. 使用python实现数组、链表、队列、栈

    引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表,集合和字 ...

  8. hdu 1255 覆盖的面积 (扫描线求矩形交)

    覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  9. 记录我的 python 学习历程-Day08 文件的操作

    文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...

  10. Tomcat系列(二)- EndPoint源码解析

    在上一节中我们描述了Tomcat的整体架构, 我们知道了Tomcat分为两个大组件,一个连接器和一个容器. 而我们这次要讲的 EndPoint的组件就是属于连接器里面的. 它是一个通信的端点,就是负责 ...