代码实现将预测的关系信息加入了训练
您好,PathCon这个工作十分的有意义!我很感兴趣! 在复现代码是,我发现代码实现中在model.py的line 106,待预测的关系被加入了edge_list,然后在line 170,当hop=0,i=0时,待预测的关系将会被当作self_vector被聚合,也就是在训练的时候就使用到的待预测的关系信息,但是理论上不应该有这样的信息进入模型训练?请问是这样吗?
您好,感谢您对我们工作的兴趣!在model.py的71行有定义一个mask_list,它是在118-120行计算的,用途就是把当前的待预测的关系从计算中排除(aggregators.py的第32行)。所以模型是看不到待预测的边的信息的。谢谢!
非常感谢您的回答!但是我发现mask_list只对neighbor做了mask运算(aggregators.py的第32行),没有对self_vector做mask运算,那么当hop=0,i=0的时候,待预测的关系将会被当作self_vector参与运算,作为公式11的$s^i$,如(aggregators.py的第92行),再次感谢您的解答!
是的,待预测的边本身也会一直在计算和更新自己的embedding。但是注意到:1. 它不会被其它边当成是自己的邻居,所以它不会影响其它边的计算;2. 待预测的边在最后一个GNN里面是不会参与运算的,model.py的123-148行里面,最后一层GNN的self_included都是False,这表明最后一层的GNN不会把边自己的embedding考虑进来,所以待预测的边虽然一直在更新自己的embedding,但是最后一次GNN的时候,模型只考虑了head和tail两个节点的embedding来去预测。
明白啦!再次谢谢您的用心回答!