The representation learning is one of the most wonderful ideas in whole of the deep learning. One of the most exciting applications of the representation learning is the field of embedding learning for knowledge graph models using various probabilistic compositional approaches. The inspiration was to implement most of the state of the art algorithms for learning knowledge graph embedding in PyTorch and to benchmark the results over standard datasets.
What it does
It provides a complete end to end pipeline of the learning process and facilitate with a clean interface in terms of implementation of the training code. You can choose from different state of the art models like ComplEx, HOLE, QuatE etc. and experiment with them in your own project.
How I built it
I built it using PyTorch backend and referred to a number of papers in this field of knowledge graph embedding learning. The most exciting work which heavily influenced my ideas was from Maximilian Nickel, who proposed a method for learning embedding in non-euclidean background geometry (precisely hyperbolic geometry) and how these can capture more exotic hierarchical pattern in the knowledge base.
Challenges I ran into
Some of the challenges I faced was to learn about differential geometry and to get my head around the concept of non-euclidean geometry but later I ended up learning a sufficient amount of it which really influenced the way I perceive everything and particularly geometry (was really shocked that two parallel lines can intersect !).
Accomplishments that I'm proud of
The only accomplishment I am proud of is the amount of knowledge I gained in both the fields, deep learning and mathematics. I really felt proud when I was able to complete the project in time.
What I learned
As described above I learned a lot of new concepts like representation learning, knowledge bases and their entity-relation embedding, differential geometry and topology and even PyTorch which I did not knew very well before.
What's next for KG-Embedding Learning in PyTorch
The project is completed which currently supports four models but I look forward to implement some of my own ideas related to the problem and play around with it. Apart from it, the repository is open and any constructive contribution from the community is most welcome.