uoguelph-mlrg / LDG

PyTorch code for "Learning Temporal Attention in Dynamic Graphs with Bilinear Interactions"
https://arxiv.org/abs/1909.10367
Other
98 stars 24 forks source link

What is Bilinear DyREP? #4

Closed ZifengDing closed 4 years ago

ZifengDing commented 4 years ago

Hi,

I have read your paper and code. I noticed that in Table 2 of your paper, you have result of DyREP with "linear" and "bilinear". What exactly it means?

As I understand from your code and paper, DyREP needs ground truth graphs (adjacency matrices) as we train. When you use bilinear encoder, you do not need these ground truth graphs anymore, and it will become your LDG model. So what is Bilinear DyREP? Does it use ground truth graphs or not? And how can I run this bilinear DyREP experiment with your code on GitHub?

I am going to take your work as the baseline of my research, so it is very important for me to figure out this question. Of course, I will definitely cite your paper :)

bknyaz commented 4 years ago

Hi, thanks for your questions! Basically, linear vs bilinear is not related to using or not using the ground truth (GT) adjacency matrix. By linear we assume a matrix product w[z1,z2], where [,] is concatenation like in Eq. 12 and by bilinear we assume z1W*z2, like in Eq. 13. There's a typo in Eq. 13 (there should not be lowercase omega there), and we will update the arXiv paper soon with additional experiments.

So you can notice in Table 2 that we can use a linear (eq.12) or bilinear (eq.13) form for DyRep and for our LDG model. So both Linear and Bilinear DyRep are using the GT graph. Both Linear and Bilinear LDG are not using the GT graph. When we use blinear LDG, in addition to eq.13, we also use the bilinear form in eq.7-10. Linear LDG uses concatenation both in eq.13 and eq.7-10.

To run the bilinear DyRep on Github: python main.py --dataset github --data_dir ./Github --bilinear

ZifengDing commented 4 years ago

Thanks for the reply. That makes sense. To confirm, for your bilinear DyREP test, you only changed eq. 12 to eq. 13, and didn't use any encoder as stated in eq. 7-10. And for linear DyREP, it is just the vanilla DyREP with eq.12 as its intensity function. Only LDGs are using encoders (eq. 7-10). I guess if I want to run bilinear DyREP on social evolution, I should use: python main.py --log_interval 300 --data_dir ./SocialEvolution/ --bilinear

bknyaz commented 4 years ago

That's right.

bknyaz commented 4 years ago

Just FYI, we have updated the arXiv version with more results/details. https://arxiv.org/abs/1909.10367