Visual walkthrough — Double DQN and Dueling DQN
Step 0 — The three words we keep saying
Before any maths, three plain-word anchors. Every symbol below is earned here.
The whole drama on this page is: what happens when you take the biggest of several wobbly guesses.
Step 1 — Draw the wobble: what "noisy estimate" means
WHAT. Suppose three actions are actually equally good. Call that shared true value . Our network cannot see ; it sees .
- :: the true value (a fixed height, same for all three actions).
- (Greek "epsilon", the noise on action ) :: a small random up/down wobble, sometimes , sometimes , averaging to zero.
WHY. We must model noise because a freshly-training network is always wrong by some random amount. If we pretend estimates are exact, we miss the whole disease.
PICTURE. Three actions sit at the same true height (dashed line). The dots are the wobbled guesses — some float above the line, some below.

Step 2 — Take the max, and watch it float upward
WHAT. The DQN target uses — the biggest of the wobbled dots.
- :: "pick the largest over all actions ". It reads off the top dot in Step 1.
WHY this operation at all? DQN wants the value of acting optimally next step, and "optimal" means "whichever action scores highest". So the max is not a bug — it is the definition of "play the best move". The bug is that we take the max of guesses, not of truths.
PICTURE. The max reaches for whichever action got the luckiest upward wobble. So the chosen height sits above the true dashed line, on average.

Step 3 — Why "average of the max" beats "max of the average"
WHAT. We compare two quantities that look similar but are not: versus .
WHY. This single inequality is the whole disease, stated exactly.
- :: first average each action's wobble (each averages to ), then take the biggest → biggest of . No bias.
- :: first take the biggest wobble each roll, then average → a positive number, because you keep grabbing whichever happened to be highest.
PICTURE. Left panel: many re-rolls, each time we mark the top dot; those top marks pile up above zero. Right panel: the averaged (settled) dots all sit at zero. The gap between the two piles is the bias.

Step 4 — The degenerate check: when is there NO bias?
WHAT. Every good derivation must survey its edge cases. Two make the bias vanish:
- (one action). Then has nothing to choose — the plug-in of into the bound gives . No bias.
- (no noise, perfect estimates). Then for all , so . No bias.
WHY show this. It proves the bias is caused by noisy estimates over multiple choices — not by the max being evil in itself. Remove either ingredient and the disease disappears.
PICTURE. Left: single action, the "max" is just the one dot — no upward pull. Right: zero-noise case, all dots collapse onto the true line — the max sits exactly on it.

Step 5 — The fix: let two different friends choose and score
WHAT. The bias came from one noisy network doing two jobs: pick the top action and report its value. If action was picked because its wobble was high, then reading its value re-uses that same high wobble — we lock the luck in.
The fix: use two networks whose estimation errors are (approximately) independent.
- Online network (theta) → does the selection ("which button?").
- Target network (theta-minus, the frozen copy from Target Networks and Experience Replay) → does the evaluation ("what's it worth?").
WHY it works. The action loves may have gotten a lucky wobble in . But 's wobble on that same action is a fresh, independent roll — most likely ordinary, not lucky. So we no longer double-count the luck.
PICTURE. Two boards side by side. On board the top action is circled (selection). We carry that same action index to board and read its dot there — which sits near the true line, not at the peak.

Step 6 — Now the second disease: the split is ambiguous
WHAT. Switch to Dueling. We want the network to output a state value ("is this spot good?") and per-action advantages ("how much better than average is button ?"), then combine: . See the Advantage Function.
- :: one number per state — the average quality of the state.
- :: one number per action — its edge over the average.
WHY there's a problem. Add any constant to and subtract from every — the sum is identical. The network can't tell the "right" split from a shifted one; drifts and loses meaning. This is the identifiability trap.
PICTURE. Two different splits (one shifted up by ) produce the exact same bars. The network sees no difference — so it can't pin .

Step 7 — The anchor: subtract the mean advantage
WHAT. Force the advantages to sum to zero across actions. The network's raw advantage stream outputs (A-tilde); we build the anchored advantage by subtracting its mean, and combine that with .
- (A-tilde) :: the raw, un-anchored advantage straight from the network.
- :: the number of actions.
- :: the average of the raw advantages.
WHY it fixes it. After centering, the advantages sum to zero always. Summing the combine-equation over all actions then forces — is pinned to the average . One unique split survives.
PICTURE. The raw advantages (some non-zero mean) get slid down so their average hits zero; the removed offset lands cleanly in , and the recovered equals the mean height of the final bars.

The one-picture summary

Both diseases, both cures, on one board:
- Left (Double): noisy max floats up → split the "choose" and "score" jobs across and (whose errors are independent) → the score drops back toward truth.
- Right (Dueling): ambiguous → subtract the mean raw advantage → pinned to .
These are orthogonal — a Dueling architecture trained with a Double target is the standard "Double Dueling DQN", itself a component of Rainbow DQN. The advantage idea also links to Actor-Critic Methods, where a critic estimates and the actor uses -like signals.
Recall Feynman retelling — the whole walkthrough in plain words
You are scoring ice-cream shops with noisy tiny spoon-tastes, where each flavour's luck is independent of the others. Double: if you both pick the flavour and score it with the same lucky spoon, a bad flavour that happened to taste great fools you — and this always pulls scores upward (the max grabs the luckiest wobble; its average is at least zero because the max is never below any single flavour). Fix: one friend picks the flavour, a different friend — whose spoon-luck is unrelated — tastes and scores it. The lucky spoon can't fool two independent tongues. Dueling: instead of scoring every flavour from scratch, first ask "is this shop good overall?" () then "is chocolate a bit better or worse than average here?" (). But " plus " is ambiguous — you could pretend the shop is amazing and every flavour is a bit disappointing, and get the same totals. Fix: force the little better/worse numbers to average out to zero, so the "shop goodness" number is forced to equal the average of the flavour scores. Now it means exactly one thing.
Recall
Why is when each averages to zero? ::: Because on every roll, and monotonicity of expectation turns that into . What assumption on the noise makes the overestimation argument work? ::: The wobbles are i.i.d. — independent and identically distributed (same spread, no conspiring). In Double DQN, which network selects and which evaluates, and why must their errors be independent? ::: Online selects the argmax action; target evaluates it; independence stops the lucky pick from being confirmed twice. What does subtracting the mean advantage pin to? ::: The average of across actions, . Two settings where overestimation bias vanishes? ::: A single action (), or zero estimation noise ().