Graphs with long paths/tails

Hello,

Has anyone dealt with situations where graphs have long “tails”? 10%20AM

Especially when you know that the node containing the most important information is at the very end (5802 in this example)? It’s a graph classification task, so would the best way to handle cases like this to train graph networks with deeper layers?

I’d really appreciate any insight!

Hi,

You can trying pooling based method such as diffpool. We provided one example at https://github.com/dmlc/dgl/tree/master/examples/pytorch/diffpool

1 Like

Well, there are many approaches, DiffPool mentioned by @VoVAllen is one of them.

It depends on your scenario, if the node at the very end itself matters, I think a max_pooling like layer is enough to handle this, because pooling treat all nodes equivalently.

But, if the interaction between the node at the very end and other nodes (like the 11889 in your figure) matters, you’d better explicitly model the interactions between them: for example, add edges between them, use diffpool, stack many layers to enable message passing between them, apply a self-attention on all nodes in the graph following the convolution, add a summary node that interacts with all nodes, and so on.

Thank you!
Are all those approaches you mentioned (diffpool, add more edges, deeper layers, self-attention, summary node) compatible?

I am not sure actually :slight_smile: , you are welcomed to try.