**

BiNE: Bipartite Network Embedding

**
SIGIR 2018

论文链接:https://dl.acm.org/doi/10.1145/3209978.3209987

项目代码:https://github.com/clhchtcjj/BiNE


文章目录

    • BiNE: Bipartite Network Embedding
  • 摘要
  • 1、Introduction
  • 2、Related work
    • (1)网络表示学习两种方法:
    • (2)二分图网络模型
  • 3、Problem formulation
  • 4、BiNE:bipartite network embedding
  • 5、实验

摘要

本文工作:提出了**二分图表示学习方法——BiNE: Bipartite Network Embedding**
原因:目前发部分网络图的表示方法是针对于同构网络,而二分图是一个天生的异构网络,所以以前的方法用在二分图上并不能达到最好的效果。

同构网络:指所有节点在网络中具有相同功能的网络,如电信网络(网络上的用户结点的目的都是打电话)
异构网络:指按功能和效用将节点分为两类或更多类的网络,如二分图(user和item结点的属性和目的都不同)

https://blog.csdn.net/mengmeng6666/article/details/108405123

步骤:
1、有目的地执行**biased random walk**(带偏随机游走?),生成能够保留原始二分图**long-tail distribution**(长尾分布?)的顶点序列

长尾分布

随机游动是指随机网络中,消息到达一个节点后,选择该节点的一个随机邻居作为下一步继续传播消息。带偏随机游动与随机游动的区别在于下一步的选择依据上,带偏随机游动中,每个邻居被选中的概率是不一致的,从而导致某些节点被选中的概率更高(其中一种随机游动是指偏向高度邻居节点的随机游动,即:消息传播的下一步为节点度最高的邻居节点)。带偏随机游走

2、提出一个考虑了显式关系和隐式关系的优化框架来学习顶点表示

[1]所谓显式关系,就是指能从数据集中直接获得的关系信息,如图中可观测到的边的信息。
[2]所谓隐式关系,就是指数据中隐含的关系信息,例如两个节点间虽然并没有边相连,但它们连接了同一个节点,我们就有理由认为这两个节点之间存在着某种隐式关系。

3、实验:链接预测link prediction(classificaton)、推荐recommendation(personalized ranking),证明此方法的有效性、合理性


1、Introduction

(1)获取顶点的表示很重要
(2)传统空间向量方法捕捉语义过少,不足以处理大型动态网络

如bag-of-word模型是信息检索领域常用的文档表示方法。在信息检索中,BOW模型假定对于一个文档,忽略它的单词顺序和语法、句法等要素,将其仅仅看作是若干个词汇的集合,文档中每个单词的出现都是独立的,不依赖于其它单词是否出现。也就是说,文档中任意一个位置出现的任何单词,都不受该文档语意影响而独立选择的

(3)目前大部分工作关注同构网络,同构网络的一些方法(**deepwalk**)对二分图来说不能获得最佳效果

deepwalk embedding两步法:
(i)随机游走,获取顶点语料库
(ii)用词embedding方法获取顶点的embedding

deepwalk embedding方法不适合二分图原因:
(i)未考虑顶点类型信息(同类型顶点间含有隐式关系)
(ii)生成的语料库可能没有保留二分图的特点

(4)最先进的异构网络嵌入方法——metapath2vec++的限制:将显式关系和隐式关系看做同等重要

(5)BiNE特点:

考虑显式关系和隐式关系,提出联合优化框架(每种关系都设置目标函数且相互增强);
对显式关系建模——重构二分图;对隐式关系建模——捕捉高阶相关性。

带偏、自适应随机游走生成器,尽可能保留二分图特性


2、Related work

(1)网络表示学习两种方法:

(i)基于MF
线性或非线性,如SVD、MDS…

缺点:
贵(特征分解造价高)不可用于大型网络
对预设的相似度度量很敏感(?不知道翻译得是否准确)

(ii)基于神经网络
基于神经网络是新型方法

除此之外,
同构网络方法:Deepwalk,Node2vec,Line,SDNE,GraRep
异构网络方法:Metapath2vec++、HNE、EOE(不专门用于二分图,不能达到最优效果)

HNE致力于将内容和链接结构整合到embedding的过程中
Metapath2vec++忽略了顶点间的强度,将显隐式关系看做同等重要

(2)二分图网络模型

专门用于推荐的方法(不是专门用于embedding):只考虑了显式关系,没考虑隐式关系(可合并隐式关系来改善算法)

HITS:捕捉二分图内的语义关系来对顶点进行排序
CO-HITS:将顶点的内容信息和相关约束条件合并到二分图的顶点排序中
BiRank:通过考虑网络结构和先验信息进行顶点排序


3、Problem formulation

(1)符号:

设G = (U, V, E),E ⊆ U × V定义集合间的边。 u[i]和v[j]分别表示U和V中的第i和第j个顶点,其中i = 1,2, …, |U|和j = 1, 2, …, |V|。 每个边带有一个非负权重w[ij],描述顶点u[i]和v[j]之间的连接强度;因此,我们可以使用|U|×|V|矩阵W = (w[ij])表示二分网络中的所有权重。

(2)问题定义:

二分图embedding任务:将所有顶点映射到低维embedding空间中,其中每个顶点表示为稠密的embedding向量

输入:二分网络G = (U, V, E)和权重矩阵W
输出:映射函数f: U ∪ V -> R^d,它将G中每个节点映射为d维嵌入向量


4、BiNE:bipartite network embedding

一个好的网络embedding能够很好地重建原始二分网络
由观察到的边证明的显式关系和由未观察但传递的链接隐含的隐含关系。
通过联合优化这两个任务来学习顶点嵌入。

(1)建模显式关系

边——构建二分图的显式信号

类似于LINE的一阶相似度模型,通过考虑两个连接顶点的局部相似度,对显式关系进行建模

LINE原理

u[i]和v[j]的联合概率:
如果两顶点边的权重很大,则有很大概率共同出现

估计嵌入空间内两顶点的局部相似度,参考了word2vec取向量内积的思想。对两顶点的交互进行建模,采用它的设置,利用sigmoid函数将交互值转换成概率空间:

word2vec类似简单化的神经网络:
输入是One-Hot Vector,Hidden Layer没有激活函数,也就是线性的单元。Output Layer维度跟Input Layer的维度一样,用的是Softmax回归,如图。当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数,例如隐层的权重矩阵。
这个模型定义数据的输入和输出呢,一般分为CBOW(Continuous Bag-of-Words 与Skip-Gram两种模型。

激活函数(如sigmoid、Tanh、ReLU函数):激活函数对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

Skip-Gram模型的输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。
从直观上理解,Skip-Gram是给定input word来预测上下文。

Softmax回归

first-order proximity
1阶相似度用于描述图中成对顶点之间的局部相似度,形式化描述为若 [公式] , [公式] 之间存在直连边,则边权 [公式] 即为两个顶点的相似度,若不存在直连边,则1阶相似度为0。若两顶点之间存在直连边,且边权较大,则认为两者相似且1阶相似度较高,若不存在直连边,则两者间1阶相似度为0。
second-order proximity
仅有1阶相似度就够了吗?显然不够,虽然两顶点之间不存在直连边,但是他们有很多相同的邻居顶点,这其实也可以表明他们是相似的,而2阶相似度就是用来描述这种关系的。

利用顶点间共现概率的经验分布和重建分布,我们可以通过最小化它们的差异来学习embedding向量。 选择 KL 散度作为分布之间的差异度量,定义为:

经验分布函数是理论分布函数和实际数据间的桥梁,它是一个随机变量,而经验分布的观测值就是普通意义上的分布函数

KL散度( KL divergence) 用途:比较两个概率分布的接近程度 可以使用KL散度衡量我们选择的近似分布与数据原分布有多大差异
D(P||Q)表示当用概率分布q来拟合真是分布P时,产生的信息损耗,通过最小化这种损耗,学习embedding向量



最小化此目标函数能够使得在原网络上相互连接的两个顶点在embedding空间中也互相靠近,即保证了局部邻近性

(2)建模隐式关系

隐式关系是针对同类型顶点来说的,同类型的两个顶点只要有路径就有隐式关系,路径数量、长度表示隐式关系的强度。

步骤:
首先,利用随机游走将二分图网络转换成两个顶点序列的语料库
然后,然后从编码顶点间高阶关系的语料库中学习嵌入信息

(i)构建顶点序列的语料库
因为二分网络的周期性问题,在二分图上的随机游走没有稳定的分布,所以在二分图上直接使用随机游走可能会失败。

为了解决这个问题,考虑在两个同构图上进行随机游走(这个通构图包含同类型顶点间的二阶相似度)。

参考co-HITS的思想,定义两顶点间的二阶相似度为:

本文的一阶相似度和二阶相似度
explicit relations:一阶相似度,采用KL散度拟合边权重和sigmoid计算的节点相似度;
implicit relations:二阶相似度,首先采用随机游走生成两类序列,然后利用skip-gram学习。在构造2-阶相似度中,利用co-HITS算法,分别计算节点u,v的相关系数

现在可以在两个同构网络上执行截断随机游走(deepwalk不合适,用带偏、自适应的随机游走生成器(biased and self-adaptive random walk generator)),来生成两个语料库来学习高阶隐式关系。

带偏、自适应的随机游走生成器核心设计如下:
(i)对每一个节点,它的中心性(centrality)越强(越重要),从它开始的random walk序列越多。(这样某个顶点的重要性可被保留)
(ii)定义一个概率值,使得random walk会在某一步随机地停止,得到长度不同的节点序列(类似自然语言的不同长度句子)【其他方法是固定随机游走的长度,得到相同长度顶点序列】

带偏、自适应的随机游走生成器的工作流:
w:权重矩阵,R:顶点集U或V,maxT/minT:从每个顶点开始进行随机游走的次数,p: 随机游走停止概率

计算顶点中心性方法:degree centrality、pagerank、HITS(本文用HITS)
(用HITS计算顶点的中心性——HITS原理,计算方法)

(ii)开始建模隐式关系
然后使用Skip-Gram模型学习两个语料库中的顶点embedding。

最大化给定uiu_iui,生成ucinCs(ui)u_c in C_s(u_i)ucinCs(ui)的条件概率

D^U目标函数:最大化条件概率
D^V目标函数:

S为语料库中的节点序列,Cs(ui)为在该序列中,节点ui的上下文节点的集合。

我们可以看到计算P的时候采用了softmax,但这一步也是个烧时间大户,所以我们选择使用负采样的方法来逼近这个目标函数,而不是直接运算softmax。

(iii)负采样

单词表的大小意味着我们的skip-gram神经网络拥有非常庞大的权重数,所有权重都会被十亿个样本中的一个稍微地进行更新!
负采样通过使每一个训练样本仅仅改变一小部分的权重而不是所有权重,从而解决这个问题
https://www.imooc.com/article/29453

思想:用一些抽样的负实例逼近 softmax 的分母项

优化逐点分类损失(?)

根据输入二分网络的拓扑结构用顶点的ws跳邻居去覆盖每一个顶点,然后使用局部敏感哈希(locality sensitive hashin,LSH)对顶点分块。给定中心点,随机地从不同桶(不包含中心点)中获取负样本。这样可以获取高质量、不同的负样本。

将公式(7)中定义的条件概率近似为:
用(8)代替(5)中的条件概率,然后进行优化——使得中心顶点与其上下文顶点的语义最大化,与负样本相似度最小化

(3)联合优化
为了同时保留显式关系和隐式关系,将两者的目标函数结合起来,形成一个联合优化框架

利用随机梯度上升法 Stochastic Gradient Ascent algorithm (SGA)优化这个函数。首先,通过以下步骤稍微调整SGA算法:

步骤:
(i)对于显式关系,使L1=-λO1,最大化,SGA更新规则:
λ:学习率

学习率(Learning rate)作为监督学习以及深度学习中重要的超参,其决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。合适的学习率能够使目标函数在合适的时间内收敛到局部最小值。

(ii)对于隐式关系,使L2和L3最大化,SGA更新规则:

上下文向量更新规则:

Algorithm 2: Training algorithm of BiNE

Input: bipartite network G = (U, V, E), weight matrix of the bipartite network W, window size ws, number of negative samples ns, embedding size d, maximal walks per vertex maxT, minimal walks per vertex minT, walk stopping probability p
Output: vertex embeding matrices U and V1 Initialize embedding vectors u[i] and v[j];2 Initialize context vectors θ[i] and ϑ[j];3 D^U = WalkGenerator(W,U,maxT,minT,p);4 D^V = WalkGenerator(W,V,maxT,minT,p);5 foreach edge (u[i], v[j]) ∈ E do6     Update u[i] and v[j] using Equations (10) and (11);7     foreach (u[i], u[c]) in the sequence S ∈ D^U do8         Negative sampling to generate N^{ns}[S](u[i]);9         Update u[i] using Equation (12);
10         Update θ[z] using Equation (14) where z ∈ {u[c]} ∪ N^{ns}[S](u[i]);
11     foreach (v[j], v[c]) in the sequence S ∈ D^V do
12         Negative sampling to generate N^{ns}[S](v[j]);
13         Update v[j] using Equation (13);
14         Update ϑ[z] using Equation (15) where z ∈ {v[c]} ∪ N^{ns}[S](v[j]);
15 return Vertex embeding matrices U and V

(4)讨论

预训练:BiNE 在公式(9)中的联合目标函数是非凸的,因此初始化对于找到一个好的解决方案起着重要的作用。预训练公式(3)来获得初始顶点嵌入。

计算复杂性分析:语料库生成和联合模型优化是 BiNE 的两个关键过程。
为了避免处理密集矩阵,一种可替代的方法是在原始的二分网络中游走两步。


5、实验

为了评估用BiNE法学习到的顶点embedding,论文进行了两类应用实验:链接预测和推荐,并通过大量实验,回答如下四个问题:

  • Q 1. 和这两种应用的代表性baseline方法(基准方法?)与其他最新embedding方法相比,BiNE的实际性能能到底如何?
  • Q 2. 明确地建模隐式关系是否真的有助于学习节点的表示?
  • Q 3. 论文费劲心思设计的随机游走生成器是否有效?
  • Q 4. 超参数的设置如何影响BiNE模型的性能?

链接预测(分类任务):预测两个顶点间是否存在链接
推荐(个性化排序任务):为用户提供感兴趣的项目

链接预测、推荐任务:

AUC-ROC(ROC curve)、AUR-PR(precision-Recall curve)
F1、Normalized Discounted Cumulative Gain(NDCG)、Mean Average Precision(MAP)、Mean Reciprocal Rank(MRR)

  • RQ1:性能对比

bipatite 网络嵌入工作

bipatite network 分别有两种节点集合,以及集合之间的连接(边)构成,即(U,V,E),其中E的边可以构成一个 |U| x
|V| 的权重矩阵W。

BINE:
的contribution之一即同时区别了显式(explicit)和隐式(implicit)的关系。其中,显式的关系和LINE的一阶概率是一致的,采用了KL散度对节点的向量进行计算——这里使用sigmoid函数计算节点的相似度,同时观察相似度利用节点权重(边)——我们知道,在PTE模型中,采用了softmax函数计算节点的二阶相似度,也就是所谓的隐式概率,在BiNE中,利用了DeepWalk类似的解决办法(结合skip-gram),也是其论文的重点。

explicit relations:一阶相似度,采用KL散度拟合边权重和sigmoid计算的节点相似度;

implicit
relations:二阶相似度,首先采用随机游走生成两类序列,然后利用skip-gram学习。在构造2-阶相似度中,利用co-HITS算法,分别计算节点u,v的相关系数:

很明显,相似度U是集合了i到j之间的所有路径权重(2-hop),相似度集合了同时到达i,j的所有路径权重(2-hop),从而得到两个权重矩阵(邻接矩阵),基于这两个矩阵,生成随机游走的序列(具体见论文),但是论文其实也没有很详细的介绍过程,可能需要看相关的源码

BiNE

得到了序列之后,第二步就是根据序列学习每个节点的向量表示(distributed
representation),运用skip-gram模型,把图的随机游走序列作为输入。这里,另一个trick,就是对每个节点,生成其对应的上下文表示,利用上下文表示进行概率计算
—— 这里怎么得到上下文表示呢?没有说明,应该是在随机节点向量的时候同时初始化的,但是会考虑上下文中其他节点的表示嘛?

同样的,需要采用负采用优化,这里的负采用不是随机选取负样本,而是通过LSH对向量进行映射,分组,在不同的桶里面选出不相干的负样本。

在得到这些数据之后,最后需要联合优化了:

其中O2,O3为二阶的目标函数,O1为一阶的目标函数。因为用到SGA,推导没看,所以略过这部分。

最后就是实验。但是没有对比PTE模型,因为本质上这还是同构的图,很难说在异构环境中的效果会怎么样。而且,BiNE模型明显要比PTE更加复杂。

BiNE: Bipartite Network Embedding相关推荐

  1. BiNE: Bipartite Network Embedding 阅读笔记

    论文传送门 作者 华东师范大学: 高明 周傲英 Leihui Chen 中国科学技术大学: 何向南 摘要 传统的学习图数据的节点表示的方法大都聚焦于一般的同构网络,忽略了二部图的特殊性质.因此这些方法 ...

  2. 【论文解读 IJCAI 2019 | ActiveHNE】Active Heterogeneous Network Embedding

    论文链接:https://arxiv.org/abs/1905.05659 来源:IJCAI 2019 文章目录 1 摘要 2 介绍 2.1 挑战 2.2 作者提出 2.3 贡献 3 The Acti ...

  3. 员外带你读论文:LINE: Large-scale Information Network Embedding

    本次要总结和分享的论文是 LINE: Large-scale Information Network Embedding,其链接 论文[1],所参考的实现代码 code[2],这篇论文某些细节读起来有 ...

  4. 文献学习(part14)--Structural Deep Network Embedding

    学习笔记,仅供参考,有错必纠 文章目录 Structural Deep Network Embedding ABSTRACT INTRODUCTION RELATED WORK Deep Neural ...

  5. Network Embedding中方法回顾

    网络嵌入方法(Network Embedding)旨在学习网络中节点的低维度潜在表示,所学习到的特征表示可以用作基于图的各种任务的特征,例如分类,聚类,链路预测和可视化. 传统意义上的 Graph E ...

  6. NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation)

    NEU(Fst Network Embedding Enhancement via High Order Proximity Approximation) NEU(Fst Network Embedd ...

  7. ProGAN: Network Embedding via Proximity Generative Adversarial Network 论文笔记

    ProGAN: Network Embedding via Proximity Generative Adversarial Network 使用相似性生成对抗网络的网络嵌入 动机: 发现不同节点之间 ...

  8. 论文笔记(一):Temporal Network Embedding with High-Order Nonlinear Information

    论文笔记(一):Temporal Network Embedding with High-Order Nonlinear Information 论文标题:Temporal Network Embed ...

  9. Community Preserving Network Embedding 论文笔记

    Community Preserving Network Embedding 网络性质 属性.标签 权重 方向 方法 任务 同质 有 有权 有向 matrix factorization node c ...

最新文章

  1. github pages部署静态网页
  2. android viewpager button 导航,ViewPager做底部导航
  3. php中的解析范围符,PHP 的范围解析操作符 (::) 的含义分析说明
  4. [转]ColorMatrixFilter--颜色矩阵滤镜
  5. FPGA时序约束和timequest timing analyzer
  6. html百度天气api,百度API 免费接口获取天气预报
  7. 1.8 简单卷积网络示例
  8. CSS(网页样式语言)基础,网页CSS设计样式基础知识点 小白教程
  9. db2 表添加字段及注释操作
  10. 相比于深度学习,传统的机器学习算法难道就此没落了吗,还有必要去学习吗?...
  11. 小米笔记本系统win10家庭版升级为企业版(专业版)
  12. AIDA64内存与缓存测试过了算稳定吗_买了B460主板的你,究竟需要怎样的内存
  13. 天空之城 matlab,matlab演奏《天空之城》代码
  14. 6.Vue教程:http://www.jb51.net/Special/874.htm
  15. 基础工具类Joiner的使用
  16. 如何进行用户留存分析
  17. 界面追踪法求解流体流动的表面张力
  18. Java网络编程学习
  19. CFileDialog 参数及返回值
  20. CSP 202206-1 归一化处理

热门文章

  1. android 仿旅游日历控件_SuperCalendar 仿小米的Android 开源简单实用的日历表
  2. CSS---复合选择器
  3. 互联网大厂2021中秋礼盒battle,把我都看馋了
  4. Monaco editor 配置 language
  5. CISP-PTE选择题整理(二)
  6. python的sleep怎么实现的_sleep实现原理
  7. 我的个人黑莓手机应用
  8. 监听android home键的实现方式
  9. 学习Docker,有这一篇就够啦!
  10. html单页面原理,HTML5单页面手势滑屏切换原理分析