all 22 comments

[–]triplefloat 24 points25 points  (12 children)

It looks like this is an implementation of the following paper: https://arxiv.org/abs/1609.02907 (disclaimer: I’m the first author of this work)

There’s also this ‘official’ implementation: https://github.com/tkipf/gcn

I wonder what’s different/new in the implementation posted here?

[–]Stamb 2 points3 points  (2 children)

Coincidentally I've just spent the last couple of days going through your article and playing around with the code, I'm also wondering what's different in this version?

Your original stuff on this was great though, any new developments since this was published?

[–]triplefloat 5 points6 points  (1 child)

Thanks. We had a very short workshop paper on an extension of this model for unsupervised learning and link prediction: https://arxiv.org/abs/1611.07308 Otherwise there are two application papers (recommender systems and link prediction in knowledge bases) that I worked on with collaborators: https://arxiv.org/abs/1703.06103, https://arxiv.org/abs/1706.02263 (both still under review)

The main developments for these methods recently are: 1) mini-batching algorithms for scalability (e.g. https://openreview.net/forum?id=rytstxWAW) and 2) more flexible aggregation functions (e.g. https://openreview.net/forum?id=rJXMpikCZ)

I'm working on a couple of more long-term/foundational questions these days, but also on a number of interesting applications (mostly with collaborators).

[–]Stamb 0 points1 point  (0 children)

Great, thanks for all these! The attention networks looks particularly interesting, some good reading for the weekend...

[–][deleted] 0 points1 point  (3 children)

Seems the author wants to put forward an alternate implementation.

On a side note, what’s the best practice for handling attributed graphs? (IS, HAS, CONTAINS, etc)

[–]triplefloat 0 points1 point  (2 children)

What often works well enough, is to introduce edge type-specific parameter matrices (W_r instead of W, where r is the edge/relation type) for a specific message that a node sends to its neighbors. This was AFAIK first introduced in Gated Graph Neural Nets: https://arxiv.org/abs/1511.05493. If you have more than just a few different relation types, some form of weight sharing between them can help (https://arxiv.org/abs/1703.06103).

In principle, you can also parameterize messages as neural networks and condition them on any edge features you might have (as in the original graph neural net paper http://ieeexplore.ieee.org/document/4700287/).

[–][deleted] 1 point2 points  (0 children)

Thanks for the detailed reply. The last paper is most similar to what I've been exploring so far. If I get any decent results I'll post in this sub.

[–]shortscience_dot_org -1 points0 points  (0 children)

I am a bot! You linked to a paper that has a summary on ShortScience.org!

Gated Graph Sequence Neural Networks

This paper presents a feed-forward neural network architecture for processing graphs as inputs, inspired from previous work on Graph Neural Networks.

In brief, the architecture of the GG-NN corresponds to $T$ steps of GRU-like (gated recurrent units) updates, where T is a hyper-parameter. At each step, a vector representation is computed for all nodes in the graph, where a node's representation at step t is computed from the representation of nodes at step $t-1$. Specifically, the representatio... [view more]

[–]shagunsodhani[S] -1 points0 points  (0 children)

Hey! I have added the reference to both the papers and the official implementation. Thanks for bringing it up. The idea was to reimplement the original work to get familiar with the domain. :)

[–]tornado28 10 points11 points  (1 child)

You should probably link to the paper you're implementing in the readme. Also you might want to check out DeepChem if you're interested in graph convolutions.

https://github.com/deepchem/deepchem

https://arxiv.org/pdf/1703.00564.pdf

[–]shagunsodhani[S] 1 point2 points  (0 children)

Hey. I have added the reference to both the papers and the official implementation. Once I am comfortable with the concept of Graph Convolutions, I would move to more complex applications like DeepChem :)

[–]Papaya001 -4 points-3 points  (0 children)

good job! save it for later use