far.in.net


~Understanding epiplexity

Resource-bounded algorithmic information theory

Everyone seems to be talking about the paper by Finzi et al. (2026), “From Entropy to Epiplexity: Rethinking Information for Computationally Bounded Intelligence.” I finally got around to studying it this week.

In this short technical note, I discuss the theoretical definition of epiplexity from a computer science perspective, work through some of the basic examples and properties from the paper in a slightly generalised setting, and then explore various examples of my own.

Disclaimer: This note will be exclusively focused on the formal theoretical framework of defining epiplexity within a minimum description length framework, as a kind of successor to (algorithmic) information theory. There is a whole second side of this paper that is about applying this framework as a lens on deep learning “paradoxes” and phenomena. I am still reading that part, I might write some thoughts on it later, but I won’t discuss it in this note.

Acknowledgements: Thanks to Joan Velja and Lennie Wells for helpful discussions.

Word count: 5625

Contents:

§Defining epiplexity

Epiplexity is billed as “the structural content in data,” a complexity or information measure that excludes any information that appears to be randomness to a learner/observer with limited computational resources. That sounds useful, let’s see how it’s formalised.

§§Setting and overview

Let’s view the data as a binary random variable X{0,1}nX \in \{{\tt 0},{\tt 1}\}^{n} for some fixed number of bits nNn \in \mathbb{N}. This random variable has some probability distribution, call it QΔ({0,1}n)Q \in \Delta(\{{\tt 0},{\tt 1}\}^{n}).

The way I see it, there are two core motivating ideas behind epiplexity:

  1. The first idea is that there might be some “structure” in the distribution QQ leading to patterns in XX that render some of the bits predictable in terms of others. It would be nice to be able to quantify how much of XX is predictable based on these kinds of patterns, versus unpredictable entirely.

    The paper’s approach is broadly to consider compressing XX in two parts: first encoding a program representing a probability distribution, and second encoding XX itself with the optimal coding scheme for that probability distribution. If program is well-chosen this could be cheaper than coding XX’s bits directly, and we can call the bits spent on coding the program structural information (the remaining bits are a kind of entropy).

  2. The second idea is that some patterns in XX that could be used to more efficiently compress it in principle might in practice be out of reach for an observer with computational limits. For example, a cryptographically secure PRNG emits very structured data (in fact it’s deterministic) and this structure is easy enough to describe with a short program, but the fastest program to exploit this structure to design a coding scheme is going to have an unreasonably long run-time.

    The paper’s response is to repeat step (1) but considering only programs that fit within a particular computational budget (specifically, a time complexity budget).1 The epiplexity is the length of the shortest efficient program that encodes a probability distribution used in an optimal coding scheme, where optimality is judged among coding schemes based only on other efficient-program-based probability distributions. If the time budget doesn’t allow detecting a cryptographically secure PRNG, then its output bits may as well be random, and will contribute to the (time-bounded) entropy, rather than the epiplexity.

Epiplexity is short for “epistemic complexity,” with “epistemic” indicating the definition is relative to the observer’s resource constraints.

That was fast—let’s go through it again in much more detail.

§§Computable probability distributions

Let’s formalise what it means for a program to represent a probability distribution. The two fundamental operations an observer might want to use to interact with a probability distribution are sampling (useful for generation) and density estimation (useful for computing cross entropy training loss and designing optimal codes).

Fix a prefix-free universal Turing machine UU.2 Then, a (computable) probabilistic model on {0,1}n\{{\tt 0},{\tt 1}\}^{n} is any program P{\tt P} for UU that supports access to a probability distribution via these two fundamental operations.

Of course, we also require that the two operations match in terms of the underlying probability distribution, that is, for all x{0,1}nx \in \{{\tt 0},{\tt 1}\}^{n}, PP(x)=PP(x). P_{{\tt P}}(x) = \mathbb{P}_ {\tt P}(x).

Note that there are three P symbols floating around:

  1. P{\tt P} is a program for our universal Turing machine, specifically a computable probabilistic model. It’s a binary string. (The paper uses the notation P\mathrm{P}.)
  2. PPP_{{\tt P}} is the density function encoded by the program P{\tt P}. It’s a function mapping each binary string to its probability mass. (The paper uses the notation ProbP\mathrm{Prob_P} or italic PP.)
  3. PP\mathbb{P} _ {\tt P} is the probability of generating a string under the sampler encoded by the program P{\tt P}, given uniform random noise input (The paper uses the slightly cumbersome notation PruU[SampleP(u)=]\mathrm{Pr}_ {u\sim U_\infty}[\mathrm{Sample_P}(u)=\cdot], which I elected to streamline)

Fortunately, we only need to keep (1) and (2) around going forward, since we agreed by definition that PP=PPP_{{\tt P}}= \mathbb{P}_ {\tt P}.

§§Representing resource limits

The above definition of a probabilistic model is similar to Definition 7 from the paper. However, unlike the paper’s Definition 7, we haven’t yet introduced any restrictions on the probabilistic models to represent the observer’s limited computational affordances.

The paper focuses on time complexity, and defines a time-bounded families of probabilistic models PT\mathcal{P}_T where TT is some time-limit function (of nn) telling us how many steps of UU are allowed to be used by P{\tt P} during density evaluation or sampling.

In this note, I wanted to step back and define computable probabilistic models in general, so that I can talk about restricting to arbitrary sets of probabilistic models over {0,1}n\{{\tt 0},{\tt 1}\}^{n}. Therefore, below, I’ll consider a generic set of allowed probabilistic models, denoted P\mathcal{P}. This set could be defined by a time bound (like PT\mathcal{P}_T). Alternatively, it could be a finite set of hand-constructed programs, or the set of all computable probabilistic models, for example.

This generalisation is an extension mentioned but not pursued in the paper. I adopt it in this note because for the basic properties we consider the extensions are immediate, and it also allows greater flexibility in exploring connections to other topics in (algorithmic) information theory.

§§The optimal two-part code

The next step towards defining epiplexity is to develop the two-part coding scheme for efficiently compressing the random variable XX, subject to our computational limits.

Suppose our observer wants to store an instantiation of XX using a probabilistic model PP{\tt P}\in \mathcal{P}, namely via the following scheme:

  1. First, they encode the probabilistic model P{\tt P}.

    Since P{\tt P} is a program, they can store the bits directly, costing len(P)\text{len}({\tt P}) bits.

  2. Second, they use an optimal code algorithm to design a code for samples from the distribution PPP_{{\tt P}}, and then use this code to encode the instantiation of XX itself.

    The cost in bits will depend on the exact value of XQX \sim Q. In expectation, the cost will be the cross entropy of PPP_{{\tt P}} relative to QQ, EXQ ⁣[log2PP(X)]\mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right].4

The total number of bits the observer can expect to store if they use P{\tt P} for encoding XX is therefore L(X;P)=len(P)+EXQ ⁣[log2PP(X)], L(X; {\tt P}) = \text{len}({\tt P}) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right], which we call the description length of XX via P{\tt P}.

Is this a good way of compressing a random value? That depends. If PPQP_{{\tt P}}\approx Q, then the optimal coding scheme will allow the observer to store XX almost as efficiently as if they knew QQ, which could be very efficient in some cases. Either way, they also need to store P{\tt P}, so that the decompressor can reconstruct the coding scheme used to encode XX to decode it at the other end.

Fortunately, the observer gets to choose which probabilistic model P{\tt P} to use, at least within the limits of their computational resources. As promised, let’s denote the set of probabilistic models available to our observer as P\mathcal{P} (this might be all computable probabilistic models, or just efficient ones, or whatever). The observer can then choose P{\tt P} so as to make PPP_{{\tt P}} as close to QQ as possible, while balancing bits saved encoding XX against the bits they have to add to encode P{\tt P} alongside it. The best they can do is LP(X)=argminPPL(X;P)=argminPP{len(P)+EXQ ⁣[log2PP(X)]}, L_\mathcal{P}(X) = \operatornamewithlimits{\vphantom{arg\,}min}_{{\tt P}\in \mathcal{P}} L(X; {\tt P}) = \operatornamewithlimits{\vphantom{arg\,}min}_{{\tt P}\in \mathcal{P}} \big\{ \text{len}({\tt P}) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right] \big\}, which we’ll call the (P\mathcal{P}-restricted) minimum description length of XX.5

§§Epiplexity

Finally, we are in a position to define epiplexity itself.

Given XQX \sim Q, the (P\mathcal{P}-restricted) epistemic complexity, or epiplexity of XX, denoted SP(X)S_\mathcal{P}(X), is simply the length of the (shortest) program from a two-part code achieving the minimum description length. Formally, SP(X)=len(P)such thatParg minPP{len(P)+EXQ ⁣[log2PP(X)]} S_\mathcal{P}(X) = \text{len}({\tt P}_\star) \quad \text{such that} \quad {\tt P}_\star \in \operatornamewithlimits{arg\,min}_{{\tt P}\in \mathcal{P}} \big\{ \text{len}({\tt P}) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right] \big\} (breaking ties by lowest len()\text{len}(\cdot)).6

Recall that epiplexity was billed as the structural information in data accessible to a computationally bounded observer. In summary:

§§Time-bounded entropy, or “epientropy”

This brings us to the complementary notion introduced in the paper: what about the bits the observer expects to use to compress XX during the second part of the optimal two-part code? These bits represent the remaining, apparently-random information content of XX that wasn’t explained by affordable computational structure.

Formally, I’m referring to the quantity HP(X)H_\mathcal{P}(X) where HP(X)=EXQ ⁣[log2PP(X)]such thatParg minPP{len(P)+EXQ ⁣[log2PP(X)]}\begin{align*} H_\mathcal{P}(X) &= \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}_\star}(X)\right] \\[2ex] \text{such that}\quad {\tt P}_\star & \in \operatornamewithlimits{arg\,min}_{{\tt P}\in \mathcal{P}} \big\{ \text{len}({\tt P}) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right] \big\} \end{align*} (again, breaking ties by lowest len()\text{len}(\cdot)).

The paper calls HP(X)H_\mathcal{P}(X) the time-bounded entropy of XX. However, since we’re not restricting ourselves to time-bounded program classes, we’ll need a new name.

For a full name, I think we could mirror that of epiplexity, calling it “P\mathcal{P}-restricted epistemic cross entropy.” Just like with epiplexity, we might want to include “epistemic” to nod to the idea of the structure/randomness distinction being dependent on the (computational resources available to the) observer. We might like to include “cross” because this is technically a cross entropy (relative to QQ) and we might like to distinguish it from the entropy of the distribution PPP_{{\tt P}}, EXPP ⁣[log2PP(X)]\mathbb{E}_{X' \sim P_{{\tt P}}}\!\left[-\log_2 P_{{\tt P}}(X')\right], a quantity that is potentially relevant for some learning algorithms.

In the case of epiplexity, the authors also gave their concept a catchy nickname. I think this cross entropy term is similarly fundamental and deserves its own name. The obvious suggestion is epientropy. The prefix “epi” matches epiplexity. The only downside is we lose recognition that it’s actually a cross entropy, but I couldn’t find a nice place for an infix “x.”

Whatever it’s to be called, I think it should be something that mirrors whatever epiplexity is to be called, since these two quantities seem equally meaningful, and satisfyingly decompose the expected length of the optimal two-part code: LP(X)=SP(X)+HP(X). L_\mathcal{P}(X) = S_\mathcal{P}(X) + H_\mathcal{P}(X).

§§Visualising the definitions

At this point, the definition might still be a little abstract. We’ll explore some examples and connections soon, but first, I thought of a neat visualisation that should help to make the definitions a little more intuitive.

Fix XX, QQ, and P\mathcal{P}. Then we can associate to every program PP{\tt P}\in \mathcal{P} a length coordinate and a cross-entropy coordinate. Each program is then a point, and P\mathcal{P} forms a point cloud. Diagonal lines, or “isolengths,” correspond to sets of programs offering equivalent description lengths. When we talk about minimising description length via P{\tt P} over this set, we’re visually corresponds to finding the point on the left/downmost diagonal line.

Scatter plot of epiplexity along program length and cross entropy axes.

The specific shape of the point cloud P\mathcal{P} depends on which programs are included, on the universal Turing machine, and the variable XX. However, we have the following basic bounds.

§Examples and basic properties of epiplexity

Now that we have a new pair of quantities, let’s see what we can do with them!

§§Uniform distribution

Lets say we have a variable UU distributed uniformly over {0,1}n\{{\tt 0},{\tt 1}\}^{n}. What is its epiplexity? The paper briefly describes this useful baseline.

First, assume that the uniform distribution over {0,1}n\{{\tt 0},{\tt 1}\}^{n} is representable by some program uP{\tt u} \in \mathcal{P}. This should be true for most cases based on resource limitations, since the uniform density can be efficiently implemented (it’s a constant 2n2^{-n}) and uniform sampling can be efficiently simulated (copy the first nn bits from the random tape). On any reasonable universal Turing machine this is probably one of the shortest and fastest valid probabilistic models implementable.

Assume without loss of generality that u\tt u is the shortest implementation of this probabilistic model in P\mathcal{P}. Then we have: L(U;u)=len(u)+EU ⁣[log2Pu(U)]=len(u)+EU ⁣[log22n]=len(u)+n.\begin{align*} L(U; {\tt u}) &= \text{len}({\tt u}) + \mathbb{E}_{U}\!\left[-\log_2 P_{\tt u}(U)\right] \\ &= \text{len}({\tt u}) + \mathbb{E}_{U}\!\left[-\log_2 2^{-n}\right] \\ &= \text{len}({\tt u}) + n. \end{align*}

In this case, we know this program achieves the minimum description length since we have minimised the cross entropy (it matches the entropy of UU) and we have minimised the program length amongst affordable programs with that property by assumption. Therefore, we can read out the epiplexity and epientropy directly: SP(U)=len(u)HP(U)=n. S_\mathcal{P}(U) = \text{len}({\tt u}) \qquad H_\mathcal{P}(U) = n.

§§General upper bounds

While the uniform case was much easier to analyse than the general case, we can still leverage it to get a very general bound. Let XQX \sim Q be arbitrary. Then, under the same assumptions on P\mathcal{P} and u\tt u, we still have L(X;u)=len(u)+EX ⁣[log2Pu(U)]=len(u)+EX ⁣[log22n]=len(u)+n.\begin{align*} L(X; {\tt u}) &= \text{len}({\tt u}) + \mathbb{E}_{X}\!\left[-\log_2 P_{\tt u}(U)\right] \\ &= \text{len}({\tt u}) + \mathbb{E}_{X}\!\left[-\log_2 2^{-n}\right] \\ &= \text{len}({\tt u}) + n. \end{align*}

This is not necessarily the minimum description length of XX, but it does give us a general upper bound: SP(X)+HP(X)=LP(X)=argminPPL(X;P)L(X;u)=len(u)+n.\begin{align*} S_\mathcal{P}(X) + H_\mathcal{P}(X) &= L_\mathcal{P}(X) \\&= \operatornamewithlimits{\vphantom{arg\,}min}_{{\tt P}\in \mathcal{P}} L(X; {\tt P}) \\&\leq L(X; {\tt u}) \\&= \text{len}({\tt u}) + n. \end{align*}

This is “basic property (2)” noted in the paper. Unfortunately, in general we can’t extend this to a pair of bounds SP(X)len(u)S_\mathcal{P}(X) \leq \text{len}({\tt u}) and HP(X)nH_\mathcal{P}(X) \leq n. The above bound only holds on the sum. Decreasing the description length may involve altering the trade-off between program length and cross entropy.

We can turn this upper bound on the sum into some basic upper bounds on each term, however, since we have lower bounds 0SP(X)0 \leq S_\mathcal{P}(X) and 0H(X)HP(X)0 \leq H(X) \leq H_\mathcal{P}(X): HP(X)len(u)+n,SP(X)len(u)+nH(X)len(u)+n.\begin{align*} H_\mathcal{P}(X) &\leq \text{len}({\tt u}) + n, \\ S_\mathcal{P}(X) &\leq \text{len}({\tt u}) + n - H(X) \leq \text{len}({\tt u}) + n. \end{align*}

We note that while none of these bounds are that powerful, they came easily: all we needed was a single program uP{\tt u} \in \mathcal{P} with a known description length. We can re-apply the same reasoning as soon as we have any example program PP{\tt P}\in \mathcal{P} (or any other bound on the description length): SP(X)+HP(X)L(X;P),HP(X)L(X;P),SP(X)L(X;P)H(X)L(X;P).\begin{align*} S_\mathcal{P}(X) + H_\mathcal{P}(X) &\leq L(X; {\tt P}), \\ H_\mathcal{P}(X) &\leq L(X; {\tt P}), \\ S_\mathcal{P}(X) &\leq L(X; {\tt P}) - H(X) \leq L(X; {\tt P}). \end{align*} When it comes to estimating epiplexity and epientopy in practical examples, we might be able to obtain reasonably tight bounds in some cases.

§§Relaxing the restrictions

Basic property (3) in the paper shows that relaxing the time restriction generally can only decrease the minimum description length. The reason is because this generally only makes more programs available for consideration, which can only expand the possibilities for minimisation.

This monotonicity property of the minimum description length can be generalised immediately to our more abstract setting by considering what happens if we generally add programs to the restricted class P\mathcal{P}.

So, assume PP\mathcal{P}' \supset \mathcal{P}. Then we have SP(X)+HP(X)=LP(X)=argminPPL(X;P)argminPPL(X;P)=LP(X)=SP(X)+HP(X).\begin{align*} S_{\mathcal{P}'}(X) + H_{\mathcal{P}'}(X) &= L_{\mathcal{P}'}(X) \\ &= \operatornamewithlimits{\vphantom{arg\,}min}_{{\tt P}\in \mathcal{P}'} L(X; {\tt P}) \\ &\leq \operatornamewithlimits{\vphantom{arg\,}min}_{{\tt P}\in \mathcal{P}} L(X; {\tt P}) \\ &= L_{\mathcal{P}}(X) \\ &= S_{\mathcal{P}}(X) + H_{\mathcal{P}}(X). \end{align*}

Again, the bound does not tell us anything about whether the epiplexity or epientropy will decrease/increase individually, only that their sum will not increase if we expand our affordances. The optimal ratio between extracted structure and random information could potentially change in either direction.

§Recovering unbounded complexity and entropy

Epiplexity and epientropy were motivated by the desire to incorporate computational limitations into (algorithmic) information theory. If we remove the computational limitations, do we recover Kolmogorov complexity and Shannon entropy as epiplexity and epientropy respectively? Not quite, but they do show up in analogous positions.

First, we should assume the true underlying data distribution QQ is representable as a computable probabilistic model. For data we encounter in the real universe, this seems like a pretty safe bet (this is the so-called physical Church–Turing thesis).

Then, to remove all computational resource restrictions, let P\mathcal{P} represent all computable probabilistic models. By assumption, there is some PP{\tt P}_\star \in \mathcal{P} such that PP=QP_{{\tt P}_\star} = Q. There will be many actually, define P{\tt P}_\star to be one of the shortest among them. We’ll define its length to be the Kolmogorov complexity of XX, K(X)K(X).

Then, the description length of XX via P{\tt P}_\star simplifies as follows: L(X;P)=len(P)+EXQ ⁣[log2PP(X)]=K(X)+EXQ ⁣[log2Q(X)]=K(X)+H(X)\begin{align*} L(X; {\tt P}_\star) &= \text{len}({\tt P}_\star) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}_\star}(X)\right] \\ &= K(X) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 Q(X)\right] \\ &= K(X) + H(X) \end{align*} where H(X)H(X) is the Shannon entropy of XX.

So we have found Kolmogorov complexity playing the role of a structure term, the first part of the two-part code, and Shannon entropy playing the role of a cross-entropy term, the second. This immediately gives us a bound on the (unbounded-compute) epiplexity and epientropy: SP(X)+HP(X)K(X)+H(X). S_\mathcal{P}(X) + H_\mathcal{P}(X) \leq K(X) + H(X). To say more, we’d need to know that L(X;P)L(X; {\tt P}_\star) is minimal. The problem is, it seems like it might not be minimal in general! H(X)H(X) is as low as it’s possible to get the cross entropy term, but if we’re willing to raise the cross entropy term a little, we might sometimes be able to get away with a shorter program than K(X)K(X) that still approximately matches QQ.

§Independent sequences

A slightly more intricate example is the following. Suppose our random variable is actually a concatenation of independent and identically distributed substrings. I don’t believe this was discussed in the paper, but it’s a common assumption in learning, so it’s worth considering what we can say about this case. As I suspected, there turn out to be a few simple observations we can make.

§§Iterating variables

Formally, consider two random variables:

  1. XX, a random variable taking values in {0,1}n\{{\tt 0},{\tt 1}\}^{n}, distributed according to QΔ({0,1}n)Q \in \Delta(\{{\tt 0},{\tt 1}\}^{n}); and

  2. Xm=X1X2XmX^m = X_1 X_2 \cdots X_m where m>1m > 1 and each XiX_i is an independent copy of XX, that is, XmX^m is a random variable taking values in {0,1}nm\{{\tt 0},{\tt 1}\}^{nm}, distributed according to QmΔ({0,1}nm)Q^m \in \Delta(\{{\tt 0},{\tt 1}\}^{nm}).

The goal of this section is to relate minimum description lengths, epiplexities, and epientropies across these two variables.

§§Iterating probabilistic models

One barrier is that each variable needs a different family of probabilistic models. Since these variables have different numbers of bits, they require probabilistic models with different type signatures. Let’s denote the affordable probabilistic models for XX as Pn\mathcal{P}_n, and those for XmX^m as Pnm\mathcal{P}_{nm}, where we use a subscript to indicate the relevant variable length.

One simple assumption we could make is to relate these program classes is to populate Pnm\mathcal{P}_{nm} with iterated versions of the distributions in Pn\mathcal{P}_n. Formally, given PPn{\tt P}\in \mathcal{P}_n, define a probabilistic model Pm{\tt P}^m on {0,1}nm\{{\tt 0},{\tt 1}\}^{nm} based on the following density evaluation and sampling implementation:

The result will be a probabilistic model and satisfy PPm=PPmP_{{\tt P}^m} = P_{{\tt P}}^m. If we use a reasonable universal Turing machine, transforming P{\tt P} into Pm{\tt P}^m will only require a small number of bits to encode the iteration procedures and the constant mNm \in \mathbb{N} (independent of the size of P{\tt P}). Let’s adopt this assumption and call the constant kmk_m, such that we have len(Pm)=len(P)+km.\text{len}({\tt P}^m) = \text{len}({\tt P}) + k_m. If we’re worried about time complexity, these constructions should only inflate the runtime of P{\tt P} polynomially in nn and mm.

Let’s lift this to the set of programs Pn\mathcal{P}_n. Define Pnm\mathcal{P}_n^m, a set of programs over {0,1}nm\{{\tt 0},{\tt 1}\}^{nm} containing mm-iterated copies of the programs in Pn\mathcal{P}_n: Pnm={Pm|PPn}.\mathcal{P}_n^m = \left\{\,{\tt P}^m \,\middle|\,{\tt P}\in \mathcal{P}_n\,\right\}. We shall proceed by defining the restricted class Pnm=Pnm\mathcal{P}_{nm} = \mathcal{P}_n^m. This might seem like a fairly restricted way to define an expanded class of programs. Note that except where noted, the following arguments work if we merely assume PnmPnm\mathcal{P}_{nm} \supset \mathcal{P}_n^m. This latter condition would be achieved by modestly expanding a time complexity bound, for example, as discussed above. Introducing more programs may lead to unexpected new minima, of course.

§§A basic upper bound

Intuitively, it seems like XmX^m can’t have that much more (accessible) structural information than XX, since one copy of XX already represents the full complexity of the distribution and XmX^m just repeats that structure mm times. On the other hand, encoding multiple specific samples from the distribution means replicating the unpredictable structure multiple times. This all suggests that XmX^m could have a similar epiplexity but a larger epientropy than XX. As it turns out, this isn’t necessarily true, but we can at least turn this intuition into a description length bound, as follows.

Starting in the realm of XX, suppose PPn{\tt P}_\star \in \mathcal{P}_n is a program achieving the minimum description length of XX (after breaking ties by shorter program length), such that LPn(X)=L(X;P);SPn(X)=len(P);HPn(X)=EXQ ⁣[log2PP(X)].\begin{align*} L_{\mathcal{P}_n}(X) &= L(X; {\tt P}_\star); \\ S_{\mathcal{P}_n}(X) &= \text{len}({\tt P}_\star); \\ H_{\mathcal{P}_n}(X) &= \mathbb{E}_{X\sim Q}\!\left[-\log_2 P_{{\tt P}_\star}(X)\right]. \end{align*}

By lifting PPn{\tt P}_\star \in \mathcal{P}_n to PmPnm{\tt P}_\star^m \in \mathcal{P}_{nm}, we get the following basic upper bound on the minimum description length in the iterated case. SPnm(Xm)+HPnm(Xm)=LPnm(Xm)len(Pm)+EXmQm ⁣[log2PPm(Xm)]=(len(P)+km)+EXmQm ⁣[log2(i=1mPP(Xi))]=len(P)+km+mEXQ ⁣[log2PP(X)]=SPn(X)+km+mHPn(X).\begin{align*} S_{\mathcal{P}_{nm}}(X^m) + H_{\mathcal{P}_{nm}}(X^m) &= L_{\mathcal{P}_{nm}}(X^m) \\ &\leq \text{len}({\tt P}_\star^m) + \mathbb{E}_{X^m\sim Q^m}\!\left[-\log_2 P_{{\tt P}_\star^m}(X^m)\right] \\ &= (\text{len}({\tt P}_\star) + k_m) + \mathbb{E}_{X^m\sim Q^m}\!\left[-\log_2\left( \prod_{i=1}^m P_{{\tt P}_\star}(X_i) \right)\right] \\ &= \text{len}({\tt P}_\star) + k_m + m \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}_\star}(X)\right] \\ &= S_{\mathcal{P}_n}(X) + k_m + m H_{\mathcal{P}_n}(X). \end{align*} The result is a satisfyingly interpretable bound on the description length in the iterated case! Look:

The satisfying part is that while we paid the entropy encoding cost repeatedly, we didn’t have to do this for the program length. As long as mm is large or kmk_m is otherwise relatively small, we’re way out-competing the naive coding approach of separately coding each sample along with its own copy of the program.

§§Weighted minimum description length

Can we do better? Is this upper bound tight? Assuming Pnm=Pnm\mathcal{P}_{nm} = \mathcal{P}_n^m, the bound might be tight in some cases, depending on Pn\mathcal{P}_n. But, it could easily be suboptimal, for the following reason.

Formally, assuming Pnm=Pnm\mathcal{P}_{nm} = \mathcal{P}_n^m, we can perform a similar decomposition of the description length for all programs PmPnm{\tt P}^m \in \mathcal{P}_{nm} as we did for Pm{\tt P}_\star^m: L(Xm;Pm)=len(Pm)+EXmQm ⁣[log2PPm(Xm)]=(len(P)+km)+EXmQm ⁣[log2(i=1mPP(Xi))]=len(P)+km+mEXQ ⁣[log2PP(X)].\begin{align*} L(X^m; {\tt P}^m) &= \text{len}({\tt P}^m) + \mathbb{E}_{X^m\sim Q^m}\!\left[-\log_2 P_{{\tt P}^m}(X^m)\right] \\ &= (\text{len}({\tt P}) + k_m) + \mathbb{E}_{X^m\sim Q^m}\!\left[-\log_2\left( \prod_{i=1}^m P_{{\tt P}}(X_i) \right)\right] \\ &= \text{len}({\tt P}) + k_m + m \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right]. \end{align*}

We can thus reduce the problem of minimising description length of XmX^m over Pnm\mathcal{P}_{nm} to a minimisation problem involving XX and Pn\mathcal{P}_n. The result is subtly different from the problem of minimising description length of XX. We can ignore that the objective has an extra kmk_m term. We assumed kmk_m does not vary with P{\tt P}. Therefore, it can’t change where the minimum is: arg minPmPnmL(Xm;Pm)=arg minPPn{len(P)+mEXQ ⁣[log2PP(X)]}. \operatornamewithlimits{arg\,min}_{{\tt P}^m \in \mathcal{P}_{nm}} L(X^m; {\tt P}^m) = \operatornamewithlimits{arg\,min}_{{\tt P}\in \mathcal{P}_{n}} \big\{ \text{len}({\tt P}) + m \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right] \big\}. The important difference from the original objective is that this objective has a different coefficient on the cross entropy term. This is a meaningful change. It means we should think of increases in cross entropy as more costly than increases in program length when balancing the two. Equivalently, we could imagine down-weighting the program complexity versus the cross entropy.

Intuitively, the interpretation of this coefficient is that the need to encode samples from mm copies of XX creates a greater incentive to export structure into the first part of the two-part code. Specifically, we previously would have declined the option to add one bit to reduce the cross entropy by a fractional k(1/m,1]k \in (1/m, 1] bits. In the iterated case, this is a good deal, as we get to repeat that saving mm times leading to an overall saving of mk>1mk > 1 bits.

If there is a program PPn{\tt P}\in \mathcal{P}_n that offers that kind of trade, then it will beat P{\tt P}_\star on description length in the iterated case. However, at least we can tell this will be the case by analysing the single-variable case, as long as we search for the best program with a re-weighted objective.

§§Allowing more programs

If we relax the strong assumption that Pnm=Pnm\mathcal{P}_{nm} = \mathcal{P}_n^m, this connection breaks down. It might be the case that these iterated probabilistic models not available for modelling XmX^m. Or, there might be more programs to choose from that offer better tradeoffs.

The paper normally considers a computational budget to be expressed as an increasing function of the number of bits in the data. By this idea, the increased size of XmX^m justifies giving Pnm\mathcal{P}_{nm} access to programs that require more computational resources. Doing so might take us into a regime where new structural information becomes efficiently extractable from each sample, allowing better compression of individual samples, increasing program length while decreasing per-sample cross entropy. It’s also possible that new options for substantially decreasing program length while increasing per-sample cross entropy, or even opportunities to decrease both program length and per-sample cross entropy, could appear.

Another possibility worth considering is that it might be possible to take advantage of programs that don’t take full advantage of iteration. This is a bit hard to imagine, since iteration is likely to be such a salient structural element of the problem, and it might be optimal for most reasonable universal Turing machines. However, I think it might be possible to construct some kind of counterexample where we can save a lot on program length by approximating the iterative structure with some slightly out-of-phase iteration that leads to nearly as low cross entropy.

§Breaking ties

Epiplexity is defined as the length of the shortest programs involved in optimal two-part codes. It was necessary to say “the shortest” programs even though we already said “optimal two-part codes” because optimal two-part codes might be based on programs with different lengths. Refer to these situations as ties. In this section, let’s explore ties and consider different ways of breaking them.

§§What are ties?

What would it mean for there to be two optimal codes with different program lengths? Let’s break that down.

We’d want two programs P1,P2P{\tt P}_1, {\tt P}_2 \in \mathcal{P} such that P1,P2arg minPP{len(P)+EXQ ⁣[log2PP(X)]}. {\tt P}_1, {\tt P}_2 \in \operatornamewithlimits{arg\,min}_{{\tt P}\in \mathcal{P}} \big\{ \text{len}({\tt P}) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}}(X)\right] \big\}. In particular, it must be that len(P1)+EXQ ⁣[log2PP1(X)]=len(P2)+EXQ ⁣[log2PP2(X)]. \text{len}({\tt P}_1) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}_1}(X)\right] = \text{len}({\tt P}_2) + \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}_2}(X)\right] . Equivalently, EXQ ⁣[log2PP1(X)]=EXQ ⁣[log2PP2(X)]+(len(P2)len(P1)). \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}_1}(X)\right] = \mathbb{E}_{X \sim Q}\!\left[-\log_2 P_{{\tt P}_2}(X)\right] + (\text{len}({\tt P}_2) - \text{len}({\tt P}_1)) . That is, if P2{\tt P}_2 is longer by a number of bits, it must offer a cross entropy lower by exactly that many bits. Since these bits come out of the cross entropy and go into the program length, this is a neutral tradeoff from a minimum description length perspective, which is why both codes are considered optimal.

§§Toy example of a tie

Do ties even exist? I don’t know how common they would be in practice, but it’s easy enough to fabricate them in a toy example.

Consider a very simple problem with n=1n=1 and XBernoulli(q)X \sim \text{Bernoulli}(q) for some hyper-parameter q(0,1)q \in (0,1). Imagine there are only two programs in our set of probabilistic models, P={P1,P2}\mathcal{P}= \{{\tt P}_1, {\tt P}_2\}, respectively representing Bernoulli distributions with parameters p1,p2(0,1)p_1, p_2 \in (0,1) with program lengths 1,2\ell_1, \ell_2.

In this simple case, we can compute L(X;Pi)=len(Pi)+EXBernoulli(q) ⁣[log2PPi(X)]=iqlog2pi(1q)log2(1pi).\begin{align*} L(X; {\tt P}_i) &= \text{len}({\tt P}_i) + \mathbb{E}_{X \sim \text{Bernoulli}(q)}\!\left[-\log_2 P_{{\tt P}_i}(X)\right] \\ &= \ell_i - q \log_2 p_i - (1 - q) \log_2 (1 - p_i). \end{align*} Equating L(X;P1)=L(X;P2)L(X; {\tt P}_1) = L(X; {\tt P}_2), we can solve for qq to produce a tie: q=21+log21p11p2log2p21p2log2p11p1. q = \frac{ \ell_2 - \ell_1 + \log_2 \frac{1 - p_1}{1 - p_2} }{ \log_2 \frac{p_2}{1-p_2} - \log_2 \frac{p_1}{1 - p_1} }.

§§Why break for less structure?

If we ever were to face this situation, the paper says we should break for the smaller program length when defining epiplexity. Why might we want to define epiplexity in terms of the smaller program?

This choice can’t be justified based on the minimum description length framework, since it’s neutral to this trade-off by construction. Let’s explore some possible justifications. On the one hand, the smaller program is appealing for a number of reasons:

On the other hand, I can see a way of arguing for the opposite perspective in each case.

I don’t know what to make of this. It seems like maybe both answers could be valid.

§§Alternative tie-breakers

Maybe we should appeal to a completely outside perspective to resolve the tie.

We could consider adding a third axis to minimise/maximise:

§§Dissolving the tie

We don’t necessarily have to break the tie. Maybe the different options are genuinely telling us different things about the problem.

We could perhaps acknowledge this with two definitions. The shortest program length could be called the lower epiplexity, and the longest program length the upper epiplexity. Conversely, we could talk about the respective complement quantities, the upper and lower epientropy.

Or maybe, we could separate the minimum description length of our variable into three quantities instead of just two. We could separately count the (lower) epiplexity, the (lower) epientropy, and also the remaining, intermediate bits that can be exchanged between program length and cross entropy at a 1:1 rate. However, we should recognise that not all positions along this equilibrium region need be realisable.

My conclusion overall is that it seems fine for now to define epiplexity in terms of the paper’s tie-breaking rule, but it’s good to be aware that we are doing this, and be ready to refer to these more refined concepts if the need arises in the future.

§Conclusion

I like the epiplexity framework. It seems like a sensible step on the road from algorithmic information theory towards a theory of information and learning that takes bounded resources into account. This is part of an exciting shift in the field of algorithmic information theory that is as deep as the split between computability and complexity theory in theoretical computer science. This analogy is not drawn by coincidence, as indicated by the extent to which the paper draws on complexity and cryptography theory in its theoretical results. In fact, we have individual figures like Levin whose work has been at the foundation of complexity theory (with the Cook–Levin theorem) and also the foundation of this new direction (with the invention of Levin complexity, another formulation of resource-limited algorithmic information theory). I am glad I took the time to understand the definition of epiplexity thoroughly. This has generated some interesting theoretical questions about potential loopholes in the observer’s computational budget, and idea to change the definitions to fix them. Suffice it to say, I am going to ponder these and may write about them in a future post.

I’m excited to continue reading and reflecting on the paper’s empirical sections, too. If this approach can really shed light on some of the stunning phenomena driving the AI revolution, then that will be light sorely needed indeed. In this regard, I am less concerned about the potential gaps in the framework. Pragmatically speaking, I think it’s an acceptable strategy to enrich our theories on an as-needed basis. The field of machine learning has spent a long time under the faint guiding glow of resource-unlimited algorithmic information theory, throwing around terms like Kolmogorov complexity and Solomonoff induction. Let’s see whether epiplexity can show us the way to new, fruitful experiments and empirical insights. Maybe the shadowy parts aren’t obscuring anything important, in which case they won’t turn out to matter at the end of the day. Or maybe they will turn out to be important—if this new light runs out on us, we can invest again in improving our theory.


  1. Computer scientists are actually already pretty familiar with the idea that you can trade off compute for how much structure you can extract from data. Consider that running a stronger compression algorithm on some data usually takes longer than running a weaker compression algorithm. The weaker compression algorithm runs faster, but necessarily leaves some opportunities for compression on the table.↩︎

  2. Here, I’ll hop on my hobby-horse and note that the choice of universal Turing machine defines not only what programs are short but also what programs use a small amount of space or time. So, all of the following discussion of information and structure, including all of the discussion in the paper regarding efficiently accessible structure, is relative to that choice (just like always).↩︎

  3. The paper specifies that the numerical output of the density routine should be a finite-precision binary number. This seems a bit restrictive on the kinds of densities you can represent. It would be nicer to allow the output to be any computable number, encoded as a program that outputs that number’s binary expansion to an arbitrary precision given as input. However, when it comes time to restrict the computational resources available to the observer, we’d want to be careful to bound this number-generating program’s complexity too. In the case of time complexity, that will effectively place a bound on the precision we’re able to output for any given number, and hence we are back at a finite precision limitation.↩︎

  4. Let’s ignore the fact that they technically have to store an integer number of bits. At worst, they have to store an extra fraction of a bit, which is negligible for large nn, or for small nn the overhead can be amortised over many compressed files with arithmetic coding.↩︎

  5. It’s worth checking that this minimum is always going to be defined (except in the obvious corner case P=\mathcal{P}= \emptyset). This is clear in the finite case, but a generic function on a countable set of programs may exhibit an indefinitely decreasing sequence of points and fail to include its infimum.

    We can prove that this is not the case for the two-part code. Assume P\mathcal{P} is non-empty and let P0P{\tt P}_0 \in \mathcal{P} be arbitrary. Fix L0=L(X;P0)L_0 = L(X; {\tt P}_0) and consider the set of programs with length at most L0L_0: P0={PP|len(P)L0}.\mathcal{P}_0 = \left\{\,{\tt P}' \in \mathcal{P} \,\middle|\,\text{len}({\tt P}') \leq L_0\,\right\}. There are at most 2L+12^{L+1} programs with length L0\leq L_0, so P0\mathcal{P}_0 is finite. Thus arg minPP0L(X;P)\operatornamewithlimits{arg\,min}_{{\tt P}' \in \mathcal{P}_0} L(X; {\tt P}') is non-empty.

    Finally, the set of minimisers in the finite case matches that of P\mathcal{P} itself: for Parg minPP0L(X;P){\tt P}_\star \in \operatornamewithlimits{arg\,min}_{{\tt P}' \in \mathcal{P}_0} L(X; {\tt P}') and PPP0{\tt P}' \in \mathcal{P}\setminus \mathcal{P}_0, we have L(X;P)L(X;P0)<L(X;P).L(X; {\tt P}_\star) \leq L(X; {\tt P}_0) < L(X; {\tt P}').↩︎

  6. It’s possible for there to be ties for the optimal program. If their length is the same, it doesn’t matter. If one program is longer (but offers a corresponding decrease in cross entropy to offset the extra program length), the paper says to choose the shorter program’s length as the epiplexity. We’ll return to ties later in this note.↩︎