In this post I want to highlight a small puzzle for causal theories of mechanistic interpretability. It purports to show that causal abstractions do not generally correctly capture the mechanistic nature of models.
Consider the following causal model M:
Assume for the sake of argument that we only consider two possible inputs: (0,0) and (1,1), that is, X1 and X2 are always equal.[1]
In this model, it is intuitively clear that X1 is what causes the output X5, and X2 is irrelevant. I will argue that this obvious asymmetry between X1 and X2 is not borne out by the causal theory of mechanistic interpretability.
Consider the following causal model M∗:
Is M∗ a valid causal abstraction of the computation that goes on in M? That seems to depend on whether Y1 corresponds to X1 or to X2. If Y1 corresponds to X1, then it seems that M∗ is a faithful representation of M. If Y1 corresponds to X2, then M∗ is not intuitively a faithful representation of M. Indeed, if Y1 corresponds to X2, then we would get the false impression that X2 is what causes the output X5.
Let’s consider the situation where Y1 corresponds to X2. Specifically, define a mapping between values in the two models
τ(x1,x2,x3,x4,x5)=(τ1(x1,x2),τ2(x3,x4),τ3(x5))
with
τ1(x1,x2)=x2τ2(x3,x4)=x3τ3(x5)=x5,
such that Y1 corresponds to X2, Y2 corresponds to X3, and Y3 corresponds to X5. How do we define whether M∗ abstracts M under τ? The essential idea is that for every single-node hard intervention i on intermediary nodes in the high-level model M∗, there should be an implementation Imp(i) of this intervention on the low-level model such that [2]
That M∗ is a valid causal abstraction of M under τ shows that the notion of causal abstraction, as I have formalized it here, does not correctly capture the computation that happens on the low level (and I claim that the same is true for similar formalizations, for example, Definition 25 in Geiger et al. 2025). Indeed, if the range of (X1,X2) is extended such that (X1,X2)∈{0,1}2, we would now make a wrong prediction if we use M∗ to reason about M, for example, because M∗(τ1(1,0))=(0,0,0)≠(0,1,1)=τ(M(1,0)).
One might object that as long as the range of (X1,X2) is {(1,1),(0,0)}, M∗ should indeed be considered a valid abstraction of M under τ. After all, the two models are extensionally equivalent on these inputs, that is,
I think this objection misses the mark. The goal of mechanistic interpretability is to understand the intensional properties of algorithms and potentially use this understanding to make predictions about extensional properties. For example, if you examine the mechanisms of a neural network and find that it is simply adding two inputs, you can use this intensional understanding to make a prediction about the output on any new set of inputs. In our example, M∗ and τ get the intensional properties of Mwrong, incorrectly suggesting that it is X2 rather than X1 that causes the output. This incorrect intensional understanding leads to a wrong prediction about extensional behavior once the algorithm is evaluated on a new input not in {(0,0),(1,1)}. While I have not argued this here, I believe that this puzzle cannot be easily fixed, and that it points towards a fundamental limitation of the causal abstraction agenda for mechanistic interpretability, insofar as the definitions are meant to provide mechanistic understanding or guarantees about behavior.
Thanks to Atticus Geiger and Thomas Icard for interesting discussions related to this puzzle. Views are my own.
Small foundational puzzle for causal theories of mechanistic interpretability
In this post I want to highlight a small puzzle for causal theories of mechanistic interpretability. It purports to show that causal abstractions do not generally correctly capture the mechanistic nature of models.
Consider the following causal model M:
Assume for the sake of argument that we only consider two possible inputs: (0,0) and (1,1), that is, X1 and X2 are always equal.[1]
In this model, it is intuitively clear that X1 is what causes the output X5, and X2 is irrelevant. I will argue that this obvious asymmetry between X1 and X2 is not borne out by the causal theory of mechanistic interpretability.
Consider the following causal model M∗:
Is M∗ a valid causal abstraction of the computation that goes on in M? That seems to depend on whether Y1 corresponds to X1 or to X2. If Y1 corresponds to X1, then it seems that M∗ is a faithful representation of M. If Y1 corresponds to X2, then M∗ is not intuitively a faithful representation of M. Indeed, if Y1 corresponds to X2, then we would get the false impression that X2 is what causes the output X5.
Let’s consider the situation where Y1 corresponds to X2. Specifically, define a mapping between values in the two models
τ(x1,x2,x3,x4,x5)=(τ1(x1,x2),τ2(x3,x4),τ3(x5))with
τ1(x1,x2)=x2τ2(x3,x4)=x3τ3(x5)=x5,such that Y1 corresponds to X2, Y2 corresponds to X3, and Y3 corresponds to X5. How do we define whether M∗ abstracts M under τ? The essential idea is that for every single-node hard intervention i on intermediary nodes in the high-level model M∗, there should be an implementation Imp(i) of this intervention on the low-level model such that [2]
∀(x1,x2)∈{(0,0),(1,1)} : τ(MImp(i)(x1,x2))=M∗i(τ1(x1,x2))).
Imp(do(nothing))=do(nothing)Imp(do(Y2:=y))=do(X3:=y),Let us be explicit about the implementations of interventions:
for y∈{0,1}. Now, we can check that the abstraction relationship holds. For example:
τ(MImp(do(Y2=1))(0,0))=τ(0,0,1,0,1)=(0,1,1)M∗do(Y2=1)(τ1(0,0))=M∗do(Y2=1)(0)=(0,1,1).That M∗ is a valid causal abstraction of M under τ shows that the notion of causal abstraction, as I have formalized it here, does not correctly capture the computation that happens on the low level (and I claim that the same is true for similar formalizations, for example, Definition 25 in Geiger et al. 2025). Indeed, if the range of (X1,X2) is extended such that (X1,X2)∈{0,1}2, we would now make a wrong prediction if we use M∗ to reason about M, for example, because M∗(τ1(1,0))=(0,0,0)≠(0,1,1)=τ(M(1,0)).
One might object that as long as the range of (X1,X2) is {(1,1),(0,0)}, M∗ should indeed be considered a valid abstraction of M under τ. After all, the two models are extensionally equivalent on these inputs, that is,
τ(M(1,1))=(1,1,1)=M∗(τ1(1,1)),τ(M(0,0))=(0,0,0)=M∗(τ1(0,0)).I think this objection misses the mark. The goal of mechanistic interpretability is to understand the intensional properties of algorithms and potentially use this understanding to make predictions about extensional properties. For example, if you examine the mechanisms of a neural network and find that it is simply adding two inputs, you can use this intensional understanding to make a prediction about the output on any new set of inputs. In our example, M∗ and τ get the intensional properties of Mwrong, incorrectly suggesting that it is X2 rather than X1 that causes the output. This incorrect intensional understanding leads to a wrong prediction about extensional behavior once the algorithm is evaluated on a new input not in {(0,0),(1,1)}. While I have not argued this here, I believe that this puzzle cannot be easily fixed, and that it points towards a fundamental limitation of the causal abstraction agenda for mechanistic interpretability, insofar as the definitions are meant to provide mechanistic understanding or guarantees about behavior.
Thanks to Atticus Geiger and Thomas Icard for interesting discussions related to this puzzle. Views are my own.
Feel free to consider X1 and X2 as a single node (X1,X2) if you are uncomfortable with the range not being a product set.
Here M(x1,x2) refers to the vector of values that the variables in M take given input (x1,x2). For example, M(1,1)=(1,1,1,1,1).