• [论文阅读笔记] Fast Sequence Based Embedding with Diffusion Graphs


    [论文阅读笔记] Fast Sequence Based Embedding with Diffusion Graphs


    本文结构

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

    (1) 解决问题

    随机游走向外扩散(往距离源点较远的区域)得相对较慢,又可能重复遍历一个节点很多很多次从而生成冗余的信息。


    (2) 主要贡献

    论文中并没明确写出两个贡献点,最主要的贡献点还是Contribution 1

    Contribution 1: 相比于随机游走,该算法(Diff2Vec)通过为每个节点生成邻域扩散图,并且在扩散图上快速搜寻欧拉路径,从而快速生成用于网络训练的节点序列。

    Contribution 2: 相比于Skip-Gram最大化向量点积保留节点的共现概率,Diff2Vec设计了一种不太相同的方式来实现该目标(使得窗口内共现次数越多的节点对在表征空间中越相近),即尽可能保留序列中节点的共现频率向量。


    (3) 算法原理

    Diff2Vec算法主要的框架主要分为序列生成和简单网络训练两个部分。

    对于序列生成部分:

    为了生成节点邻域序列,我们首先为每个节点都计算一个扩散图,其次利用他来生成节点序列(欧拉路径)。

    • 扩散图的生成方式:(扩散图用G'=(V',E')表示)首先找一个源点v生成初始的扩散图G'。其次随机选择V'中某节点u,并且在V中随机选择节点u的某个邻居w,将w其加入扩展图V',(u,w)这条边也加入E’,重复上述过程,直到G'中节点数达到预先给定的值,这个过程就结束了,节点v的扩散图就做完了(按我的理解就是尽可能把源节点v的邻域采样下来生成一个子图,后续序列采样过程是在该邻域构成的子图上采样的)。
    • 采样节点序列首先把扩散图中的每条边扩展成两条,从而将该图扩展成多重图,并且每个节点的度数都为偶数,这就确保了该图为欧拉图,图中一定存在欧拉路径。紧接着,该算法采用其他现成的算法来快速寻找图中的欧拉路径,并且将欧拉路径用于后续神经网络模型的训练。(欧拉路径不采样重复的边,这就保证了不会重复采样某些节点很多很多次

    对于所使用的简单神经网络:

    网络架构(单隐层简单神经网络)如下所示:

    神经网络架构

    其中,首先,我们统计所有序列中其他节点出现在以某节点v为中心节点的窗口内(分左右窗口,类比于Skip-Gram)的频次,分别得到对应左窗口和右窗口的两个节点频次向量。网络输入为节点one-hot编码,网络预测的输出为节点频率向量,每一个维度表示在对应窗口(中心节点左窗口与中心节点右窗口)内与与对应节点共同出现的频率。使用异步梯度下降(ASGD)来更新网络权重参数,最终,隐层权重矩阵为节点表示向量。(emmm,与Skip-Gram思想还是挺像的,论文中并未给出具体的目标函数,个人猜想目标是最小化由序列统计得到的节点频次向量和网络预测的节点频率向量的差异,但是作者代码实现是直接使用Skip-Gram模型


    (4) 参考文献

    Benedek Rozemberczki and Rik Sarkar. Fast Sequence Based Embedding with Diffusion Graphs. International Conference on Complex Networks, 2018.


  • 相关阅读:
    .Net下HTTP访问穿越多层代理的方法以及代理服务器的验证 转载
    SB淘宝api的奇葩问题! 一则服务器无法访问淘宝api
    C# 系统应用之清除Cookies、IE临时文件、历史记录 转载
    Replication--进程无法在“xxxx”上执行“sp_replcmds”
    [leetcode] Search Insert Position
    [leetcode] Search for a Range
    [leetcode] Merge Sorted Array
    [leetcode] Remove Element
    [leetcode] Find Minimum in Rotated Sorted Array
    [leetcode] Container With Most Water
  • 原文地址:https://www.cnblogs.com/wangqinze/p/13818696.html
Copyright © 2020-2023  润新知