Data Processing Inequality
Post-processing never invents information. A label guessed from a compression holds at most what the compression kept from the photo.
Why Does This Exist?
Pipelines stack: sensor to embedding to prediction to decision. Each stage hopes to "recover" signal the last one dropped by clever post-processing. The inequality ends that hope with one line: on a Markov chain , and .
Budget your effort upstream. It needs mutual information and the chain rule in joint and conditional entropy, and motivates the tradeoff in information bottleneck.
The one idea you need first
is Markov when : sees only through . Every feedforward pipeline without skip-backs qualifies. Information measures shared bits across each link.
Think of It Like This
Photocopies of photocopies
Copy a photo, then copy the copy. The second copy never regains detail the first lost: toner cannot invent pores. Sharpening filters guess plausibly, but the guess is not the pore.
Sufficiency is the exception that proves it: a lossless copy (sufficient statistic) holds equality. Where it stops: copies are deterministic degradations, while pipelines add learned priors that hallucinate realistic-but-ungrounded detail.
How It Actually Works
Proof sketch: , and Markov makes , so . Equality needs : sufficient for given . Corollaries: no function of data beats the data (); noisy-channel capacity bounds every receiver.
Worked example
Photo , JPEG keeping bit, classifier with bits. Then ; measured after classifier noise. A "super-resolution" head claiming bits about from contradicts the inequality unless it smuggles a side prior (then the chain is not alone). Weakest link rules: 0.3 sits below 0.4.
Code
import numpy as np
rng = np.random.default_rng(12)x = rng.integers(0, 2, size=50000) # fair bity = np.where(rng.random(50000) < 0.9, x, 1 - x) # BSC 0.1z = np.where(rng.random(50000) < 0.8, y, 1 - y) # second BSC 0.2print(round(float((x == y).mean()), 3)) # -> 0.9print(round(float((x == z).mean()), 3)) # -> 0.74Agreement degrades 0.9 to 0.74 down the chain. No post-processing of recovers the 0.9 fidelity of .
Watch Out For
Smuggling priors and crying violation
Generative upscalers beat "the limit" by injecting learned priors: the real chain is , not . Calling it a DPI violation misreads the graph and overtrusts hallucinations.
Draw the full graph including priors. If side information enters, the bound moves with it.
Chasing downstream fixes for upstream loss
Retraining heads on frozen weak embeddings plateaus at the embedding's ceiling. Teams burn GPU on heads while the encoder starves.
Measure first (probe accuracy, reconstruction). If the link is the bottleneck, retrain upstream or recollect, not the head.
The Quick Version
- Markov gives .
- Example: 1.0-bit compression into 0.4-bit guess caps end-to-end at 0.4; measured 0.3.
- Equality needs sufficiency: keeps everything had about .
- Side priors change the graph; draw them before crying violation.
- Fix upstream links before downstream heads.
- Agreement 0.9 degrades to 0.74 down two noisy channels, never recovers.