源链接:https://torchbiggraph.readthedocs.io/en/latest/scoring.html
Embeding 训练的目标是将每个实体嵌入到R空间中,并且让两个实体的嵌入能很好地预测他们之间是否存在某种特定的关系。
更准确地说,训练的目标是为每个实体学习嵌入并为每个关系类型学习一个函数。函数接受两个实体嵌入,为它们分配一个分数。函数主要是为了让相关实体比不相关实体能获得更高的分数。
训练集中提供的所有边都被视为正实例。为了进行训练,还需要一组负边。这些负边不是由用户提供的,而是由系统在培训期间生成的(参见见负抽样),通常通过固定左侧实体和关系类型并抽样一个新的右侧实体,反之亦然。这种抽样方案在大型稀疏图是合理的,因为这样生成的边在图中是真正边的概率很低。
通常来说,实体嵌入可以在R空间中取任何值。但是,在某些情况下(例如,当限制它们在某个球内时,或者当使用余弦距离比较它们时),它们的“角度”将比它们的范数更重要。
每个关系评分函数必须以特定的形式表示(文献中最常见的功能可以转换为这种表示)。在当前的实现中,只允许对其中一个边的嵌入进行转换,然后使用通用的对称比较器函数将其与另一个边的未转换嵌入进行比较,这对于所有关系都是相同的。形式上,对于左侧实体x和右侧实体y,以及对于关系类型r,得分为:fr(θx,θy)=c(θx,gr(θy)).其中θx和θy分别是x和y的嵌入,fr是r的得分函数,gr是r的操作器,c是比较器。
在“正常”情况下(所谓的“标准”关系模式),运算符仅应用于右侧实体。使用动态关系时不是这样。将运算符应用于两侧通常是多余的。另外,与另一侧相比,首选一侧可以打破对称性并捕捉边缘的方向。
Embeddings 嵌入
嵌入表示存在在D维真实空间中,其中D由维度配置参数确定。通常,每个实体都有自己的嵌入,这完全独立于任何其他实体的嵌入。当使用特征化实体的方法不同,是实体的嵌入将是其特征嵌入的平均值。
如果设置了max_norm配置参数,则每次参数更新后,嵌入将以半径max_norm投影到单位球上。
如果要添加新的嵌入类型,需要实现torchbigraph.model.abstractEmbedding类的子类。
Global embeddings 全局嵌入
当global_emb配置参数被激活,每个实体嵌入通过一个特定的实体类型向量(与嵌入同时学习)来转化。
Operators 操作器
none,无操作,使嵌入保持不变;
translation, 平移,增加了嵌入相同维的向量;
diagonal, 对角线,将每个尺寸乘以不同的系数(相当于乘以对角线矩阵);
linear, 线性,应用线性映射,即乘以一个全平方矩阵。
affine, 仿射,应用仿射变换,即线性后接translation。
complex_diagonal, 复数_对角线,它将D-维实向量解释为D/2维复向量(D必须是偶数;向量的前半部分是实向量,后半部分是虚向量),然后将每个条目乘以不同的复杂参数,就像diagonal一样。
所有操作器的参数是在训练中学得的。
如果要自定义操作器,我们需要实现torchbiggraph.model.AbstractOperator的子类(在动态关系情况下实现torchbiggraph.model.AbstractDynamicOperator子类,docstrings解释了必须实现什么)并且在torchbiggraph.model.register_operator_as()装饰器中注册(或者torchbiggraph.model.register_dynamic_operator_as())指定一个新名称,然后在配置中使用该名称来选择比较器。上述所有操作都可以在配置文件内部完成。
Comparators 比较器
可用的比较器有:
dot,点积,计算两个嵌入向量的标量或内积;
cos,cos距离,是两个向量之间夹角的余弦,或等于点积除以向量范数的乘积。
l2,负的l2距离,也就是欧几里得距离(负是因为较小的距离会得到较高的分数)。
squared_l2,负平方L2距离。
自定义比较器需要实现torchbiggraph.model.AbstractComparator 子类并且在torchbiggraph.model.register_comparator_as()装饰器中注册,指定一个新名称,然后在配置中使用该名称来选择比较器。上述所有操作都可以在配置文件内部完成。
Bias 偏置
如果使用了bias 配置,那么嵌入的第一个坐标将作为比较器计算中的偏差。这意味着比较器将仅根据向量的最后一个D-1条目进行计算,然后将两个向量的第一个条目都添加到结果中。
Coherent sets of configuration parameters 相关配置集
本章中描述的参数在配置文件中集中显示(为了更接近实现,并允许更灵活的调优),但它们的某些组合比其他组合更优。
除了默认配置外,还发现以下的配置效果较优:init_scale = 0.1, comparator = dot, bias = true, loss_fn = logistic, lr = 0.1.
Interpreting the scores 分值解释
在训练过程中,不同的应用会基于不同的损失函数,这让得到的分值有不同的解释。常见的包括对和实体有关联关系的实体排序,确定两个给定实体之间存在某种关系的概率等。
Todo:
讨论如何使用训练好的嵌入(例如,计算P(edge)、k-最近邻(k-nearest-neighbors),或基于特征进行训练下游分类器)。同事,如果有一个小脚本,给它一个边它可以输出一个分数或者近似的工具,那就太好了。