Scallop: A Neurosymbolic Programming Language
scallop-lang.github.io
scallop-lang.github.io
Anybody familiar with the space have pointers to good introductory material on this field? Or terms to search on to get at current work - differentiable logic?
Other than that, here are some names of people working in this field that you might be able to find representative work from:
- Mayur Naik, UPenn (whose group I think were behind Scallop?) - Swarat Chaudhuri (and maybe also Isil Dillig), UT Austin - Luc de Raedt, KU Leuven (whose earlier work on Statistical Relational AI is very similar to the Scallop style of neurosymbolic work - I think there's a good textbook available on this) - Guy van den Broeck, UCLA - Armando Solar-Lezama, MIT
If you're more interested in the logic side of things then maybe some of MIRI's (https://intelligence.org/) older work may be of interest.
There's also a lot of people who are interested in neuro-symbolic stuff in the wider sense. You can find out more here: http://www.neurosymbolic.org/index.html. If you sign up for the mailing list, there are monthly (or bi-monthly? I can't remember) talks that are open to the public. You can even find recordings of past talks on Armando Solar-Lezama's youtube channel.
Hope this helps!
I think I found a full preprint on the authors site (pdf) https://www.cs.utexas.edu/~swarat/pubs/PGL-049-Plain.pdf
> in the Prolog family
> Scallop is a full-fledged logic programming language based on Datalog [...] a logic rule-based query language for relational databases. [...] Scallop is a scalable Datalog solver equipped with support for discrete, probabilistic, and differentiable modes of reasoning
https://www.youtube.com/watch?v=HhymId8dr5Q
This seems to be literally the future. What am I missing?
The underlying big idea, as quoted from the medium article:
They posit that humans are born with a pre-programmed rough understanding of the world, in some ways analogous to the game engines used to build interactive immersive video games. This “game engine in the head” provides the ability to simulate the world and our interactions with it, and serves as the target of perception and the world model that guides our planning.
Crucially, this game engine learns from data, starting in infancy, to be able to model the actual situations — the endless range of “games” — we find ourselves in. It is approximate yet gets more and more efficient — to the point that very quickly, humans make instant mental approximations that are good enough to thrive in the world. And, the researchers think, it’s possible to replicate this type of system in a machine by embedding ideas and tools from game engine design inside frameworks for neurosymbolic AI and probabilistic modeling and inference known as probabilistic programs.
I wish it would be clear on which platforms does it run, because for its description I can only read about python's integration, which is great, but not sure whether I could run a "client" on javascript devices or C embedded and communicate to a Scallop backend that speaks python.
I hope to read more about it the following months
edit: typo
Seems to be MacOS (M1 and x86) and Linux x86.
From what I can see on the Scallop website, the focus is on vision and NLP.
So both are similar approaches combining deep learning with symbolic reasoning (and both are based in Datalog) but the problems they are tackling are quite different. Also, both approaches have made it to top conferences like NeurIPS and ICLR, so I guess this field is gaining momentum.
``` node2(X) <= W node1(Y), edge(X, Y) ```
Do you know, is it possible to implement something on Scallop as well, or are the differences much larger?
It is explained in the paper "Beyond Graph Neural Networks with Lifted Relational Neural Networks" (https://arxiv.org/abs/2007.06286) and you also have a series of blog posts at https://medium.com/@sir.gustav
It just seems like such a lovely little language, but prologs are. It is pretty damn great to be able to attach probabilities to things and prolog away.
There’s a PyTorch example here: https://scallop-lang.github.io/tutorial.html#section-10