• 图学习——06.metapath2vec


    元路径随机游走

    • 如果忽略节点类型进行随机游走,结果是会有偏的,数目较多的节点类型出现的概率更大
    • 元路径随机游走:定义好一个游走类型路径,在上图中,路径可以定为APA,APVPA等,然后按照这个路径游走,即下一个节点只采样符合要求的节点类型元路径通常为对称的
    • 优点:这种元路径随机游走策略可以确保不同类型的节点语义关系被恰当的并入skip-gram模型中

    同质图下训练embedding

    给定节点v,计算它的邻居节点c出现的概率,并使其最大化,公式如下图所示:
    这个邻居可以是一阶或者二阶等
    在这里插入图片描述
    在这里插入图片描述

    异构图下训练embedding

    同样是给定节点v,计算其邻居节点c出现的概率,公式如下图所示:
    但是该节点c的选取必须在特定元路径下
    在这里插入图片描述
    比如给定下图元路径MIT,a1,p1,那么给定节点a1,就可以计算节点MIT出现的概率和p1出现的概率并使其最大化
    在这里插入图片描述

    游走概率计算

    如下公式(3),计算给定节点vti,求游走到节点vi+1的概率
    首先,第三个表示,vti和vi+1不相邻,那游走的概率就是0,第二个表示,两个节点相邻,但是vi+1不是元路径所规定的节点类别,那游走概率也是零,第一个就是即相邻又是元路径规定的节点类别,那一定是可以游走的,游走的概率就是所有满足此条件的节点的总数分之一。
    举例:
    下图中最后一个图,vi相邻的节点有四个,其中3个绿色的是满足元路径规定的节点类型的,但是最后一个橙色的不满足,所以游走到vi+1的概率是1/3
    在这里插入图片描述
    按照定义的meta-path来游走,游走完就形成了语料,然后根据skip-gram就可以训练出每个节点的embedding

    skip-gram

    给定如下图的一个语料,假设窗口大小为5(给定节点左右两个节点出现的概率),当给定节点The的时候,计算quick和brown出现的概率,同样,在给定quick的时候,计算The,brown和fox出现的概率,以此类推。
    在这里插入图片描述

    subsampling

    比如上面在训练的时候(quick, the): 没有学习到quick的任何上下文信息,因为the是没什么用的副词,这种语料对于我们来说也没有任何上下文相关性
    所以提出subsampling就是:有一定的概率删掉这个词,概率和单词出现的频率有关

    计算公式如下:
    其中z(wi) 表示单词wi出现的概率,比如语料内有一亿个词,单词wi出现1000次,该z(wi)=1000/100000000=1e-6
    P(wi)就是计算保留下单词 i 的概率
    在这里插入图片描述

    Negarive Sampling

    通过subsampling就确定了用来训练的语料,下面就根据语料来计算word embedding

    比如说给定(the, quick) 那the就是输入,quick就是label

    如果使用one-hot编码,那根据语料的大小N,每个单词都可以表示成长度为N的向量,只有自己所在位置是1,其他位置都是0。
    这样就会有一个问题,就是计算量非常大,比如下图的神经网络,在hidden layer和output layer之间计算量非常大
    在这里插入图片描述
    所以提出了一个负采样的方式进行训练,负采样就是在hidden layer到output layer的时候,保留output layer 值为1的神经元,并随机采样几个输出神经元作为输出,比如下图,采样输出为4个神经元
    在这里插入图片描述

    Selecting Negative Samples

    出现频率越高的单词,被选中的几率就越大
    被选中的概率是单词wi出现的概率除以语料所有单词出现的概率,作者发现在对每个语料出现的概率求一个3/4次方的效果最好
    在这里插入图片描述

  • 相关阅读:
    java反射(易懂)
    java项目开发实例ssm流浪猫狗|流浪狗宠物救助网站
    CSS 滚动驱动动画 view-timeline-inset
    设计模式:适配器模式(C++实现)
    什么是内存泄漏,为什么threadlocal会造成内存泄漏?
    java常见的三种定时任务调度框架,写得太棒了
    clean-label backdoor attacks 论文笔记
    jQuery中mouseenter&mouserleave替代mouseover&mouseout
    java健身俱乐部管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    Python模块:模块搜索顺序、内置属性(__file__和__name__)、开发原则
  • 原文地址:https://blog.csdn.net/m0_51474171/article/details/127415785