DeepProbLog: Neural Probabilistic Logic Programming
Robin Manhaeve, Sebastijan Dumančić, Angelika Kimmig, Thomas Demeester, Luc De Raedt
DTAI, KU Leuven (BLG)
Probabilistic reasoning & High representational power
Probabilistic reasoning & High representational power
Why not merge the two?
ProLog
ProLog
Logic programming language, defines:
burglary. | hears_alarm(mario). | alarm :- earthquake. |
earthquake. | hears_alarm(gianna). | alarm :- burglary. |
| calls(X) :- alarm, hears_alarm(X). | |
ProLog tasks: Inference
Is a given clause h :- b1, …, bi true?
Two key elements:
Top-down inference: an example
burglary. |
hearthquake. |
hears_alarm(mario). |
hears_alarm(gianna). |
alarm :- earthquake. |
alarm :- burglary. |
calls(X) :- alarm, hears_alarm(X). |
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
|
&
Pro(b)Log
Now with probabilities
ProbLog
Prolog, with probabilities!
0.1::burglary. | 0.5::hears_alarm(mario). | alarm :- earthquake. |
0.2::earthquake. | 0.4::hears_alarm(gianna). | alarm :- burglary. |
| calls(X) :- alarm, hears_alarm(X). | |
ProbLog tasks: Inference
Is a given clause h :- b1, …, bi true?
[1] SDD: A new canonical representation of propositional knowledge bases Darwiche and Marquis, IJCAI 2011
* http://bit.ly/2pO9W6m
Top-down inference: an example
0.1::burglary. |
0.2::earthquake. |
0.5::hears_alarm(mario). |
0.4::hears_alarm(gianna). |
alarm :- earthquake. |
alarm :- burglary. |
calls(X) :- alarm, hears_alarm(X). |
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
|
&
0.2
0.1
0.5
Top-down inference: an example
0.1::burglary. |
0.2::earthquake. |
0.5::hears_alarm(mario). |
0.4::hears_alarm(gianna). |
alarm :- earthquake. |
alarm :- burglary. |
calls(X) :- alarm, hears_alarm(X). |
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
|
&
0.2
0.1
0.5
0.3
Top-down inference: an example
0.1::burglary. |
0.2::earthquake. |
0.5::hears_alarm(mario). |
0.4::hears_alarm(gianna). |
alarm :- earthquake. |
alarm :- burglary. |
calls(X) :- alarm, hears_alarm(X). |
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
|
&
0.2
0.1
0.5
0.3
0.15
(a)Pro(b)Log
Now with semirings
Algebraic ProbLog2
Associate each element in a ProbLog program with a semiring element.
[2] An Algebraic Prolog for Reasoning about Possible Worlds�Kimmig et al, AAAI 2011
(A, ⊕, ⊗, 0⊕, 0⊗)
Gradient semiring
Credit assignment on premises:
Gradient => Differentiable!
Gradient semiring: AND
Gradient semiring: OR
Gradient semiring: an example
0.1::burglary. |
0.2::hearthquake. |
0.5::hears_alarm(mario). |
0.4::hears_alarm(gianna). |
alarm :- earthquake. |
alarm :- burglary. |
calls(X) :- alarm, hears_alarm(X). |
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
|
&
0.2
0.1
0.5
0.3
0.15
<0, 1.0, 0>
<1.0, 0, 0>
Gradient semiring: an example
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
0.2
0.1
0.5
0.3
0.15
-
-
???
<0, 0, 1.0>
⊕
???
-
⊗
target clause
gradient
probability
<0, 1.0, 0>
<1.0, 0, 0>
Gradient semiring: an example
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
0.2
0.1
0.5
0.3
0.15
-
-
<0.1, 0.2, 0>
<0, 0, 1.0>
⊕
-
target clause
gradient
probability
???
⊗
<0, 1.0, 0>
<1.0, 0, 0>
Gradient semiring: an example
calls(mario)
alarm
hears_alarm(mario)
earthquake
burglary
0.2
0.1
0.5
0.3
0.15
-
-
<0.1, 0.2, 0>
<0, 0, 1.0>
⊕
-
target clause
gradient
probability
⊗
<0.5, 0.5, 0.3>
Neural (differentiable) predicates
Gradient opens the door for differentiable predicates!
Neural predicates on probabilistic differentiable models:
nn(M, x, Y)
Neural (differentiable) predicates
Gradient opens the door for differentiable predicates!
Neural predicates on probabilistic differentiable models:
nn(M, x, Y)
nn(ResNet, , {0, .. 9})
Experiments
Finally no more ProLog
Tasks
Addition
Learn sum of two numbers: ProbLog vs Differentiable model
Sorting
Learn step of bubble sort: DeepProbLog vs Differentiable Forth
Take-home messages