alibaba / euler

A distributed graph deep learning framework.
Apache License 2.0
2.89k stars 559 forks source link

请教下为啥无监督类的训练用两个网络分别encoder这么设计? #253

Open lixusign opened 4 years ago

lixusign commented 4 years ago

当前看walk系列的算法包括hne 都是 src encoder一个网络, pos、negs encoder一个网络。这么做的好处是啥,为啥不用一个网络? 可以用一个网络吗?

另外如果这么设计我可不可以用,pos&negs的网络参数作为emb的结果,话说这俩网络原理上啥区别?

alinamimi commented 4 years ago

可以用一个,可以用两个,只是我们这边实验用两个网络效果更好,两个网络分别学习不同场景下的encoder

lixusign commented 4 years ago

请问 "两个网络分别学习不同场景下的encoder" 怎么理解? 我看导出emb的时候,是走的src的网络,可以走pos&negs的网络吗? 具体出来的emb 直观上两个网络有啥感受上的区别,比如近邻关系的区别?

其实这里面有个问题: 比如我图规模比较大,我做反向传播的时候,用hashembedding加速lookup的过程,这样在反向传播的过程中hash的key还没有,需要实时insert 这样就学习不到那些。所以效果可能不好。

2个网络稠密的variable存储规模大了一倍。

alinamimi commented 4 years ago

node做为src时候的Encoder和作为pos&neg时的Encoder可能是不同的。infer的时候可以用pos&neg的Embedding,需要改一下代码。具体用一个还是两个取决于具体场景和算法

lixusign commented 4 years ago

小白求介绍下经验呗,代码我改了,但感觉还是得测效果说话,原理上感觉在一个基坐标下的emb都可以作为最终的emb。 这块“具体用一个还是两个取决于具体场景和算法” 求举个栗子🌰

alinamimi commented 4 years ago

简单的话,你就都尝试一下,哪个效果好用哪个

lixusign commented 4 years ago

我个人理解的是 异构网络 可能走src的emb 更好一点,因为有各种边的att, 同构网络 走pos&nges的网络就可以