This page builds every symbol used in the parent note from absolute zero. If you have never seen a gradient, a subscript, or a square-root-in-a-denominator, start at line one and don't skip.
There are two labels stuck onto every symbol. They answer two different questions.
So θt,i reads: "the value of slider number i at time-step t." Two labels, two totally separate meanings — don't blend them.
Figure 1 (below) lays the sliders out as a grid: move right and time t advances; move up and you pick a different coordinate i. The yellow dot is one specific θt,i — one slider frozen at one moment. Use it to see that the two subscripts point along two different axes.
Why the topic needs it: AdaGrad's whole trick is a per-coordinate step, so we must be able to talk about coordinate i alone. And because the step depends on history, we must track time t.
Here is the first genuinely new tool. Why do we need it?
Picture it: stand on a hillside. The gradient is an arrow pointing in the steepest uphill direction; its length is how steep. To go down, we step in the opposite direction — that minus sign is where the "−" in every update rule comes from.
Figure 2 (below) draws the loss as a bowl seen from above (the thin white rings are equal-height contours). The yellow dot is your position θt; the pink arrow is gt pointing steepest uphill; the blue arrow is the actual step −ηgt pointing downhill toward the star (the valley). It shows exactly why we subtract the gradient.
Why the topic needs it:gt,i is the raw material. AdaGrad/RMSprop never change the directiong points — they only rescale how big a step to take. See Stochastic Gradient Descent for where these gradients come from (from mini-batches, which makes them noisy — a reason we later want to average their sizes).
Picture it:η is your stride length. Too big → you leap over the valley and bounce around. Too small → you inch along and never arrive. See Learning Rate Schedules for changing η over time as an alternative to what AdaGrad does automatically.
Why the topic needs it: AdaGrad and RMSprop take this single global η and secretly turn it into a different effective stride for every slider. That is their entire job.
The rules square the gradient and later take a square root. Why both?
Figure 3 (below) compares three curves as the gradient g runs left-to-right: blue g keeps its sign, pink ∣g∣ gives size only, yellow g2 gives size and punishes big slopes (it shoots up fast). The two yellow dots mark (−3)2=9=32 — proof that squaring throws the sign away.
Why the topic needs it: the accumulators G and E[g2] (next) are built from g2; the update divides by of them. Averaging g2 is a mean-square measure of gradient magnitude. (Careful: the true statistical variance is E[g2]−(E[g])2; our E[g2] is only the raw mean of the squares, which equals the variance only when the average gradient E[g] is zero. The parent note scales by this raw second moment, not by the variance.) This contrasts with Momentum, which averages the plain gradient (the first moment).
Picture it: a bucket per slider. Every step you pour in the current squared slope. The bucket only fills — it never empties.
Why the topic needs it (and its fatal flaw): dividing η by G shrinks the step for sliders that have seen big/frequent slopes. But because the bucket only grows, Gt,i→∞ and the step →0: AdaGrad eventually freezes. That flaw is the reason RMSprop exists.
Picture it: the same bucket, but with a small hole in the bottom. Each step you pour in a little new water and some old water leaks out. The level stops rising and holds steady at the recent average. The full mechanics live in Exponentially Weighted Moving Averages.
Figure 4 (below) runs both accumulators on a constant slope g=1. The pink line is AdaGrad's sum Gt: it climbs forever (→∞), so its step dies. The blue line is RMSprop's EWMA E[g2]t: it settles onto the yellow dashed line at 1 and stays there — a bounded memory that keeps the step alive.
Why the topic needs it: replacing G (a sum) with E[g2] (a bounded average) is the single change from AdaGrad to RMSprop. Because a bounded average never blows up, the step never dies.
Everything the parent note writes is now just these pieces assembled:
Combine RMSprop's per-slider stride with Momentum's averaged direction and you get the Adam Optimizer. Per-slider scaling also tames wildly different gradient magnitudes — the subject of Vanishing and Exploding Gradients.
How to read this diagram: each box is one idea from this page; an arrow X→Y means "you need X before Y makes sense" (X feeds into Y). Start at the top boxes with no incoming arrows and follow the arrows downward — that is a valid order to learn these in. The two bottom-most boxes are AdaGrad and RMSprop, which everything else builds toward.