美文网首页
PytorchBigGraph笔记

PytorchBigGraph笔记

作者: 第一个读书笔记 | 来源:发表于2019-11-17 20:33 被阅读0次

链接:https://torchbiggraph.readthedocs.io/en/latest/input_output.html

定义

partition:将每种类型的边分成一定数量的子集

在左边的所有类型的节点和边,需要分布在同样数量的partition中,同理右边节点

partition允许分布式的模型训练

buckets:对每个关系(边)类型,将边分为buckets(partition_i,partition_j)

每个bucket由(left_hand_side_parition_i,right_hand_side_partition_j)组成

Filtered Rank Evaluation:只能在dynamic relation,单关系网络,全局负采样设置中使用

Dynamic Relation:当关系类型特别大(>100种关系)时,在该模式下,PBG可以调试到适应多关系的图分析中:

在config.py中,只有一种关系类型

在实体路径,会生成dynamic_rel_count.txt的文件,里面统计了关系数量

优化函数:Adagrad

Loss

L = \sum_{e∈G} \sum_{e'∈S'_e}max(f(e)-f(e')+ λ ,0))

s'_e = {(s',r,d)|s'∈V}∪{(s,r,d')|d'∈V}

f_r(x,y) = c(x, g_r(y))

其中:
x,y:左右节点(实体)
c:comparator,一般为cos/dot product
g:operator
f:score function,一般为cos/dot product

f(θ_s,θ_r,θ_d)=sim(g(s)(θ_s,θ _r),g(d)(θ_d,θ_r))

g和f的设置,使得PBG可以训练以下模型: torchbiggraph

Loss的类型

  • ranking loss:计算正样本的分数超过负样本分数多少

    max(0, m-s_i + t_{i,j})

    m:margin,默认为0.1,正样本最低也要高于负样本0.1
    s:正样本分数
    t:负样本分数

  • logistic loss:边存在的概率

    p = f(1/1+e^{-x})

    相连边:-logp
    不存在的边:-log(1-p)

  • Softmax loss:

-logp_i=-s_i + log{\sum}_je^{t_{i,j}}

其他

  1. 节点之间可以有多种关系
  2. 一条边的左右两个节点可以是同一个
  3. 每条边只代表一种关系
  4. 边通常是有向的,在无向图中,使用双向箭头表示
  5. 训练集中的边都是正样本,在训练时,通过负采样得到负样本,这些负样本,来自固定左边节点和边,随机采样右边的节点构成的(src,rel,dst),反之亦然。
  • 负采样的方法:
    全局负采样:
    对正样本(x,r,y),负样本为(x’,r,y),(x,r,y’),x和y在同一个partition中,是同一种实体类型
    仅适用与小图
    Same-batch 负采样:
    负样本来自同一个batch,首先将batch分成chunks,然后再生成负样本
    负样本数量=正样本数量
    均匀负采样:
    负样本 = (num_chunks,num_uniform_neg)
    无论图形大小,随机生成固定数量的负样本
    按一定比例α的负采样:
    按比例全局负采样,1-α为均匀负采样
    每次的迭代都面向每个edge buckets,对edge bucket(pi,pj),parition_i和parition_j从硬盘中扫描到,然后边被加载,分布到每个thread

相关文章

网友评论

      本文标题:PytorchBigGraph笔记

      本文链接:https://www.haomeiwen.com/subject/wqkmictx.html