[论文阅读笔记] LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding


本文结构

  1. 解决问题
  2. 主要贡献
  3. 算法原理
  4. 参考文献

(1) 解决问题

本篇论文是针对现有表征算法计算开销比较大,不能够很好应用到大规模网络上的问题。


(2) 主要贡献

Contribution: 提出一种快速且可扩展网络表征框架,LouvainNE,能够为包含数百亿边的网络生成高质量的表征向量。


(3) 算法原理

LouvainNE的算法思想也就是基于粗化图的,与HARP类似,但是粗化方式不同,粗化图的使用方式也不同。

LouvainNE算法包含三个部分

(1)类似自顶向下的层次聚类算法,构建层次子图(2)为每个层次子图中的节点生成特定节点表征,提出两个不同的方法来生成节点嵌入(标准嵌入和随机嵌入方法)(3)结合各个层次子图中节点获得的表征成最终节点表征。

  • 自顶向下构建层次子图:使用Louvain算法生成的社区构成节点来进行划分。(满足一个假设,相似的数据节点应该在二叉树上的位置更接近)如下图所示:



    首先,使用Louvain算法得到原始图(对应上图树的根节点)的初始社区划分S1、S2、S3,每个社区可以看成一个粗化节点(对应上图中右半部分根节点的第一个分叉)。紧接着对S1、S2、S3分别递归使用Louvain再进行社区划分,分别得到各自的儿子节点,如上图中右边树所示,S1进一步划分为社区S11和S12。以上过程对树中每个非叶节点(粗化节点包含两个或多个原始图节点的为非叶节点,否则为叶节点)分别做,直到得到的儿子节点均只包含单个原始图中的节点,自顶向下层次子图构建完毕(每一层所有节点看成一个层次(粗化)图)。

  • 为每个层次图中的节点学习表示向量(同一深度的节点位于同一层图中),提出标准嵌入方法和随机嵌入方法。

    标准嵌入:使用其他表示学习算法来学习,如DeepWalk、Line、Node2vec等等,通常其他表示学习算法的输入需要图结构的,因此需要定义层次子图,点由每一层节点组成,节点之间的边由以下公式确定(ES1S2代表节点集合S1和S2之间存在的边):

    随机嵌入:使用标准正态分布随机生树中每个节点的表示向量,这种方法不需要构建图结构。(论文实验中对比了标准嵌入和随机嵌入的实验效果,emmm,结论是相差不大,考虑到随机嵌入效率比标准嵌入快很多,因为综合考虑还是使用随机嵌入的方法好。)

  • 融合各层节点表示生成节点最终表示向量,我们只要得到树中所有叶节点的表示向量即课得到原始图的表示向量:我们可以发现,从根节点到叶节点对应唯一路径,聚合路径中节点的向量表示(结合各个层的表示,从而融合局部到全局的结构特征)即可得到叶节点的向量表示(即路径上其他节点向量的线性组合)。聚合方式如下所示(越靠近根节点的节点的向量表示越重要,h为树的深度,α为超参数(属于[0,1],衡量当前深度的节点表示向量对叶子节点表示向量的重要性),ytv为在第t深度的路径中节点的表示向量):

以上便是LouvainNE算法的全部内容,通过Louvain算法获取社区信息,将社区构造为粗化节点,逐级递归,构造层次树,最后结合叶节点对应的路径上所有粗化点的表示得到叶节点的表示。


(4) 参考文献

Bhowmick A K, Meneni K, Danisch M, et al. LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding [C] // Proceedings of the 13th International Conference on Web Search and Data Mining. 2020: 43-51.


[论文阅读笔记] LouvainNE Hierarchical Louvain Method for High Quality and Scalable Network Embedding的更多相关文章

  1. 论文阅读笔记(二十三)【ECCV2018】:Robust Anchor Embedding for Unsupervised Video Person Re-Identification in the Wild

    Introduction 当前主要的非监督方法都采用相同的训练数据集,这些数据集在不同摄像头中是对称的,即不存在单个行人的错误项,这些方法将在实际场景中效果下降.在本方法中,作者引入了非对称数据,如下 ...

  2. 论文阅读笔记(十)【CVPR2016】:Recurrent Convolutional Network for Video-based Person Re-Identification

    Introduction 该文章首次采用深度学习方法来解决基于视频的行人重识别,创新点:提出了一个新的循环神经网络架构(recurrent DNN architecture),通过使用Siamese网 ...

  3. 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification

    Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...

  4. Nature/Science 论文阅读笔记

    Nature/Science 论文阅读笔记 Unsupervised word embeddings capture latent knowledge from materials science l ...

  5. [论文阅读笔记] Community aware random walk for network embedding

    [论文阅读笔记] Community aware random walk for network embedding 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 先前许多算法都 ...

  6. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  7. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  8. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  9. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

随机推荐

  1. 功能:Java8新特性steam流

    Java8新特性steam流 一.包装数据类型 @Test public void main22() { List<Integer> list = new ArrayList<Int ...

  2. 关于Eclipse Debug断点调试出现 Search not found 页面的解决办法

    1. 在代码中鼠标右键 Debug AS ---> Debug Configurations... ----> 找到Source选项  ---> 点击add ---> 选择 j ...

  3. 阿里早期Android加固代码的实现分析

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78320445 看雪上有作者(寒号鸟二代)将阿里移动早期的Android加固进行了逆 ...

  4. hdu 2058 枚举区间和个数

    题意:       给你两个数n,m,意思是有一个序列长度n,他是1 2 3 4 ...n,然后让你输出所有连续和等于m的范围. 思路:       是个小水题,随便写几个数字就能发现规律了,我们可以 ...

  5. POJ3040给奶牛发工资

    题意:       有n种硬币,每种硬币有mi个,然后让你给奶牛发工资,每周发至少c元(就是不找零钱的意思)然后问你能发几周?(硬币之间都是倍数关系) 思路:       这个题目做了两天,丢脸,看完 ...

  6. UVA10294项链和手镯(等价类计数问题)

    题意:       给你一串珠子(连接成了一个环),共有n个珠子组成,你有t种颜色,现在你来给这个珠子染色,问染成项链有多少种方法?染成手镯有多少种方法?在项链里,经过顺时针旋转后相同的算一个,在手镯 ...

  7. Ubuntu Linux 学习篇 配置DNS服务器

    BIND9 DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS中保存了一张域名(doma ...

  8. php 获取某数组中出现次数最多的值(重复最多的值)与出现的次数

    1.$arr = array(7,7,8,9,10,10,10); $arr = array_count_values($arr);   // 统计数组中所有值出现的次数 arsort($arr);  ...

  9. python主线程捕获子线程异常

    python内置threading.Thread类创建的子线程抛出的异常无法在主线程捕获,可以对该类进行优化,为子线程添加exit code属性,主线程通过获取子线程的返回状态,来判断子线程中是否发生 ...

  10. 前端实操案例丨如何实现JS向Vue传值

    摘要:项目开发过程中,组件通过render()函数渲染生成,并在组件内部定义了自定义拖拽指令.自定义拖拽指令规定了根据用户可以进行元素拖拽.缩放等一系列逻辑处理的动作. 本文分享自华为云社区<[ ...