---
date: '2024-12-10'
description: and what is she descending from, really?
id: gradient descent
modified: 2026-06-05 15:08:24 GMT-04:00
tags:
  - ml
title: gradient descent
created: '2024-12-10'
published: '2024-12-10'
pageLayout: default
slug: thoughts/gradient-descent
permalink: https://aarnphm.xyz/thoughts/gradient-descent.md
generator:
  quartz: v4.6.0
  hostedProvider: Cloudflare
  baseUrl: aarnphm.xyz
full: https://aarnphm.xyz/llms-full.txt
---
Gradient descent is an iterative method for minimizing a differentiable function $f : \mathbb{R}^d \to \mathbb{R}$ by stepping against its [[thoughts/Vector calculus#gradient|gradient]]. At a parameter vector $w$, the gradient contains the partial derivatives:

$$
\nabla f(w) = \begin{pmatrix}
\frac{\partial f}{\partial w_1}(w) \\
\vdots \\
\frac{\partial f}{\partial w_d}(w)
\end{pmatrix}.
$$

## idea

Choose an initial point $w_0$ and a positive step size $\alpha$. Then, for $t = 0,1,\ldots$,

$$
w_{t+1} = w_t - \alpha \nabla f(w_t).
$$

Why subtract the gradient? For a small displacement $h$, the first-order approximation is

$$
f(w+h) \approx f(w) + \nabla f(w)^\top h.
$$

Substituting $h = -\alpha\nabla f(w)$ makes the predicted change $-\alpha\lVert\nabla f(w)\rVert_2^2$. A nonzero gradient therefore gives a direction of decrease. The approximation is local, so the step size still matters.[^smoothness]

> \[!math\] 1. intuition
>
> These contours show $f(x,y) = x^2 + xy + y^2$. The arrows are four gradient steps with $\alpha = 0.2$, starting at $w_0 = (-2,3.65)$. Here $\nabla f(x,y) = (2x+y,x+2y)$.
>
> <figure class="tikz" data-remark-tikz style=""><span class="tikz-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><annotation encoding="application/x-tex">"\\usepackage{pgfplots}\n\\pgfplotsset{compat=1.16}\n\n\\begin{document}\n\\begin{tikzpicture}\n  \\begin{scope}\n    \\clip(-4,-1) rectangle (4,4);\n    \\draw plot[domain=0:360] ({cos(\\x)*sqrt(20/(sin(2*\\x)+2))},{sin(\\x)*sqrt(20/(sin(2*\\x)+2))});\n    \\draw plot[domain=0:360] ({cos(\\x)*sqrt(16/(sin(2*\\x)+2))},{sin(\\x)*sqrt(16/(sin(2*\\x)+2))});\n    \\draw plot[domain=0:360] ({cos(\\x)*sqrt(12/(sin(2*\\x)+2))},{sin(\\x)*sqrt(12/(sin(2*\\x)+2))});\n    \\draw plot[domain=0:360] ({cos(\\x)*sqrt(8/(sin(2*\\x)+2))},{sin(\\x)*sqrt(8/(sin(2*\\x)+2))});\n    \\draw plot[domain=0:360] ({cos(\\x)*sqrt(4/(sin(2*\\x)+2))},{sin(\\x)*sqrt(4/(sin(2*\\x)+2))});\n    \\draw plot[domain=0:360] ({cos(\\x)*sqrt(1/(sin(2*\\x)+2))},{sin(\\x)*sqrt(1/(sin(2*\\x)+2))});\n    \\draw plot[domain=0:360] ({cos(\\x)*sqrt(0.0625/(sin(2*\\x)+2))},{sin(\\x)*sqrt(0.0625/(sin(2*\\x)+2))});\n\n    \\draw[->,blue,ultra thick] (-2,3.65) to (-1.93,2.59);\n    \\draw[->,blue,ultra thick] (-1.93,2.59) to (-1.676,1.94);\n    \\draw[->,blue,ultra thick] (-1.676,1.94) to (-1.3936,1.4992);\n    \\draw[->,blue,ultra thick] (-1.3936,1.4992) to (-1.136,1.17824);\n\n    \\node at (-1.4,3.8){\\scriptsize $w_0$};\n    \\node at (-1.3,2.7){\\scriptsize $w_1$};\n    \\node at (-1.05,2.05){\\scriptsize $w_2$};\n    \\node at (-0.75,1.6){\\scriptsize $w_3$};\n    \\node at (-0.5,1.2){\\scriptsize $w_4$};\n  \\end{scope}\n\\end{tikzpicture}\n\\end{document}"</annotation></semantics></math></span><img src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIyMjcuNjIxOTVwdCIgaGVpZ2h0PSIxNDIuMjYzNzJwdCIgdmlld0JveD0iLTcyIC03MiAyMjcuNjIxOTUgMTQyLjI2MzcyIj48ZyBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQxLjU0MDk2OTg0ODYzMjgwNSw0MS41NDA5Njk4NDg2MzI4MDUpIHNjYWxlKDEsLTEpIj48ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2Utd2lkdGg9IjAuNCI+IDxjbGlwUGF0aCBpZD0icGdmN2YzNDMyODI1YjBiMDRiYjkyY2NmYTBmZmM0YjI1NDdjcDEiPjxwYXRoIGQ9IiBNIC0xMTMuODEwOTcgLTI4LjQ1Mjc0IE0gLTExMy44MTA5NyAtMjguNDUyNzQgTCAtMTEzLjgxMDk3IDExMy44MTA5NyBMIDExMy44MTA5NyAxMTMuODEwOTcgTCAxMTMuODEwOTcgLTI4LjQ1Mjc0IFogTSAxMTMuODEwOTcgMTEzLjgxMDk3ICAiPjwvcGF0aD4gPC9jbGlwUGF0aD4gPGcgY2xpcC1wYXRoPSJ1cmwoI3BnZjdmMzQzMjgyNWIwYjA0YmI5MmNjZmEwZmZjNGIyNTQ3Y3AxKSI+IDxwYXRoIGQ9IiBNIDg5Ljk3NTQ1IDAuMCBMIDc3LjczNDA0IDIwLjgyODU1IEwgNjUuMDkyMzMgMzcuNTgwODMgTCA1MS45NDcgNTEuOTQ3IEwgMzcuNTgwODMgNjUuMDkyMzMgTCAyMC44Mjg1NSA3Ny43MzQwNCBMIDAuMCA4OS45NzU0NSBMIC0yNi44ODk3OSAxMDAuMzU0MzUgTCAtNTkuNzQ1NzEgMTAzLjQ4Mjg2IEwgLTg5Ljk3NTQ1IDg5Ljk3NTQ1IEwgLTEwMy40ODI4NiA1OS43NDU3MSBMIC0xMDAuMzU0MzUgMjYuODg5NzkgTCAtODkuOTc1NDUgMC4wIEwgLTc3LjczNDA0IC0yMC44Mjg1NSBMIC02NS4wOTIzMyAtMzcuNTgwODMgTCAtNTEuOTQ3IC01MS45NDcgTCAtMzcuNTgwODMgLTY1LjA5MjMzIEwgLTIwLjgyODU1IC03Ny43MzQwNCBMIDAuMCAtODkuOTc1NDUgTCAyNi44ODk3OSAtMTAwLjM1NDM1IEwgNTkuNzQ1NzEgLTEwMy40ODI4NiBMIDg5Ljk3NTQ1IC04OS45NzU0NSBMIDEwMy40ODI4NiAtNTkuNzQ1NzEgTCAxMDAuMzU0MzUgLTI2Ljg4OTc5IEwgODkuOTc1NDUgMC4wICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPHBhdGggZD0iIE0gODAuNDc2MTUgMC4wIEwgNjkuNTI3MjIgMTguNjI5NTYgTCA1OC4yMjAxIDMzLjYxMzEgTCA0Ni40NjMyIDQ2LjQ2MzIgTCAzMy42MTMxIDU4LjIyMDEgTCAxOC42Mjk1NiA2OS41MjcyMiBMIDAuMCA4MC40NzYxNSBMIC0yNC4wNTA4NCA4OS43NjAxMiBMIC01My40MzgzMiA5Mi41NTc4IEwgLTgwLjQ3NjYgODAuNDc2NiBMIC05Mi41NTc4IDUzLjQzODMyIEwgLTg5Ljc2MDEyIDI0LjA1MDg0IEwgLTgwLjQ3NjE1IDAuMCBMIC02OS41MjcyMiAtMTguNjI5NTYgTCAtNTguMjIwMSAtMzMuNjEzMSBMIC00Ni40NjMyIC00Ni40NjMyIEwgLTMzLjYxMzEgLTU4LjIyMDEgTCAtMTguNjI5NTYgLTY5LjUyNzIyIEwgMC4wIC04MC40NzYxNSBMIDI0LjA1MDg0IC04OS43NjAxMiBMIDUzLjQzODMyIC05Mi41NTc4IEwgODAuNDc2NiAtODAuNDc2NiBMIDkyLjU1NzggLTUzLjQzODMyIEwgODkuNzYwMTIgLTI0LjA1MDg0IEwgODAuNDc2MTUgMC4wICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPHBhdGggZD0iIE0gNjkuNjk0MzcgMC4wIEwgNjAuMjEyNDMgMTYuMTMzNiBMIDUwLjQyMDA3IDI5LjExMDA1IEwgNDAuMjM4MyA0MC4yMzgzIEwgMjkuMTEwMDUgNTAuNDIwMDcgTCAxNi4xMzM2IDYwLjIxMjQzIEwgMC4wIDY5LjY5NDM3IEwgLTIwLjgyODU1IDc3LjczNDA0IEwgLTQ2LjI3ODY5IDgwLjE1NzA2IEwgLTY5LjY5NDM3IDY5LjY5NDM3IEwgLTgwLjE1NzA2IDQ2LjI3ODY5IEwgLTc3LjczNDA0IDIwLjgyODU1IEwgLTY5LjY5NDM3IDAuMCBMIC02MC4yMTI0MyAtMTYuMTMzNiBMIC01MC40MjAwNyAtMjkuMTEwMDUgTCAtNDAuMjM4MyAtNDAuMjM4MyBMIC0yOS4xMTAwNSAtNTAuNDIwMDcgTCAtMTYuMTMzNiAtNjAuMjEyNDMgTCAwLjAgLTY5LjY5NDM3IEwgMjAuODI4NTUgLTc3LjczNDA0IEwgNDYuMjc4NjkgLTgwLjE1NzA2IEwgNjkuNjk0MzcgLTY5LjY5NDM3IEwgODAuMTU3MDYgLTQ2LjI3ODY5IEwgNzcuNzM0MDQgLTIwLjgyODU1IEwgNjkuNjk0MzcgMC4wICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPHBhdGggZD0iIE0gNTYuOTA1NDkgMC4wIEwgNDkuMTYzMjEgMTMuMTczMTEgTCA0MS4xNjc4MiAyMy43NjgyIEwgMzIuODU0MTkgMzIuODU0MTkgTCAyMy43NjgyIDQxLjE2NzgyIEwgMTMuMTczMTEgNDkuMTYzMjEgTCAwLjAgNTYuOTA1NDkgTCAtMTcuMDA2MjYgNjMuNDY5NDcgTCAtMzcuNzg2NjIgNjUuNDQ4MzMgTCAtNTYuOTA1MDQgNTYuOTA1MDQgTCAtNjUuNDQ4MzMgMzcuNzg2NjIgTCAtNjMuNDY5NDcgMTcuMDA2MjYgTCAtNTYuOTA1NDkgMC4wIEwgLTQ5LjE2MzIxIC0xMy4xNzMxMSBMIC00MS4xNjc4MiAtMjMuNzY4MiBMIC0zMi44NTQxOSAtMzIuODU0MTkgTCAtMjMuNzY4MiAtNDEuMTY3ODIgTCAtMTMuMTczMTEgLTQ5LjE2MzIxIEwgMC4wIC01Ni45MDU0OSBMIDE3LjAwNjI2IC02My40Njk0NyBMIDM3Ljc4NjYyIC02NS40NDgzMyBMIDU2LjkwNTA0IC01Ni45MDUwNCBMIDY1LjQ0ODMzIC0zNy43ODY2MiBMIDYzLjQ2OTQ3IC0xNy4wMDYyNiBMIDU2LjkwNTQ5IDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxwYXRoIGQ9IiBNIDQwLjIzODMgMC4wIEwgMzQuNzYzNjEgOS4zMTQ3NyBMIDI5LjEwOTYyIDE2LjgwNjU1IEwgMjMuMjMxMTYgMjMuMjMxMTYgTCAxNi44MDY1NSAyOS4xMDk2MiBMIDkuMzE0NzcgMzQuNzYzNjEgTCAwLjAgNDAuMjM4MyBMIC0xMi4wMjUyIDQ0Ljg3OTg0IEwgLTI2LjcxODcyIDQ2LjI3ODY5IEwgLTQwLjIzODMgNDAuMjM4MyBMIC00Ni4yNzg2OSAyNi43MTg3MiBMIC00NC44Nzk4NCAxMi4wMjUyIEwgLTQwLjIzODMgMC4wIEwgLTM0Ljc2MzYxIC05LjMxNDc3IEwgLTI5LjEwOTYyIC0xNi44MDY1NSBMIC0yMy4yMzExNiAtMjMuMjMxMTYgTCAtMTYuODA2NTUgLTI5LjEwOTYyIEwgLTkuMzE0NzcgLTM0Ljc2MzYxIEwgMC4wIC00MC4yMzgzIEwgMTIuMDI1MiAtNDQuODc5ODQgTCAyNi43MTg3MiAtNDYuMjc4NjkgTCA0MC4yMzgzIC00MC4yMzgzIEwgNDYuMjc4NjkgLTI2LjcxODcyIEwgNDQuODc5ODQgLTEyLjAyNTIgTCA0MC4yMzgzIDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxwYXRoIGQ9IiBNIDIwLjExOTE0IDAuMCBMIDE3LjM4MTM2IDQuNjU3MTcgTCAxNC41NTQxNSA4LjQwMzA1IEwgMTEuNjE1MzYgMTEuNjE1MzYgTCA4LjQwMzA1IDE0LjU1NDE1IEwgNC42NTcxNyAxNy4zODEzNiBMIDAuMCAyMC4xMTkxNCBMIC02LjAxMjYgMjIuNDQwMTIgTCAtMTMuMzU4OTIgMjMuMTM4NjkgTCAtMjAuMTE5MTQgMjAuMTE5MTQgTCAtMjMuMTM4NjkgMTMuMzU4OTIgTCAtMjIuNDQwMTIgNi4wMTI2IEwgLTIwLjExOTE0IDAuMCBMIC0xNy4zODEzNiAtNC42NTcxNyBMIC0xNC41NTQxNSAtOC40MDMwNSBMIC0xMS42MTUzNiAtMTEuNjE1MzYgTCAtOC40MDMwNSAtMTQuNTU0MTUgTCAtNC42NTcxNyAtMTcuMzgxMzYgTCAwLjAgLTIwLjExOTE0IEwgNi4wMTI2IC0yMi40NDAxMiBMIDEzLjM1ODkyIC0yMy4xMzg2OSBMIDIwLjExOTE0IC0yMC4xMTkxNCBMIDIzLjEzODY5IC0xMy4zNTg5MiBMIDIyLjQ0MDEyIC02LjAxMjYgTCAyMC4xMTkxNCAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8cGF0aCBkPSIgTSA1LjAyOTY4IDAuMCBMIDQuMzQ1MDIgMS4xNjM5NiBMIDMuNjM3NzcgMi4xMDA0MyBMIDIuOTAzMTggMi45MDMxOCBMIDIuMTAwNDMgMy42Mzc3NyBMIDEuMTYzOTYgNC4zNDUwMiBMIDAuMCA1LjAyOTY4IEwgLTEuNTAxNzQgNS42MDUzNiBMIC0zLjMzOTA4IDUuNzgzOCBMIC01LjAyOTY4IDUuMDI5NjggTCAtNS43ODM4IDMuMzM5MDggTCAtNS42MDUzNiAxLjUwMTc0IEwgLTUuMDI5NjggMC4wIEwgLTQuMzQ1MDIgLTEuMTYzOTYgTCAtMy42Mzc3NyAtMi4xMDA0MyBMIC0yLjkwMzE4IC0yLjkwMzE4IEwgLTIuMTAwNDMgLTMuNjM3NzcgTCAtMS4xNjM5NiAtNC4zNDUwMiBMIDAuMCAtNS4wMjk2OCBMIDEuNTAxNzQgLTUuNjA1MzYgTCAzLjMzOTA4IC01Ljc4MzggTCA1LjAyOTY4IC01LjAyOTY4IEwgNS43ODM4IC0zLjMzOTA4IEwgNS42MDUzNiAtMS41MDE3NCBMIDUuMDI5NjggMC4wICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgc3Ryb2tlPSIjMDBmIiBmaWxsPSIjMDBmIj4gPGcgc3Ryb2tlLXdpZHRoPSIxLjYiPiA8cGF0aCBkPSIgTSAtNTYuOTA1NDkgMTAzLjg1MjMzIEwgLTU1LjAxODk4IDc1LjI4ODk0ICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4wNjU4OSwtMC45OTc3OSwwLjk5Nzc5LDAuMDY1ODksLTU0Ljk2NjMsNzQuNDkwNzIpIj4gPGcgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAuMCI+IDxnIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+IDxnIHN0cm9rZS1saW5lam9pbj0icm91bmQiPiA8cGF0aCBkPSIgTSAtMy41MiA0LjU2NzczIEMgLTIuODc2OSAxLjgyNzA2IC0xLjQ0Mzg1IDAuNTMyOSAwLjAgMC4wIEMgLTEuNDQzODUgLTAuNTMyOSAtMi44NzY5IC0xLjgyNzA2IC0zLjUyIC00LjU2NzczICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPC9nPiA8L2c+IDwvZz4gIDwvZz4gPC9nPiA8L2c+IDxnIHN0cm9rZT0iIzAwZiIgZmlsbD0iIzAwZiI+IDxnIHN0cm9rZS13aWR0aD0iMS42Ij4gPHBhdGggZD0iIE0gLTU0LjkxMzU3IDczLjY5MjQ5IEwgLTQ4LjI2ODk3IDU2LjY4ODU0ICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4zNjM5NSwtMC45MzEzNSwwLjkzMTM1LDAuMzYzOTUsLTQ3Ljk3NzgxLDU1Ljk0MzQ3KSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPiA8ZyBzdHJva2UtbGluZWpvaW49InJvdW5kIj4gPHBhdGggZD0iIE0gLTMuNTIgNC41Njc3MyBDIC0yLjg3NjkgMS44MjcwNiAtMS40NDM4NSAwLjUzMjkgMC4wIDAuMCBDIC0xLjQ0Mzg1IC0wLjUzMjkgLTIuODc2OSAtMS44MjcwNiAtMy41MiAtNC41Njc3MyAgIiBmaWxsPSJub25lIj48L3BhdGg+IDwvZz4gPC9nPiA8L2c+ICA8L2c+IDwvZz4gPC9nPiA8ZyBzdHJva2U9IiMwMGYiIGZpbGw9IiMwMGYiPiA8ZyBzdHJva2Utd2lkdGg9IjEuNiI+IDxwYXRoIGQ9IiBNIC00Ny42ODY2NSA1NS4xOTgzOCBMIC00MC41MTQ4IDQ0LjAwMzcgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjUzOTQxLC0wLjg0MTk4LDAuODQxOTgsMC41Mzk0MSwtNDAuMDgzMjgsNDMuMzMwMTEpIj4gPGcgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAuMCI+IDxnIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+IDxnIHN0cm9rZS1saW5lam9pbj0icm91bmQiPiA8cGF0aCBkPSIgTSAtMy41MiA0LjU2NzczIEMgLTIuODc2OSAxLjgyNzA2IC0xLjQ0Mzg1IDAuNTMyOSAwLjAgMC4wIEMgLTEuNDQzODUgLTAuNTMyOSAtMi44NzY5IC0xLjgyNzA2IC0zLjUyIC00LjU2NzczICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPC9nPiA8L2c+IDwvZz4gIDwvZz4gPC9nPiA8L2c+IDxnIHN0cm9rZT0iIzAwZiIgZmlsbD0iIzAwZiI+IDxnIHN0cm9rZS13aWR0aD0iMS42Ij4gPHBhdGggZD0iIE0gLTM5LjY1MTc1IDQyLjY1NjUyIEwgLTMzLjMyMzc4IDM0Ljc3MTg3ICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC42MjU4OSwtMC43Nzk4NiwwLjc3OTg2LDAuNjI1ODksLTMyLjgyMzA2LDM0LjE0Nzk4KSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWNhcD0icm91bmQiPiA8ZyBzdHJva2UtbGluZWpvaW49InJvdW5kIj4gPHBhdGggZD0iIE0gLTMuNTIgNC41Njc3MyBDIC0yLjg3NjkgMS44MjcwNiAtMS40NDM4NSAwLjUzMjkgMC4wIDAuMCBDIC0xLjQ0Mzg1IC0wLjUzMjkgLTIuODc2OSAtMS44MjcwNiAtMy41MiAtNC41Njc3MyAgIiBmaWxsPSJub25lIj48L3BhdGg+IDwvZz4gPC9nPiA8L2c+ICA8L2c+IDwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDQuNjc3NiwxMDcuMTEzNTYpIj4gPGcgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InNjYWxlKC0xLDEpIHRyYW5zbGF0ZSg0MS41NDA5Njk4NDg2MzI4MDUsNDEuNTQwOTY5ODQ4NjMyODA1KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI0MS41NDA5Njk4NDg2MzI4MDUiIHg9IjQxLjU0MDk2OTg0ODYzMjgwNSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnc8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNDIuNTQwOTY5ODQ4NjMyODA1IiB4PSI0Ny4zMjYwMjIxNDgxMzIzMiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjUiIGZpbGw9ImJsYWNrIj4wPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00MS44MzI1OCw3NS44MTUzNykiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKDQxLjU0MDk2OTg0ODYzMjgwNSw0MS41NDA5Njk4NDg2MzI4MDUpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjQxLjU0MDk2OTg0ODYzMjgwNSIgeD0iNDEuNTQwOTY5ODQ4NjMyODA1IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNyIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+dzwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI0Mi41NDA5Njk4NDg2MzI4MDUiIHg9IjQ3LjMyNjAyMjE0ODEzMjMyIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNSIgZmlsbD0iYmxhY2siPjE8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM0LjcxOTM5LDU3LjMyMTI2KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoNDEuNTQwOTY5ODQ4NjMyODA1LDQxLjU0MDk2OTg0ODYzMjgwNSkgc2NhbGUoLTEsLTEpIj48ZyBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIj4gPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNDEuNTQwOTY5ODQ4NjMyODA1IiB4PSI0MS41NDA5Njk4NDg2MzI4MDUiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj53PC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjQyLjU0MDk2OTg0ODYzMjgwNSIgeD0iNDcuMzI2MDIyMTQ4MTMyMzIiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI1IiBmaWxsPSJibGFjayI+MjwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjYuMTgzNDksNDQuNTE3NjEpIj4gPGcgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InNjYWxlKC0xLDEpIHRyYW5zbGF0ZSg0MS41NDA5Njk4NDg2MzI4MDUsNDEuNTQwOTY5ODQ4NjMyODA1KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSI0MS41NDA5Njk4NDg2MzI4MDUiIHg9IjQxLjU0MDk2OTg0ODYzMjgwNSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnc8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNDIuNTQwOTY5ODQ4NjMyODA1IiB4PSI0Ny4zMjYwMjIxNDgxMzIzMiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjUiIGZpbGw9ImJsYWNrIj4zPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xOS4wNzAzLDMzLjEzNjI2KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoNDEuNTQwOTY5ODQ4NjMyODA1LDQxLjU0MDk2OTg0ODYzMjgwNSkgc2NhbGUoLTEsLTEpIj48ZyBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIj4gPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iNDEuNTQwOTY5ODQ4NjMyODA1IiB4PSI0MS41NDA5Njk4NDg2MzI4MDUiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj53PC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9IjQyLjU0MDk2OTg0ODYzMjgwNSIgeD0iNDcuMzI2MDIyMTQ4MTMyMzIiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI1IiBmaWxsPSJibGFjayI+NDwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8L2c+IDwvZz4gPC9nPiA8L2c+PC9zdmc+" alt="tikz diagram" loading="lazy" decoding="async"><figcaption><em>source code</em><button class="source-code-button" aria-label="copy source code for this tikz graph" title="copy source code for this tikz graph"><svg class="source-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><use href="#code-icon"></use></svg><svg class="check-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 16 16" fill="currentColor" stroke="none" stroke-width="0" stroke-linecap="round" stroke-linejoin="round"><use href="#github-check"></use></svg></button></figcaption></figure>

Even the quadratic $f(x) = x^2/2$ can diverge with a bad step size:

$$
x_{t+1} = (1-\alpha)x_t.
$$

For $x_0 \ne 0$, the iterates converge to zero when $0 < \alpha < 2$. At $\alpha = 2$ they alternate between $x_0$ and $-x_0$; above that, their magnitudes grow. Convexity alone gives no permission to take an arbitrary step.

A zero gradient only identifies a stationary point. For example, gradient descent on $f(x)=\cos x$ initialized at $x_0=0$ stays at a maximum. For a differentiable [[thoughts/Convex function|convex function]], a zero gradient does certify a global minimum. Reaching such a point requires further assumptions.

## calculate the gradient

Suppose the training objective is a **sum** of per-example losses plus a differentiable regularizer:

$$
\begin{aligned}
E(w) &= L(w) + \lambda R(w), \qquad \lambda \ge 0, \\
L(w) &= \sum_{i=1}^{n} \ell(f_w(x_i),y_i), \\
\nabla E(w) &= \sum_{i=1}^{n}\nabla_w\ell(f_w(x_i),y_i) + \lambda\nabla R(w).
\end{aligned}
$$

Here $f_w$ is the prediction model, and differentiation passes through it to the parameters $w$. For $R(w)=\lVert w\rVert_2^2/2$, the regularizer contributes $\lambda w$.

Splitting the data into disjoint batches $S_1,\ldots,S_m$ gives an exact decomposition, provided every gradient is evaluated at the same $w$:

$$
g_j(w) = \sum_{i\in S_j}\nabla_w\ell(f_w(x_i),y_i),
\qquad
\nabla L(w) = \sum_{j=1}^{m}g_j(w).
$$

A mini-batch update uses one batch to estimate the full gradient. If $B$ is sampled uniformly from all subsets of $b$ examples, then

$$
\widehat g_B(w) = \frac{n}{b}\sum_{i\in B}\nabla_w\ell(f_w(x_i),y_i) + \lambda\nabla R(w),
\qquad
\mathbb{E}_B[\widehat g_B(w)] = \nabla E(w).
$$

The factor $n/b$ matches the summed loss above. For a mean loss, use the batch mean instead. Keep that convention explicit: changing the loss scaling while keeping $\lambda$ fixed changes the relative weight of regularization. Updating $w$ between batches also means their gradients no longer sum to the full gradient at one shared point.

![[thoughts/university/twenty-four-twenty-five/sfwr-4ml3/Stochastic gradient descent|SGD]]

## convergence

A useful assumption is that the **gradient** is $\beta$-Lipschitz, with $\beta > 0$:

$$
\lVert\nabla f(u)-\nabla f(v)\rVert_2 \le \beta\lVert u-v\rVert_2
\qquad\text{for all }u,v\in\mathbb{R}^d.
$$

This is also called $\beta$-smoothness. It bounds the error in the local approximation and gives

$$
f(w-\alpha\nabla f(w))
\le f(w)-\alpha\left(1-\frac{\alpha\beta}{2}\right)\lVert\nabla f(w)\rVert_2^2.
$$

Thus $0<\alpha<2/\beta$ decreases the objective whenever the gradient is nonzero. If $f$ is also convex and has a minimizer $w^\star$, taking $\alpha=1/\beta$ gives the bound[^convex-rate]

$$
f(w_t)-f(w^\star)
\le \frac{2\beta\lVert w_0-w^\star\rVert_2^2}{t+4}.
$$

The function values approach the global minimum. Existence matters: the convex function $f(x)=\log(1+e^x)$ has a $1/4$-Lipschitz gradient, yet its infimum zero on $\mathbb{R}$ is never attained.

Lipschitz continuity of $f$ itself is a different assumption. For example, $f(x)=|x|$ is Lipschitz and convex, yet has no gradient at zero. Nonsmooth problems need an appropriate method, such as subgradient descent, with its own step-size analysis.

[^smoothness]: Aaron Sidford, [Smooth Functions](https://web.stanford.edu/~sidford/courses/20fa_opt_theory/sidford_mse213_2020fa_chap_2_smoothness.pdf), sections 1–3: local descent and the smoothness bound.

[^convex-rate]: Aaron Sidford, [Convex Functions](https://web.stanford.edu/~sidford/courses/20fa_opt_theory/sidford_mse213_2020fa_chap_3_convexity.pdf), theorem 16 with the strong-convexity parameter set to zero.

