链接: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
其中:
x,y:左右节点(实体)
c:comparator,一般为cos/dot product
g:operator
f:score function,一般为cos/dot product

Loss的类型
-
ranking loss:计算正样本的分数超过负样本分数多少
m:margin,默认为0.1,正样本最低也要高于负样本0.1
s:正样本分数
t:负样本分数 -
logistic loss:边存在的概率
相连边:
不存在的边: -
Softmax loss:
其他
- 节点之间可以有多种关系
- 一条边的左右两个节点可以是同一个
- 每条边只代表一种关系
- 边通常是有向的,在无向图中,使用双向箭头表示
- 训练集中的边都是正样本,在训练时,通过负采样得到负样本,这些负样本,来自固定左边节点和边,随机采样右边的节点构成的(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
网友评论