一文搞懂:【论文笔记】BINE:二分网络嵌入

简介: 一文搞懂:【论文笔记】BINE:二分网络嵌入

BiNE: Bipartite Network Embedding


三、问题定义


我们首先给出本文中使用的符号,然后形式化要解决的二分网络嵌入问题。


符号:设G = (U, V, E)为二分网络,其中U和V分别表示两种顶点的集合,E ? U × V定义集合间的边。 如图 2 所示,u【i】和v【j】分别表示U和V中的第i和第j个顶点,其中i = 1,2, ..., |U|和j = 1, 2, ..., |V|。 每个边带有一个非负权重w【ij】,描述顶点u【i】和v【j】之间的连接强度;如果u【i】和v【j】断开连接,则边权重w【ij】设置为零。 因此,我们可以使用|U|×|V|矩阵W = (w【ij】)表示二分网络中的所有权重。


问题定义:二分网络嵌入的任务,旨在将网络中的所有顶点映射到低维嵌入空间,其中每个顶点表示为密集嵌入向量。 在嵌入空间中,应保留相同类型的顶点之间的隐式关系,和不同类型的顶点之间的显式关系。形式上,问题可以定义为:


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


为了使符号简单,我们使用(带箭头的)u【i】和v【j】分别表示顶点u【i】和v【j】的嵌入向量。 因此,我们可以将二分网络中所有顶点的嵌入向量表示为两个矩阵U = (u【i】)和V = (v【j】)。


四、BINE:二分网络嵌入


良好的网络嵌入应该能够很好地重建原始网络。 为了对二分网络实现这一目标,我们考虑从两个角度重构二分网络 - 由观察到的边证明的显式关系和由未观察但传递的链接隐含的隐含关系。 然后,我们通过联合优化这两个任务来学习顶点嵌入。本节介绍了我们的 BiNE 方法。


4.1 建模显式关系


在二分网络中,边存在于两种不同类型的顶点之间,在构建二分网络时提供显式信号。 类似于 LINE 【20】 中的一阶邻近度建模,我们通过考虑两个连接顶点之间的局部邻近度来建模显式关系。 顶点u【i】和v【j】之间的联合概率定义为:


(1)


其中w【ij】是边e【ij】的权重。显然,如果两个顶点以较大权重紧密相连,则它们共同出现的概率较高。


现在我们考虑如何估计嵌入空间中两个顶点之间的局部邻近度。 word2vec 的有效性和普及性激发了许多工作 【4,8,20】,使用内积来模拟两个实体之间的相互作用。 我们遵循这个设置,并使用 sigmoid 函数将交互值转换为概率空间:


(2)


其中u【i】 ∈ R^d和v【j】 ∈ R^d分别是顶点u【i】和v【j】的嵌入向量。


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


(3)


直观上,最小化该目标函数将使得在原始网络中强连接的两个顶点在嵌入空间中也彼此靠近,这保留了所需的局部邻近度。


4.2 建模隐式关系


现有的推荐工作 【12,15】 所示,显性和隐性关系都有助于揭示二分网络中的不同语义。为了全面,同样重要的是还要考虑相同类型的两个顶点之间的隐式关系,即使它们没有显式连接。直观上,对于相同类型的两个顶点,如果它们之间存在路径,则它们之间应该存在某种隐式关系;路径的数量及其长度表示隐式关系的强度。不幸的是,计算两个顶点之间的路径具有指数阶的相当高的复杂度,这对于大型网络是不可行的。为了在二分网络中的顶点之间编码这种高阶隐式关系,我们求助于 DeepWalk 的解决方案。具体地,首先通过执行随机游走将二分网络转换为顶点序列的两个语料库;然后从语料库中学习嵌入,语料库编码顶点之间的高阶关系。在下文中,我们首先详细说明如何为二分网络生成两个高质量的语料库。


4.2.1 构建顶点序列的语料库


这是一种常用方法,通过在网络上执行随机游走将网络转换为顶点序列语料库,已经在一些同构网络嵌入方法中使用 【4,8】。 然而,直接在二分网络上执行随机游走可能会失败,因为由于周期性问题,二分网络上没有随机游走的固定分布 【34】。 为了解决这个问题,我们考虑在两个同构网络上进行随机漫游,这两个网络包含相同类型顶点之间的二阶邻近度。 按照 Co-HITS 【1】 的思想,我们将两个顶点之间的二阶邻近度定义为:


其中w【ij】是边e【ij】的权重。 因此,我们可以使用|U|×|U|矩阵W^U = (w^U【ij】)和|V|×|V|矩阵W^V = (w^V【ij】)分别表示两个所得同质网络。


现在我们可以在两个同构网络上执行截断随机游走,来生成两个语料库来学习高阶隐式关系。 如图 1 所示,DeepWalk 生成的语料库可能无法捕获真实网络的特征。 为了生成具有高保真度的语料库,我们提出了一种偏置且自适应的随机游走生成器,其可以保持二分网络中的顶点分布。 我们将其核心设计如下重点介绍:


首先,我们将从每个顶点开始的随机游走的数量与其重要性相关联,这可以通过其中心性来衡量。 对于顶点,其中心性越大,随机游走就越有可能从它开始。 结果,可以在一定程度上保留顶点重要性。我们指定在每个步骤中停止随机游走的概率。 与 DeepWalk 和其他在随机游走上应用固定长度的工作 【14】 相比,我们允许生成的顶点序列具有可变长度,以便模仿自然语言中的可变长度句子。


一般来说,上述生成过程遵循“富人更富”的原则,这是一种存在于许多真实网络中的物理现象,即顶点连通性遵循无标度幂律分布 【35】。


我们的随机游走生成器的工作流程总结在算法 1 中,其中maxT和minT分别是从每个顶点开始的随机游走的最大和最小数量。 算法 1 输出的D^U(或D^V)是从顶点集U(或V)生成的语料库。 顶点中心性可以通过许多度量来衡量,例如度中心性,PageRank 和 HITS 【29】 等,我们在实验中使用 HITS。


Algorithm 1: WalkGenerator(W, R, maxT, minT, p)


-----------------------------------------------


Input: weight matrix of the bipartite network W,


vertex set R (can be U or V ),


maximal walks per vertex maxT,


minimal walks per vertex minT,


walk stopping probability p


Output: a set of vertex sequences D^R


1 Calculate vertices’ centrality: H = CentralityMeasure(W);


2 Calculate W^R w.r.t. Equation (4);


3 foreach vertex vi ∈ R do


4 l = max(H(vi) × maxT, minT);


5 for i = 0 to l do


6 D【v【i】】 = BiasedRamdomWalk(W^R, v【i】, p);


7 Add D【v【i】】 into D^R;


8 return D^R;


4.2.2 隐式关系建模


在分别对两个同构网络进行偏差随机游走后,我们得到顶点序列的两个语料库。 接下来,我们在两个语料库上使用 Skipgram 模型 【11】 来学习顶点嵌入。


目的是捕获高阶邻近度,其假定经常在序列的相同上下文中共同出现的顶点,应被分配给类似的嵌入。 给定顶点序列S和顶点u【i】,上下文被定义为u【i】之前和之后u【i】中的ws顶点;每个顶点与上下文向量相关联,来将其表示为上下文的角色。 由于二分网络中有两种类型的顶点,我们分别保留高阶邻近度。 具体而言,对于语料库D^U,最大化的条件概率是:


(5)


其中C【S】(u【i】)表示序列S中顶点u【i】的上下文顶点。类似地,我们可以得到语料库D^V的目标函数:


(6)


按照现有的神经嵌入方法 【4,8,20】,我们为输出使用带有 softmax 的内积核,参数化条件概率P(u【c】 | u【i】)和P(v【c】 | v【j】):


其中P(u【c】 | u【i】)表示在u【i】的上下文中观察u【c】的可能性;类似的含义适用于P(v【c】 | v【j】)。 通过该定义,实现公式(5)和(6)中定义的目标,将迫使具有相似上下文的顶点在嵌入空间中接近。 然而,优化目标并非易事,因为 softmax 函数的每次评估都需要遍历一侧的所有顶点,这是非常耗费时间的。 为了降低学习的复杂性,我们采用了负采样的概念 【11】。


4.2.3 负采样


负采样的想法是用一些抽样的负实例逼近 softmax 的昂贵分母项 【36】。 然后,可以通过优化逐元素分类损失来执行学习。 对于中心顶点u【i】,高质量负样本应该是与u【i】不同的顶点。 为了实现这一目标,已经应用了一些启发式方法,例如从偏差为受欢迎程度的非均匀分布中抽样 【11】。 在这里,我们提出了一种更落地的采样方法,来满足网络数据。


首先,我们相对于输入二分网络中的拓扑结构,将每个顶点与其ws跳的邻居重叠,之后使用局部敏感散列(LSH)【37】 来封住顶点。 然后给定一个中心顶点,我们从与包含中心顶点的桶不同的桶中,随机选择负样本。 通过这种方式,我们可以获得高质量和多样化的负样本,因为 LSH 可以保证不同的顶点以概率方式位于不同的桶中 【37】。


令N^{ns}【S】(u【i】)表示序列S ∈ D^U中的中心顶点u【i】的ns负样本,然后我们可以将公式(7)中定义的条件概率p(u【c】 | u【i】)近似为:


其中P(z|u【j】)定义为:


其中σ表示 S 形函数1 / (1 + exp(-x))。 通过将公式(5)中的p(u【c】 | u【i】)替换为p(u【c】, N^{ns}【S】(u【i】)| u【i】)的定义,我们可以得到近似的目标函数来优化。 语义是中心顶点与其上下文顶点之间的邻近度应该最大化,而中心顶点和负样本之间的邻近度应该最小化。


按照类似的公式,我们可以得到条件概率`p(v【c】 | v【j】)的对应物,由于空间限制,这里省略了其细节。


4.3 联合优化


为了通过同时保留显式和隐式关系来嵌入二分网络,我们将它们的目标函数组合起来形成一个联合优化框架。


其中参数α,β和γ是要指定的超参数,用于组合联合优化框架中的不同组件。


为了优化联合模型,我们使用随机梯度上升算法(SGA)。 注意,公式(9)的三个分量具有不同的训练实例定义。 为了解决这个问题,我们通过执行如下的梯度步骤来调整 SGA 算法:


第一步:对于随机显式关系,即边e【ij】 ∈ E,我们首先通过利用 SGA 更新嵌入向量u【i】和v【j】以最大化最后的分量L【1】 = -γO【1】。 我们为u【i】和v【j】提供 SGA 更新规则,如下所示:


其中λ表示学习率。


第二步:然后我们将顶点u【i】和v【j】视为中心顶点; 通过使用 SGA 最大化目标函数L【2】 //代码效果参考:http://www.lyjsj.net.cn/wx/art_24233.html

= α logO【2】和L【3】 = β logO【3】,我们可以保留隐式关系。 具体来说,给定中心顶点u【i】(或v【j】)及其上下文顶点u【c】(或v【c】),我们更新它们的嵌入向量u【i】(或v【j】),如下所示:

其中I(z, u【i】)是一个指标函数,用于确定顶点z是否在u【i】的上下文中;类似的含义适用于I(z, v【j】)。 此外,正和负实例的上下文向量更新为:


我们在算法 2 中总结了学习过程。具体来说,第 1-2 行初始化所有嵌入向量和上下文向量;第 3-4 行产生顶点序列的语料库;第8和第12行进行负采样; 第 9-10 行和第 13-14 行使用 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 V


1 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 do


6 Update u【i】 and v【j】 using Equations (10) and (11);


7 foreach (u【i】, u【c】) in the sequence S ∈ D^U do


8 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.4 讨论


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


计算复杂性分析:语料库生成和联合模型优化是 BiNE 的两个关键过程。 然而,如果W^U或W^V变得密集,则生成语料库的复杂性将增加。 为了避免处理密集矩阵,另一种方法是在原始的二分网络中走两步。 假设v【c】是生成的语料库中顶点v的访问计数。 因此上下文大小为v【c】·2ws。 对于高度的顶点,它可能是一个大值,但我们只是随机选择一小部分上下文顶点,例如bs (bs ? vc)。 因此,算法的复杂度为O(2|E|·bs·2ws·(ns + 1)),其中ns是负样本的数量。 在某种程度上,通过设置适当的bs,可以在每次迭代中训练中心顶点的所有上下文顶点,因为在遍历所有边时将多次访问中心顶点。

相关文章
|
26天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
101 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
1月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
56 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
24天前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
54 3
|
1月前
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
33 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
1月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
56 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
1月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
46 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
47 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
4天前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全成为了我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和方法来保护自己的信息安全。
14 2
|
5天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第38天】本文将探讨网络安全与信息安全的重要性,包括网络安全漏洞、加密技术和安全意识等方面。我们将通过代码示例和实际操作来展示如何保护网络和信息安全。无论你是个人用户还是企业,都需要了解这些知识以保护自己的网络安全和信息安全。
|
4天前
|
存储 安全 网络安全
云计算与网络安全:探索云服务中的信息安全策略
【10月更文挑战第39天】随着云计算的飞速发展,越来越多的企业和个人将数据和服务迁移到云端。然而,随之而来的网络安全问题也日益突出。本文将从云计算的基本概念出发,深入探讨在云服务中如何实施有效的网络安全和信息安全措施。我们将分析云服务模型(IaaS, PaaS, SaaS)的安全特性,并讨论如何在这些平台上部署安全策略。文章还将涉及最新的网络安全技术和实践,旨在为读者提供一套全面的云计算安全解决方案。

热门文章

最新文章