Summary I’ll write the summary in reverse compared to the article: At some point, we want systems that are capable of “multi-level” world modeling. They should take a complicated world, and spit out multi-level models with layers of abstraction for pieces in that world. Some of these models should also be “variations” of “template” models, and so the outputs should facilitate such an operation. Finally, the output should re-use lower-level models to account for the hierarchical structure of the world. It turns out that causal models are the correct output structure for this: “variations” of “templates” can be built with the do()-operator. And the local functions in a causal model can also “under the hood” call lower-level causal models themselves. Finally, the article presents a way of representing causal models that better captures the hierarchical and mechanistic nature of the situation. Causal models are thereby replaced by “clunks” in a “clunctional” programming language that combines classes with functions. Inside “clunks”, other clunks can be called, and variations can be run with a do()-operator. Random variables in clunks are allowed and provide new random samples whenever the clunk is run.
My Opinion: This is a cool article! What I especially like about the viewpoint that causal models should be “written” like programs is that it emphasizes that objects in the world do things, instead of just “being”: when encountering causal bayesian networks for the first time, people often notice that there doesn’t seem to be a difference to pure probabilistic Bayesian networks except for the word “causal” that is attached to it. The clunc-representation re-emphasizes that causal models model actual functions in the real world, and that these functions are built in a hierarchical way.
Summary
I’ll write the summary in reverse compared to the article:
At some point, we want systems that are capable of “multi-level” world modeling. They should take a complicated world, and spit out multi-level models with layers of abstraction for pieces in that world. Some of these models should also be “variations” of “template” models, and so the outputs should facilitate such an operation. Finally, the output should re-use lower-level models to account for the hierarchical structure of the world.
It turns out that causal models are the correct output structure for this: “variations” of “templates” can be built with the do()-operator. And the local functions in a causal model can also “under the hood” call lower-level causal models themselves.
Finally, the article presents a way of representing causal models that better captures the hierarchical and mechanistic nature of the situation. Causal models are thereby replaced by “clunks” in a “clunctional” programming language that combines classes with functions. Inside “clunks”, other clunks can be called, and variations can be run with a do()-operator. Random variables in clunks are allowed and provide new random samples whenever the clunk is run.
My Opinion:
This is a cool article! What I especially like about the viewpoint that causal models should be “written” like programs is that it emphasizes that objects in the world do things, instead of just “being”: when encountering causal bayesian networks for the first time, people often notice that there doesn’t seem to be a difference to pure probabilistic Bayesian networks except for the word “causal” that is attached to it. The clunc-representation re-emphasizes that causal models model actual functions in the real world, and that these functions are built in a hierarchical way.