2026-08-28·by Sijie Wang#idea#math

no-free-lunch

No free lunch — why the bias can't be learned

Parent: learning-theory Prereq: learning-theory — defines H (hypothesis class), the sample, and generalization error.

No Free Lunch (Wolpert, 1996)

Averaged over all possible target functions (all ways the world could be), every learning algorithm has the same expected error on unseen data — no better than random guessing. No universal learner exists.

What it actually says

Take any learner that does well on some set of worlds. There is an exactly-as-large set of worlds (the ones where every unseen label is flipped) on which it does equally badly. The seen data is consistent with both, so nothing in the data distinguishes them. Good performance on your problems is never free — it's paid for by bad performance on the anti-problems you'll never meet.

So: learning well = your inductive bias happens to match the world you're actually in. Restricting H to "reasonable" hypotheses (small VC) is that bias.

The unlearnable base (tier-0)

This forces a regress. Learning requires a prior/bias — but the bias cannot itself be learned: to learn which bias is right you'd need examples of "biases that worked," which needs a prior over biases, and so on. The base assumptions are given, not learned — an unlearnable bottom layer.

This is the formal skeleton of Hume's problem of induction (no amount of past observation logically justifies a prediction) and the reason "assume nothing → learn nothing." Every learner smuggles in a world-assumption at tier-0; the honest move is to make it explicit.

The takeaway

  • more capacity (VC) ≠ more learning — past a point it's less (PAC needs finite VC);
  • power comes from the right restriction, not from generality;
  • and that restriction is a choice/prior, sitting beneath everything the learner can prove.
about this entry

One of sijie's wiki entries. The AI on this site is grounded in the same corpus and answers in sijie's voice, with citations back to entries like this one — answering costs sijie money, so it waits behind a code: enter an access code →