Refresher: Linear Algebra, Analysis and Optimization for MVA
M2 MVA · Refresher · 0 ECTS
Contents
- Introduction and overview
- 0. Review: the M1 toolkit
- 1. Eigenvalues, the spectral theorem and positive semidefinite matrices
- 2. Norms, orthogonal projections and least squares
- 3. The singular value decomposition and low-rank approximation
- 4. Matrix calculus
- 5. Hilbert spaces, orthonormal bases and Fourier analysis
- 6. Convexity, smoothness and strong convexity
- 7. Gradient descent and Newton’s method
- 8. Constraints, KKT conditions and Lagrangian duality
- 9. Stochastic gradient and proximal methods
- 10. Complements for self-study
- 11. Research directions and open problems
- Exercises
- Projects and assessment
- References
Introduction and overview
| Module | Refresher: Linear Algebra, Analysis and Optimization for MVA |
| Official title | Cours de remise à niveau (refresher fortnight) — content not published |
| Instructors | not published (master-mva.com, 2026–2027) |
| Period | Before semester 1 · refresher fortnight (14/09/2026 – 24/09/2026) |
| Credits and volume | no ECTS · 12 h of guided self-study (master-mva.com planning: “Cours de remise à niveau : 14/09 au 24/09/2026 (facultatifs et sans inscription / obligatoires pour track I&I)”; content and volume not published) |
| Label | Refresher · optional and without registration, mandatory for the I&I track (master-mva.com planning) |
| Language | Not displayed (no programme is published; these notes are in English) |
| Assessment | None displayed: the refresher courses are optional and without registration (master-mva.com planning); this page offers an ungraded self-check |
| Prerequisites | Not displayed; this page assumes the linear algebra and calculus of a first degree in mathematics, computer science or physics |
Audience: a student entering the MVA whose linear algebra and optimisation date back a few years, or were learned without proofs, and who wants to follow the first lectures of semester 1 without stopping at every matrix identity.
Empirical first: fit a polynomial of degree 11 to 50 exact data points. Solving the normal equations returns the coefficients with a relative error of 11 %, while a QR factorisation returns them to 8 digits (ch. 2). Minimise a regularised logistic loss on the breast-cancer data of scikit-learn: after 1000 steps, gradient descent still has a gradient of norm 10^{-4}, while Newton’s method reaches 10^{-13} in 8 steps (ch. 7). Eigenvalues explain both gaps, and this page is about such explanations.
This page reviews, with proofs, the linear algebra, analysis and optimisation that the MVA course descriptions take for granted. It is independent support written for the refresher fortnight, not the official refresher course. It has two companions: Probability and Statistics and Scientific Python, NumPy and PyTorch.
The first-semester courses that lean on it most are Convex Optimization, Introduction to Statistical Learning, Theoretical Foundations of Deep Learning and Foundations of Distributed and Large-Scale Optimization.
What you will be able to do
- Diagonalise a symmetric matrix, read its spectrum and bound quadratic forms with the Rayleigh quotient.
- Recognise a positive semidefinite matrix with four equivalent tests or a Schur complement, and a positive definite one with Cholesky or Sylvester’s criterion.
- Compute operator, Frobenius and nuclear norms and condition numbers, and predict the accuracy they cost.
- Solve least-squares problems by projection, QR or SVD, and explain why the normal equations can fail.
- Compute an SVD, a pseudo-inverse and the best rank-k approximation of a matrix, and run PCA as a truncated SVD.
- Differentiate scalar functions of vectors and matrices (quadratic forms, traces, log-determinants) and check the result by automatic differentiation.
- Expand a function on an orthonormal basis of a Hilbert space, and compute Fourier series, Fourier transforms and discrete Fourier transforms with their Parseval identities.
- Prove that a function is convex, smooth or strongly convex, and compute its constants L and \mu.
- State and prove the convergence rates of gradient descent, and explain the local quadratic convergence of Newton’s method.
- Write the Lagrangian, the dual problem and the KKT conditions of a constrained problem, and solve small problems with them.
- Run stochastic gradient with a sound step-size rule, and compute proximal operators such as soft thresholding.
Official objectives and syllabus (2026–2027)
The master-mva.com planning announces refresher courses (“cours de remise à niveau”) from 14 to 24 September 2026. They are optional and without registration, and mandatory for students of the I&I track. The planning publishes neither their programme, nor their instructors, nor their volume, and the Université Paris-Saclay programme table does not list them.
This page is therefore not the official refresher. It covers the mathematical tools that the official MVA course descriptions name or assume, at the level those courses need. The 12 hours are the catalogue’s estimate of guided self-study for this page.
Since there is no official topic list, the table below plays its role. Each row is a tool. The middle column lists MVA courses whose official description (master-mva.com or the Université Paris-Saclay course detail) names a topic that relies on it, with that topic in brackets. The last column says where this page teaches it.
| Tool | Used in (MVA courses) | Taught in |
|---|---|---|
| Eigen-decomposition and the spectral theorem | Graphs in Machine Learning (graph Laplacians, spectral clustering); Large Random Matrices (eigenvalues of sample covariance matrices); Kernel Methods (kernel PCA); Audio Signal Analysis (MUSIC, ESPRIT); Mathematical Methods for Neuroscience (classification of equilibria) | ch. 1: Theorem 1.2, Proposition 1.3; ch. 10: Courant–Fischer, power iteration |
| Positive semidefinite matrices | Kernel Methods (positive definite kernels); Convex Optimization (convex relaxations); Probabilistic Graphical Models (Gaussian processes, PPCA); Optimal Transport (Bures metric on Gaussian distributions); Learning Physical Phenomena (Gaussian processes) | ch. 1: Definition 1.4, Proposition 1.5, Example 1.6; ch. 10: Schur complement |
| Vector and matrix norms | Convex Optimization; Theoretical Foundations of Deep Learning (robustness, control of the generalisation error); Object Recognition and Computer Vision (sparse coding) | ch. 2: Definitions 2.1–2.2; ch. 3: nuclear norm |
| Orthogonal projections and least squares | Inverse Problems and Imaging (least-squares problems); Probabilistic Graphical Models (linear regression); 3D Computer Vision (calibration, projection matrix) | ch. 2: Definition 2.3, Theorem 2.4, Proposition 2.5 |
| Singular value decomposition and pseudo-inverse | 3D Computer Vision (essential and fundamental matrices); Point Clouds and 3D Modelling (registration); Functional Brain Imaging (M/EEG inverse problem, MUSIC, beamforming) | ch. 3: Theorem 3.1, Definition 3.3 |
| Low-rank approximation and PCA | Foundations of LLMs, ALTEGRAD and LLMs for Code and Proof (LoRA fine-tuning); Extreme Values (PCA tutorial); Learning Physical Phenomena (low-rank methods); Theoretical Foundations of Deep Learning (landscape of linear networks, read with Baldi and Hornik’s “Neural networks and principal component analysis”) | ch. 3: Theorem 3.4, Proposition 3.6 |
| Matrix calculus | Theoretical Foundations of Deep Learning (back-propagation, Laplace approximation); Deep Learning (training feedforward networks); Probabilistic Graphical Models (maximum likelihood, Gaussian mixtures) | ch. 4: Propositions 4.2–4.3, Example 4.4; Exercise 4 |
| Hilbert spaces | Kernel Methods (reproducing kernel Hilbert spaces); Distributed Optimization (proximal tools, with convex analysis in Hilbert spaces as reference); Learning Physical Phenomena (functional representations) | ch. 5: Definition 5.1, Theorem 5.2; ch. 10: Riesz representation |
| Orthonormal bases | Image Denoising (multiscale DCT denoising); Digital Photography (wavelets); Audio Signal Processing: Time–Frequency Analysis (time–frequency analysis) | ch. 5: Definition 5.3, Theorem 5.4 |
| Fourier series and Fourier transform | Sub-Pixel Image Processing (sampling, FFT interpolation, phase spectrum); Image Denoising (image sampling and the discrete Fourier transform); Digital Photography and Deep Learning for Image Restoration (Fourier analysis as prerequisite); Inverse Problems and Imaging (spectral properties of stationary processes); Audio Time–Frequency Analysis; Geometry Processing (Fourier features) | ch. 5: Definitions 5.5 and 5.8, Propositions 5.6, 5.9 and 5.10, Example 5.7; ch. 10: sampling theorem |
| Convexity | Convex Optimization (convex sets, functions and programs); Introduction to Statistical Learning (convex risk minimisation); Graphical Models: Discrete Inference (convex relaxations) | ch. 6: Definitions 6.1 and 6.3, Proposition 6.2, Lemma 6.4 |
| Gradient descent and its rates (smooth, strongly convex) | Convex Optimization (first-order methods, acceleration); Distributed Optimization (large-scale optimisation); Theoretical Foundations of Deep Learning (non-convex optimisation, loss landscape) | ch. 7: Theorems 7.2–7.4; ch. 10: acceleration |
| Newton’s method | Convex Optimization (interior-point methods, self-concordance); Probabilistic Graphical Models (logistic regression) | ch. 7: Algorithm 7.6, Theorem 7.7 |
| Constraints and KKT conditions | Convex Optimization (constraints, barriers); Kernel Methods (support vector machines); Robotics (optimal control) | ch. 8: Theorem 8.4, Examples 8.5–8.6 |
| Lagrangian duality | Convex Optimization (duality); Optimal Transport (dual formulation); Generative Models for Images (dual formulations of Wasserstein GANs); Graphical Models: Discrete Inference (dual decomposition, LP relaxations) | ch. 8: Definition 8.1, Proposition 8.2, Theorem 8.3, Example 8.7 |
| Stochastic gradient | Computational Statistics (stochastic gradient, stochastic approximation); Sequential Learning (stochastic optimisation); Foundations of LLMs (from SGD to Muon via AdamW); Training and Deploying Large-Scale Models (communication-efficient distributed optimisation) | ch. 9: Theorem 9.2, Proposition 9.3 |
| Proximal operators | Distributed Optimization (proximal algorithms, splitting); Generative Models for Images (proximal operators, plug-and-play restoration); Deep Learning for Image Restoration (variational methods for inverse problems) | ch. 9: Definition 9.4, Propositions 9.5–9.6, Algorithm 9.7 |
Every tool of the list is taught on this page. The extensions are the review of ch. 0, the self-study complements of ch. 10 (Courant–Fischer and Weyl, power iteration, the sampling theorem, acceleration, conjugate functions, a proof sketch of Slater’s theorem, and the proofs deferred from the core chapters) and the research directions of ch. 11.
Where this course fits in the programme
Official prerequisites: not displayed. The page assumes a first university course in linear algebra (matrices, determinants, eigenvalues) and in the differential calculus of several variables; ch. 0 recalls what is used.
- Companion refreshers — Probability and Statistics uses ch. 1 for covariance matrices and Gaussian vectors; Scientific Python teaches the NumPy and PyTorch of the code blocks.
- Semester 1 courses that build on it — Convex Optimization and Distributed Optimization continue ch. 6–9; Introduction to Statistical Learning and Probabilistic Graphical Models use ch. 1–4; Sub-Pixel Image Processing and Image Denoising use ch. 5; Optimal Transport uses ch. 8.
- Semester 2 courses that build on it — Kernel Methods (ch. 1, 5, 8), Graphs in Machine Learning (ch. 1, 3), Large Random Matrices (ch. 1, 3), Inverse Problems and Imaging (ch. 2, 5, 9) and Generative Models for Images (ch. 8, 9).
Course outline
- 0. Review: the M1 toolkit — linear maps, rank, inner products, trace and determinant, gradients and Taylor expansions.
- 1. Eigenvalues, the spectral theorem and positive semidefinite matrices — diagonalising symmetric matrices and testing positivity.
- 2. Norms, orthogonal projections and least squares — measuring vectors and matrices, projecting, and solving overdetermined systems stably.
- 3. The singular value decomposition and low-rank approximation — the SVD, the pseudo-inverse, the Eckart–Young theorem and PCA.
- 4. Matrix calculus — gradients of functions of matrices, the chain rule and reverse-mode differentiation.
- 5. Hilbert spaces, orthonormal bases and Fourier analysis — projection in infinite dimension, Parseval, Fourier series, the Fourier transform and the FFT.
- 6. Convexity, smoothness and strong convexity — the three properties that decide how fast optimisation algorithms converge.
- 7. Gradient descent and Newton’s method — rates for smooth and strongly convex functions, and local quadratic convergence.
- 8. Constraints, KKT conditions and Lagrangian duality — multipliers, weak and strong duality, and linear programming.
- 9. Stochastic gradient and proximal methods — optimisation with noisy gradients and with non-smooth regularisers.
- 10. Complements for self-study — min–max theorems, power iteration, sampling, acceleration, conjugates, Slater’s theorem.
- 11. Research directions and open problems — where these tools meet current research.
Session plan
12 h of guided self-study = 4 steps of 3 h. The master-mva.com planning announces the refresher fortnight (14–24 September 2026) but publishes neither its content nor its volume; the 12 h are the catalogue’s estimate for this independent page, and the split into four steps is a proposal.
Level 1 = foundations, 2 = core results and algorithms, 3 = advanced material. The level never goes down from one step to the next.
| Step | Hours | Level | Content | Practice |
|---|---|---|---|---|
| 1 | 3 h | 1 | ch. 1 Spectral theorem, Rayleigh quotient, positive semidefinite matrices; ch. 2 Norms, condition number, projections, least squares | Ex. 1–3; self-check Q1–Q5 |
| 2 | 3 h | 2 | ch. 3 SVD, pseudo-inverse, Eckart–Young, PCA; ch. 4 Matrix calculus; ch. 5 Hilbert spaces, orthonormal bases, Fourier series, Fourier transform, DFT | Ex. 4, 5, 7; self-check Q6–Q8 |
| 3 | 3 h | 2 | ch. 6 Convexity, smoothness, strong convexity; ch. 7 Gradient descent and Newton’s method | Ex. 8, 9; self-check Q9–Q10 |
| 4 | 3 h | 3 | ch. 8 Constraints, KKT conditions, Lagrangian duality; ch. 9 Stochastic gradient, proximal operators, ISTA | Ex. 6, 10, 13; self-check Q11–Q12 |
Self-study, outside the 12 h (about 6 h in total): ch. 0 Review: the M1 toolkit (≈ 1 h, before step 1, if the self-check shows gaps) · ch. 10 Complements for self-study (≈ 3 h, with Ex. 11–12) · ch. 11 Research directions and open problems (≈ 2 h, with Ex. 14).
How to study this module
- Take the diagnostic self-check first. If you answer at least eleven of the twelve questions correctly, read only the recap boxes and go to the exercises.
- Otherwise follow the four steps in order. Each chapter starts with the problem it solves and ends with a recap box. No chapter relies on a later one; ch. 10 only collects deferred proofs and extensions.
- Run every code block and change one number (a size, a step, a penalty) to see the effect predicted by the text. The code uses NumPy, SciPy, scikit-learn and PyTorch on the CPU, with synthetic data or data sets bundled with scikit-learn.
- Redo the central proofs (Theorems 1.2, 2.4, 3.4, 7.3, 7.4 and 8.4) on paper without the notes: the MVA courses take these results for granted.
- Keep ch. 10 for the week before the course that needs it; ch. 11 is for curiosity and for choosing a research project.
0. Review: the M1 toolkit
Every later chapter treats matrices as linear maps, measures vectors with inner products and differentiates functions of several variables. This chapter fixes the notation and recalls the facts that the rest of the page uses without proof.
Definition 0.1 — Linear maps, rank and kernel A matrix A \in \mathbb{R}^{m \times n} is the linear map x \mapsto Ax from \mathbb{R}^n to \mathbb{R}^m. Its range and its kernel are \operatorname{range}(A) = \{Ax : x \in \mathbb{R}^n\}, \qquad \ker(A) = \{x : Ax = 0\}. The rank is the dimension of the range. It equals the number of linearly independent columns, and also the number of linearly independent rows. The rank–nullity theorem states \operatorname{rank}(A) + \dim \ker(A) = n .
Definition 0.2 — Inner product, norm, orthogonal matrices On \mathbb{R}^n the inner product is \langle x, y \rangle = x^\top y and the Euclidean norm is \|x\| = \sqrt{x^\top x}. Two vectors are orthogonal when x^\top y = 0. The Cauchy–Schwarz inequality reads |\langle x, y \rangle| \le \|x\|\, \|y\| , with equality if and only if x and y are collinear. A square matrix Q is orthogonal when Q^\top Q = I. It preserves inner products and norms, because (Qx)^\top (Qy) = x^\top y.
Proposition 0.3 — Trace and determinant For square matrices, the trace is linear and cyclic, and the determinant is multiplicative: \operatorname{tr}(AB) = \operatorname{tr}(BA), \qquad \det(AB) = \det A \, \det B . If \lambda_1, \dots, \lambda_n are the complex eigenvalues of A, counted with multiplicity, then \operatorname{tr} A = \sum_i \lambda_i, \qquad \det A = \prod_i \lambda_i . The matrix A is invertible if and only if \det A \neq 0, if and only if \ker A = \{0\}. Two matrices of the same size have the Frobenius inner product \langle A, B \rangle_F = \operatorname{tr}(A^\top B) = \sum_{i,j} A_{ij} B_{ij} .
Definition 0.4 — Gradient, Hessian, Jacobian A function f : \mathbb{R}^n \to \mathbb{R} is differentiable at x when there is a vector \nabla f(x), the gradient, such that f(x + h) = f(x) + \langle \nabla f(x), h \rangle + o(\|h\|). When f is twice continuously differentiable, the Hessian \nabla^2 f(x) is the symmetric matrix of second partial derivatives, and f(x + h) = f(x) + \langle \nabla f(x), h \rangle + \tfrac12\, h^\top \nabla^2 f(x)\, h + o(\|h\|^2). For g : \mathbb{R}^n \to \mathbb{R}^m, the Jacobian J_g(x) \in \mathbb{R}^{m \times n} collects the partial derivatives of the coordinates of g. The chain rule reads J_{f \circ g}(x) = J_f(g(x))\, J_g(x).
Example 0.5 — The least-squares function Let f(x) = \frac12 \|Ax - b\|^2. Expanding the square, f(x + h) = f(x) + (Ax - b)^\top A h + \tfrac12 \|Ah\|^2 , so the gradient and the Hessian are \nabla f(x) = A^\top (Ax - b), \qquad \nabla^2 f(x) = A^\top A . Take the data below, at the point x = 0: A = \begin{pmatrix} 1 & 0 \\ 1 & 1 \\ 1 & 2 \end{pmatrix}, \qquad b = \begin{pmatrix} 1 \\ 2 \\ 2 \end{pmatrix}, \qquad \nabla f(0) = -A^\top b = \begin{pmatrix} -5 \\ -6 \end{pmatrix}. This function returns in ch. 2 (projections), ch. 6 (smoothness) and ch. 7 (gradient descent).
Key takeaways — chapter 0
- A matrix is a linear map; its rank plus the dimension of its kernel is its number of columns.
- Orthogonal matrices preserve inner products. The trace is cyclic, the determinant multiplicative, and they are the sum and the product of the eigenvalues.
- Gradients and Hessians are read off a Taylor expansion: for \frac12\|Ax - b\|^2 they are A^\top(Ax - b) and A^\top A.
1. Eigenvalues, the spectral theorem and positive semidefinite matrices
Covariance matrices, Hessians, kernel Gram matrices and graph Laplacians are symmetric. A symmetric matrix is diagonal in a well-chosen orthonormal basis, and this chapter characterises those with a non-negative quadratic form.
Definition 1.1 — Eigenvalues and eigenvectors A scalar \lambda is an eigenvalue of A \in \mathbb{R}^{n \times n} if Av = \lambda v for some vector v \neq 0, called an eigenvector.
The eigenvalues are the roots of the characteristic polynomial \det(\lambda I - A). The matrix is diagonalisable when it has a basis of eigenvectors, that is A = P \Lambda P^{-1} with \Lambda diagonal.
Not every matrix is diagonalisable, but every symmetric one is.
Theorem 1.2 — Spectral theorem Let S \in \mathbb{R}^{n \times n} be symmetric. There exist an orthogonal matrix U and real numbers \lambda_1 \ge \dots \ge \lambda_n such that
Key formula — the spectral theorem S = U \Lambda U^\top = \sum_{i=1}^n \lambda_i\, u_i u_i^\top, \qquad \Lambda = \operatorname{diag}(\lambda_1, \dots, \lambda_n).
The columns u_i of U form an orthonormal basis of eigenvectors: S u_i = \lambda_i u_i.
Proof. The proof goes by induction on n; the case n = 1 is clear.
- A real eigenvector exists. The Rayleigh quotient R(x) = x^\top S x / x^\top x is continuous on the unit sphere, which is compact, and it is invariant by scaling. It therefore reaches its maximum over all x \neq 0 at some unit vector u_1. Its gradient there must vanish: \nabla R(x) = \frac{2}{\|x\|^2}\big(Sx - R(x)\, x\big) = 0 \quad \Longrightarrow \quad S u_1 = \lambda_1 u_1, \qquad \lambda_1 = R(u_1).
- The orthogonal complement is stable. If x \perp u_1, then (Sx)^\top u_1 = x^\top S u_1 = \lambda_1 x^\top u_1 = 0, so Sx \perp u_1.
- Induction. The restriction of S to the hyperplane orthogonal to u_1 is symmetric in any orthonormal basis of that hyperplane. The induction hypothesis gives n - 1 orthonormal eigenvectors there; with u_1 they form U. ∎
Proposition 1.3 — Rayleigh quotient For a symmetric S with eigenvalues \lambda_1 \ge \dots \ge \lambda_n and every x \neq 0, \lambda_n \le \frac{x^\top S x}{x^\top x} \le \lambda_1 , with equality on the right for x = u_1 and on the left for x = u_n.
Proof. Write x = \sum_i c_i u_i in the eigenbasis. Then x^\top S x = \sum_i \lambda_i c_i^2 and x^\top x = \sum_i c_i^2, and a weighted average of the \lambda_i lies between the smallest and the largest. ∎
Definition 1.4 — Positive semidefinite matrices A symmetric matrix S is positive semidefinite (PSD), written S \succeq 0, when x^\top S x \ge 0 \quad \text{for all } x \in \mathbb{R}^n . It is positive definite, S \succ 0, when the inequality is strict for x \neq 0. We write A \succeq B when A - B \succeq 0.
Proposition 1.5 — Four tests of positivity For a symmetric matrix S, the following are equivalent:
- S \succeq 0;
- every eigenvalue of S is non-negative;
- S = B^\top B for some matrix B, so S is the Gram matrix of the columns of B;
- every principal minor of S is non-negative.
For positive definiteness, the tests become: eigenvalues positive; S = L L^\top with L lower triangular with a positive diagonal (Cholesky); leading principal minors positive (Sylvester’s criterion).
Proof. (1 ⇒ 2) Take x = u_i: then u_i^\top S u_i = \lambda_i \ge 0.
(2 ⇒ 3) Take B = \Lambda^{1/2} U^\top, where \Lambda^{1/2} holds the square roots of the eigenvalues.
(3 ⇒ 1) For every x, x^\top B^\top B x = \|Bx\|^2 \ge 0.
(1 ⇒ 4) A principal submatrix is PSD, so its determinant is a product of non-negative eigenvalues. For the converse and the positive definite tests, see Horn and Johnson (2013, ch. 7). ∎
Example 1.6 — A 2 \times 2 matrix, completely Let S = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}. Its characteristic polynomial is (2 - \lambda)^2 - 1, with roots 3 and 1, and unit eigenvectors u_1 = (1, 1)/\sqrt2, u_2 = (1, -1)/\sqrt2.
- Spectral form and powers: S = 3\, u_1 u_1^\top + u_2 u_2^\top, hence S^k = 3^k u_1 u_1^\top + u_2 u_2^\top.
- Square root: replacing the eigenvalues by their square roots gives the unique PSD square root S^{1/2} = \sqrt3\, u_1 u_1^\top + u_2 u_2^\top \approx \begin{pmatrix} 1.366 & 0.366 \\ 0.366 & 1.366 \end{pmatrix}.
- Rayleigh quotient: 1 \le x^\top S x / x^\top x \le 3 for every x \neq 0.
- Cholesky factor, from L_{11}^2 = 2, L_{21} L_{11} = 1 and L_{21}^2 + L_{22}^2 = 2: L \approx \begin{pmatrix} 1.414 & 0 \\ 0.707 & 1.225 \end{pmatrix}.
The code checks Theorem 1.2 and Proposition 1.3 on a random Gram matrix, and tests positivity with Cholesky.
import numpy as np
rng = np.random.default_rng(0)
B = rng.standard_normal((5, 3))
S = B @ B.T # 5 x 5 Gram matrix: PSD of rank 3
lam, U = np.linalg.eigh(S) # ascending eigenvalues, orthonormal U
print(np.round(lam, 4)) # two eigenvalues are zero up to rounding
print(np.allclose(U @ np.diag(lam) @ U.T, S), np.allclose(U.T @ U, np.eye(5)))
# the Rayleigh quotient of random vectors stays in [lam_min, lam_max]
X = rng.standard_normal((5, 1000))
R = np.einsum("ij,ij->j", X, S @ X) / np.einsum("ij,ij->j", X, X)
print(R.min() >= lam[0] - 1e-12, R.max() <= lam[-1] + 1e-12)
# Cholesky succeeds on S + 0.1 I (positive definite) and fails on -S
L = np.linalg.cholesky(S + 0.1 * np.eye(5))
try:
np.linalg.cholesky(-S)
except np.linalg.LinAlgError as err:
print("-S is not positive definite:", err)
# the symmetric square root S^{1/2} = U diag(sqrt(lam)) U^T
S_half = U @ np.diag(np.sqrt(np.clip(lam, 0, None))) @ U.T
print(np.allclose(S_half @ S_half, S))
# eigenvalues [0, 0, 0.1121, 2.9218, 9.9282]; every check prints TrueThree vectors of \mathbb{R}^5 have a Gram matrix of rank 3, hence two zero eigenvalues.
Key takeaways — chapter 1
- A symmetric matrix has real eigenvalues and an orthonormal eigenbasis: S = \sum_i \lambda_i u_i u_i^\top.
- Its quadratic form is squeezed between the extreme eigenvalues (Rayleigh quotient).
- PSD means non-negative quadratic form, non-negative eigenvalues, or Gram matrix; Cholesky tests positive definiteness.
2. Norms, orthogonal projections and least squares
An overdetermined system Ax = b usually has no solution. Least squares replaces b by the closest point of the range of A; the condition number tells how many digits the computation loses.
Definition 2.1 — Vector norms A norm is positive except at 0, homogeneous, and satisfies the triangle inequality. The three norms used most are \|x\|_1 = \sum_i |x_i|, \qquad \|x\|_2 = \Big(\sum_i x_i^2\Big)^{1/2}, \qquad \|x\|_\infty = \max_i |x_i| . All norms on \mathbb{R}^n are equivalent, with constants that depend on the dimension: \|x\|_\infty \le \|x\|_2 \le \|x\|_1 \le \sqrt{n}\, \|x\|_2 \le n\, \|x\|_\infty . The dual norm of \|\cdot\| is \|y\|_* = \max_{\|x\| \le 1} \langle x, y \rangle. The dual of \ell_1 is \ell_\infty, and \ell_2 is its own dual.
Definition 2.2 — Matrix norms and condition number The operator norm and the Frobenius norm of A \in \mathbb{R}^{m \times n} are \|A\|_2 = \max_{x \neq 0} \frac{\|Ax\|_2}{\|x\|_2} = \sqrt{\lambda_{\max}(A^\top A)}, \qquad \|A\|_F = \sqrt{\operatorname{tr}(A^\top A)} . The first formula is Proposition 1.3 applied to A^\top A. Both norms are submultiplicative, and \|A\|_2 \le \|A\|_F. For a matrix of full column rank, the condition number is \kappa(A) = \sqrt{\lambda_{\max}(A^\top A) / \lambda_{\min}(A^\top A)} , which is \|A\|_2 \|A^{-1}\|_2 for a square invertible matrix. It amplifies relative errors on b; in double precision, \kappa = 10^k costs about k of the 16 digits.
Definition 2.3 — Orthogonal projection Let V be a subspace of \mathbb{R}^n with an orthonormal basis q_1, \dots, q_k, the columns of Q. The orthogonal projection onto V is P_V = Q Q^\top, \qquad P_V^2 = P_V, \qquad P_V^\top = P_V . If V is the range of a matrix A of full column rank, then P_V = A (A^\top A)^{-1} A^\top.
Theorem 2.4 — Projection theorem For every b \in \mathbb{R}^n, the vector P_V b is the unique point of V closest to b. It is characterised by orthogonality, and Pythagoras holds: b - P_V b \perp V, \qquad \|b - v\|^2 = \|b - P_V b\|^2 + \|P_V b - v\|^2 \quad \text{for all } v \in V.
Proof. Write r = b - P_V b. For each basis vector, q_j^\top r = q_j^\top b - q_j^\top Q Q^\top b = 0, because q_j^\top Q is the j-th unit row vector. So r \perp V.
For v \in V, the vector P_V b - v lies in V, hence is orthogonal to r, and Pythagoras gives the identity. Its second term vanishes only at v = P_V b. ∎
Proposition 2.5 — Least squares The minimisers of \|Ax - b\|^2 are the solutions of the normal equations A^\top A\, x = A^\top b . The minimiser is unique if and only if A has full column rank. Then \hat x = (A^\top A)^{-1} A^\top b, and A \hat x is the projection of b onto the range of A.
With a ridge penalty \lambda \|x\|^2 and \lambda > 0, the minimiser is always unique: \hat x_\lambda = (A^\top A + \lambda I)^{-1} A^\top b .
Proof. By Theorem 2.4, Ax is optimal if and only if the residual is orthogonal to every column of A: A^\top (b - Ax) = 0.
And A^\top A is invertible if and only if \ker A = \{0\}. For ridge, A^\top A + \lambda I \succeq \lambda I is invertible, and the gradient vanishes exactly at \hat x_\lambda. ∎
Forming A^\top A squares the condition number. The QR factorisation A = QR, with orthonormal columns in Q and R upper triangular, reduces the normal equations to R x = Q^\top b and, when the residual is small, loses only about \log_{10} \kappa(A) digits.
Example 2.6 — A regression line by hand Fit y = x_1 + x_2 t to the points (t, y) = (0, 1), (1, 2), (2, 2). This is the matrix A and the vector b of Example 0.5.
- Normal equations: A^\top A = \begin{pmatrix} 3 & 3 \\ 3 & 5 \end{pmatrix} and A^\top b = (5, 6)^\top.
- Solution: the determinant is 6, and \hat x = \frac16 \begin{pmatrix} 5 & -3 \\ -3 & 3 \end{pmatrix} \begin{pmatrix} 5 \\ 6 \end{pmatrix} = \begin{pmatrix} 7/6 \\ 1/2 \end{pmatrix}.
- Residual: b - A\hat x = (-1/6,\ 1/3,\ -1/6). It sums to 0 and is orthogonal to (0, 1, 2), as Theorem 2.4 demands. The residual sum of squares is \|b - A \hat x\|^2 = \tfrac{1}{36} + \tfrac{4}{36} + \tfrac{1}{36} = \tfrac16 .
The code fits a polynomial of degree 11 to 50 exact values, so the true coefficients are known.
import numpy as np
t = np.linspace(0, 1, 50)
A = np.vander(t, 12, increasing=True) # columns 1, t, ..., t^11
x_true = np.ones(12)
b = A @ x_true # exact data: the residual is zero
print(f"cond(A) = {np.linalg.cond(A):.1e} cond(A^T A) = {np.linalg.cond(A.T @ A):.1e}")
x_ne = np.linalg.solve(A.T @ A, A.T @ b) # normal equations
Q, R = np.linalg.qr(A) # reduced QR: A = QR
x_qr = np.linalg.solve(R, Q.T @ b)
x_sv = np.linalg.lstsq(A, b, rcond=None)[0] # SVD-based solver
for name, x in [("normal equations", x_ne), ("QR", x_qr), ("lstsq (SVD)", x_sv)]:
err = np.linalg.norm(x - x_true) / np.linalg.norm(x_true)
print(f"{name:17s} relative error {err:.1e}")
# cond(A) = 1.2e+08, cond(A^T A) = 1.4e+16
# relative errors: normal equations 1.1e-01, QR 7.5e-09, lstsq (SVD) 3.1e-09With \kappa(A) \approx 10^8, QR and the SVD keep eight digits; the normal equations, with \kappa(A)^2 \approx 10^{16}, keep none.
Key takeaways — chapter 2
- \|A\|_2 is the square root of the largest eigenvalue of A^\top A; the condition number, the square root of the ratio of its extreme eigenvalues, measures lost digits.
- Projecting means making the residual orthogonal to the subspace; least squares is the projection of b onto the range of A.
- Solve least squares with QR or the SVD, not by forming A^\top A, which squares the condition number.
3. The singular value decomposition and low-rank approximation
The singular value decomposition (SVD) diagonalises any rectangular matrix with two orthonormal bases. Its truncation is the best low-rank approximation: the mathematics of PCA, compression and low-rank fine-tuning.
Theorem 3.1 — Singular value decomposition Every A \in \mathbb{R}^{m \times n} of rank r factorises as A = U \Sigma V^\top = \sum_{i=1}^r \sigma_i\, u_i v_i^\top, \qquad \sigma_1 \ge \dots \ge \sigma_r > 0, where u_1, \dots, u_r are orthonormal in \mathbb{R}^m and v_1, \dots, v_r are orthonormal in \mathbb{R}^n.
The \sigma_i are the singular values, and the \sigma_i^2 are the non-zero eigenvalues of A^\top A and of A A^\top.
Proof.
- Apply Theorem 1.2 to the PSD matrix A^\top A = \sum_i \lambda_i v_i v_i^\top, with \lambda_1 \ge \dots \ge \lambda_r > 0 and \lambda_i = 0 for i > r.
- Set \sigma_i = \sqrt{\lambda_i} and u_i = A v_i / \sigma_i for i \le r. These vectors are orthonormal: u_i^\top u_j = \frac{v_i^\top A^\top A v_j}{\sigma_i \sigma_j} = \frac{\lambda_j\, v_i^\top v_j}{\sigma_i \sigma_j} = \delta_{ij}.
- For i > r, \|A v_i\|^2 = \lambda_i = 0. So A and \sum_{i \le r} \sigma_i u_i v_i^\top agree on the basis (v_i), hence everywhere. ∎
The range of A is spanned by u_1, \dots, u_r, and its kernel is orthogonal to v_1, \dots, v_r. Moreover, \|A\|_2 = \sigma_1, \qquad \|A\|_F^2 = \sum_i \sigma_i^2, \qquad \kappa(A) = \frac{\sigma_1}{\sigma_n} \ \text{ when } r = n .
Definition 3.2 — Nuclear norm The nuclear norm is \|A\|_* = \sum_i \sigma_i, the dual norm of \|\cdot\|_2 for the Frobenius inner product. It is to the rank what \ell_1 is to sparsity: a convex penalty.
Definition 3.3 — Pseudo-inverse The Moore–Penrose pseudo-inverse of A is A^{+} = \sum_{i=1}^r \frac{1}{\sigma_i}\, v_i u_i^\top . For every b, x^{+} = A^{+} b is the least-squares solution of smallest norm. If A has full column rank, A^{+} = (A^\top A)^{-1} A^\top.
Why. In completed orthonormal bases, with y = V^\top x and c = U^\top b, \|Ax - b\|^2 = \sum_{i \le r} (\sigma_i y_i - c_i)^2 + \sum_{i > r} c_i^2 , so minimisers have y_i = c_i / \sigma_i for i \le r, and the smallest norm sets the other y_i to 0.
Theorem 3.4 — Eckart–Young–Mirsky For k < r, let A_k = \sum_{i \le k} \sigma_i u_i v_i^\top be the truncated SVD. For every matrix B of rank at most k:
Key formula — best rank-k approximation \|A - B\|_2 \ \ge\ \|A - A_k\|_2 = \sigma_{k+1}, \qquad \|A - B\|_F \ \ge\ \|A - A_k\|_F = \Big(\sum_{i > k} \sigma_i^2\Big)^{1/2}.
Proof. The two equalities are the norms of A - A_k = \sum_{i > k} \sigma_i u_i v_i^\top. For the operator norm:
- The kernel of B has dimension at least n - k, and the span of v_1, \dots, v_{k+1} has dimension k + 1. The dimensions add up to more than n, so the two subspaces share a unit vector x.
- Then Bx = 0, and \|(A - B)x\|^2 = \|Ax\|^2 = \sum_{i \le k+1} \sigma_i^2 (v_i^\top x)^2 \ \ge\ \sigma_{k+1}^2 .
The Frobenius case follows from Weyl’s inequality, proved in ch. 10. ∎
Example 3.5 — An SVD by hand Let A = \begin{pmatrix} 3 & 0 \\ 4 & 5 \end{pmatrix}.
- A^\top A = \begin{pmatrix} 25 & 20 \\ 20 & 25 \end{pmatrix} has eigenvalues 45 and 5, with eigenvectors v_1 = (1, 1)/\sqrt2 and v_2 = (1, -1)/\sqrt2.
- Singular values: \sigma_1 = 3\sqrt5 \approx 6.708 and \sigma_2 = \sqrt5 \approx 2.236.
- Left vectors: u_1 = A v_1 / \sigma_1 = (1, 3)/\sqrt{10} and u_2 = A v_2 / \sigma_2 = (3, -1)/\sqrt{10}.
- Best rank-one approximation and its error, of norm \sigma_2 = \sqrt5 in both norms: A_1 = \sigma_1 u_1 v_1^\top = \begin{pmatrix} 1.5 & 1.5 \\ 4.5 & 4.5 \end{pmatrix}, \qquad A - A_1 = \begin{pmatrix} 1.5 & -1.5 \\ -0.5 & 0.5 \end{pmatrix}.
Proposition 3.6 — PCA is a truncated SVD Let the rows x_1, \dots, x_n \in \mathbb{R}^d of X be centred data, with SVD X = U \Sigma V^\top. The empirical covariance is C = X^\top X / n = V (\Sigma^2 / n) V^\top. Among all k-dimensional subspaces, the span of v_1, \dots, v_k minimises the reconstruction error of the projected data: \min_{\dim W = k}\ \sum_{i=1}^n \|x_i - P_W x_i\|^2 = \sum_{j > k} \sigma_j^2 . Equivalently, it maximises the projected variance; \sigma_j^2 / n is the variance along the principal direction v_j.
Proof. The error is \|X - X P_W\|_F^2 and X P_W has rank at most k, so Theorem 3.4 bounds it below; W = \operatorname{span}(v_1, \dots, v_k) gives X P_W = X_k, which reaches the bound. The variance statement is Pythagoras. ∎
The code runs PCA on the 1797 digits of scikit-learn (64 pixels each) and checks Theorem 3.4.
import numpy as np
from sklearn.datasets import load_digits
X = load_digits().data # 1797 images of 8 x 8 = 64 pixels
Xc = X - X.mean(axis=0) # centre every pixel
U, s, Vt = np.linalg.svd(Xc, full_matrices=False)
for k in (2, 10, 30):
Xk = (U[:, :k] * s[:k]) @ Vt[:k] # truncated SVD = best rank-k approximation
ok_F = np.isclose(np.linalg.norm(Xc - Xk), np.sqrt((s[k:] ** 2).sum()))
ok_2 = np.isclose(np.linalg.norm(Xc - Xk, 2), s[k])
print(k, ok_F, ok_2, f"explained variance {(s[:k] ** 2).sum() / (s ** 2).sum():.3f}")
# a random 10-dimensional subspace does much worse than the top 10 singular vectors
rng = np.random.default_rng(0)
P = np.linalg.qr(rng.standard_normal((64, 10)))[0]
print(f"random subspace error {np.linalg.norm(Xc - Xc @ P @ P.T):.0f}",
f"vs Eckart-Young {np.sqrt((s[10:] ** 2).sum()):.0f}")
# explained variance 0.285 (k = 2), 0.738 (k = 10), 0.959 (k = 30); errors 1329 vs 752Ten components out of 64 keep 74 % of the variance; a random subspace of the same dimension does far worse.
Key takeaways — chapter 3
- Every matrix is \sum_i \sigma_i u_i v_i^\top with orthonormal u_i and v_i; the \sigma_i^2 are the eigenvalues of A^\top A.
- The pseudo-inverse inverts the non-zero singular values and gives the minimum-norm least-squares solution.
- Truncating the SVD gives the best rank-k approximation in both norms (Eckart–Young); PCA is this truncation applied to centred data.
4. Matrix calculus
Training a model means differentiating a scalar loss with respect to vectors and matrices of parameters. One method, the differential, turns every such computation into a few lines of algebra.
Definition 4.1 — Gradient with respect to a matrix For f : \mathbb{R}^{m \times n} \to \mathbb{R}, the gradient \nabla f(X) \in \mathbb{R}^{m \times n} is the matrix such that f(X + H) = f(X) + \langle \nabla f(X), H \rangle_F + o(\|H\|_F). The method: expand f(X + H) to first order in H, rewrite the first-order term as \operatorname{tr}(G^\top H) with the cyclic property of the trace, and read off \nabla f(X) = G.
Proposition 4.2 — A table of gradients With matrices and vectors of compatible sizes:
| Function | Gradient |
|---|---|
| a^\top x | a |
| x^\top A x | (A + A^\top) x |
| \frac12 \|Ax - b\|^2 | A^\top (Ax - b) |
| \operatorname{tr}(AX) | A^\top |
| \operatorname{tr}(X^\top A X) | (A + A^\top) X |
| \|AXB - C\|_F^2 | 2 A^\top (AXB - C) B^\top |
| \log \det X, for \det X > 0 | X^{-\top}, which is X^{-1} for symmetric X |
The differential of the inverse is X^{-1} H X^{-1} with a minus sign: (X + H)^{-1} = X^{-1} - X^{-1} H X^{-1} + o(\|H\|).
Proof. Four representative lines.
- Quadratic form: expanding, (x + h)^\top A (x + h) = x^\top A x + x^\top (A + A^\top) h + h^\top A h .
- Frobenius: with R = AXB - C, the first-order term is 2 \langle R, AHB \rangle_F = 2 \operatorname{tr}(B R^\top A H) = \langle 2 A^\top R B^\top, H \rangle_F .
- Log-determinant: \det(X + H) = \det X \, \det(I + X^{-1} H) and \det(I + E) = 1 + \operatorname{tr} E + O(\|E\|^2), so the first-order term of \log \det is \operatorname{tr}(X^{-1} H).
- Inverse: multiply X + H by X^{-1} - X^{-1} H X^{-1}; the product is I up to a term of order \|H\|^2. ∎
Proposition 4.3 — Chain rule and reverse mode If y = g(x) with g : \mathbb{R}^n \to \mathbb{R}^m and \ell = f(y) is a scalar, then \nabla_x \ell = J_g(x)^\top\, \nabla_y \ell . For a chain x \to y_1 \to \dots \to y_L \to \ell with Jacobians J_1, \dots, J_L, the gradient is J_1^\top \cdots J_L^\top \nabla \ell. Evaluated from the right, it multiplies a vector by one Jacobian at a time and never forms a matrix product. This is reverse-mode differentiation, or back-propagation: the gradient costs a small multiple of the cost of \ell itself, whatever the number of parameters.
Example 4.4 — Logistic regression With labels y_i \in \{0, 1\}, rows x_i of X and \sigma(z) = 1 / (1 + e^{-z}), the average logistic loss is \ell(w) = \frac1n \sum_{i=1}^n \Big( \log\big(1 + e^{x_i^\top w}\big) - y_i\, x_i^\top w \Big). Since \sigma' = \sigma (1 - \sigma), the chain rule gives, with p_i = \sigma(x_i^\top w) and D = \operatorname{diag}(p_i (1 - p_i)), \nabla \ell(w) = \frac1n X^\top (p - y), \qquad \nabla^2 \ell(w) = \frac1n X^\top D X \ \preceq\ \frac{\|X\|_2^2}{4n}\, I . The Hessian is PSD, so the loss is convex (ch. 6); p(1 - p) \le 1/4 gives the bound.
Automatic differentiation checks such formulas in a few lines.
import torch
torch.set_num_threads(1)
torch.manual_seed(0)
f64 = dict(dtype=torch.float64)
n = 4
M = torch.randn(n, n, **f64)
X = (M @ M.T + n * torch.eye(n, **f64)).requires_grad_() # X is positive definite
torch.logdet(X).backward()
print(torch.allclose(X.grad, torch.linalg.inv(X).T)) # gradient of log det X is X^{-T}
A, B, C = torch.randn(3, n, **f64), torch.randn(n, 2, **f64), torch.randn(3, 2, **f64)
Y = torch.randn(n, n, **f64, requires_grad=True)
((A @ Y @ B - C) ** 2).sum().backward() # squared Frobenius norm
print(torch.allclose(Y.grad, 2 * A.T @ (A @ Y.detach() @ B - C) @ B.T))Both lines print True.
Key takeaways — chapter 4
- Expand to first order, write the linear term as \operatorname{tr}(G^\top H), and read the gradient G.
- Gradients to know: A^\top(Ax - b), (A + A^\top)x, X^{-\top} for \log\det X; the inverse differentiates as -X^{-1} H X^{-1}.
- The chain rule multiplies transposed Jacobians; evaluating it from the loss backwards is back-propagation.
5. Hilbert spaces, orthonormal bases and Fourier analysis
Signals, images and the functions learned by kernel methods live in spaces of infinite dimension. Hilbert spaces keep the geometry of \mathbb{R}^n, and the Fourier basis is their most useful orthonormal basis.
Definition 5.1 — Hilbert space A Hilbert space H is an inner product space in which every Cauchy sequence converges, for the norm \|x\| = \sqrt{\langle x, x \rangle}. Examples: \mathbb{R}^n, square-summable sequences \ell^2, and L^2([0, 1]) or L^2(\mathbb{R}) with \langle f, g \rangle = \int f(t)\, \overline{g(t)}\, dt . Cauchy–Schwarz and the parallelogram law hold as in \mathbb{R}^n: \|x + y\|^2 + \|x - y\|^2 = 2 \|x\|^2 + 2 \|y\|^2 .
Theorem 5.2 — Projection onto a closed convex set Let C \subset H be non-empty, closed and convex. Every x \in H has a unique closest point p = P_C(x) in C, characterised by \operatorname{Re} \langle x - p,\ y - p \rangle \le 0 \quad \text{for all } y \in C . When C is a closed subspace, this becomes x - p \perp C, as in Theorem 2.4.
Proof. Key step (full proof in ch. 10). Midpoints of C stay in C, so the parallelogram law makes every minimising sequence Cauchy: \|y_k - y_l\|^2 \le 2\|x - y_k\|^2 + 2\|x - y_l\|^2 - 4\, d(x, C)^2 \to 0 . ∎
Definition 5.3 — Orthonormal basis An orthonormal family (e_k) of H is a Hilbert basis when its finite linear combinations are dense in H.
Theorem 5.4 — Bessel and Parseval Let (e_k) be orthonormal and x \in H. The truncation \sum_{k \le K} \langle x, e_k \rangle e_k is the projection of x onto the span of e_1, \dots, e_K.
Bessel’s inequality holds: \sum_k |\langle x, e_k \rangle|^2 \le \|x\|^2. If (e_k) is a Hilbert basis, then x = \sum_k \langle x, e_k \rangle\, e_k, \qquad \|x\|^2 = \sum_k |\langle x, e_k \rangle|^2 .
Proof. The remainder x - \sum_{k \le K} \langle x, e_k \rangle e_k is orthogonal to e_1, \dots, e_K, so the truncation is the projection. Pythagoras gives \|x\|^2 = \sum_{k \le K} |\langle x, e_k \rangle|^2 + d_K^2, with d_K the distance to the span: Bessel. For a Hilbert basis, density sends d_K to 0. ∎
Definition 5.5 — Fourier series On L^2(0, 1), the space of functions of period 1, the exponentials e_k(t) = e^{2i\pi k t}, k \in \mathbb{Z}, form a Hilbert basis (Stein and Shakarchi, 2003, ch. 3). The Fourier coefficients are c_k(f) = \langle f, e_k \rangle = \int_0^1 f(t)\, e^{-2i\pi k t}\, dt , and Theorem 5.4 gives f = \sum_k c_k(f)\, e_k in L^2, with \|f\|^2 = \sum_k |c_k(f)|^2.
Proposition 5.6 — Smoothness means fast decay If f is periodic and continuously differentiable, an integration by parts, whose boundary terms cancel by periodicity, gives c_k(f') = 2i\pi k\, c_k(f). If f is p times continuously differentiable, then for k \neq 0 |c_k(f)| \le \frac{\|f^{(p)}\|_{L^2}}{(2\pi |k|)^p} .
Example 5.7 — The sawtooth and the Basel sum With period 2\pi, the real form of the series is f(t) = \frac{a_0}{2} + \sum_{n \ge 1} (a_n \cos nt + b_n \sin nt), and Parseval reads \frac1\pi \int_{-\pi}^{\pi} f(t)^2\, dt = \frac{a_0^2}{2} + \sum_{n \ge 1} (a_n^2 + b_n^2). For the odd function f(t) = t on (-\pi, \pi), a_n = 0 and an integration by parts gives b_n = 2(-1)^{n+1}/n. The left side is 2\pi^2/3, so \sum_{n \ge 1} \frac{1}{n^2} = \frac{\pi^2}{6} . The periodic sawtooth jumps at \pm\pi, so its coefficients decay only like 1/n, and its partial sums overshoot by about 9 % of the jump: the Gibbs phenomenon.
Definition 5.8 — Fourier transform For f \in L^1(\mathbb{R}), the Fourier transform is \hat f(\xi) = \int_{\mathbb{R}} f(x)\, e^{-2i\pi x \xi}\, dx .
Proposition 5.9 — Rules of the Fourier transform For integrable f and g:
- translation: f(x - a) has transform e^{-2i\pi a \xi} \hat f(\xi);
- dilation: for s > 0, f(x / s) has transform s \hat f(s \xi);
- derivative: f' has transform 2i\pi \xi\, \hat f(\xi), when f' is integrable;
- convolution: \widehat{f * g} = \hat f\, \hat g, where (f * g)(x) = \int f(y)\, g(x - y)\, dy;
- the Gaussian e^{-\pi x^2} is its own transform;
- Plancherel: the transform extends to a unitary map of L^2(\mathbb{R}), so \|\hat f\|_2 = \|f\|_2, inverted by the same formula with e^{+2i\pi x \xi}.
The first four rules are changes of variables (and Fubini); for the last two, see Stein and Shakarchi (2003, ch. 5).
Proposition 5.10 — The discrete Fourier transform The DFT of x \in \mathbb{C}^N is X_k = \sum_{n=0}^{N-1} x_n\, e^{-2i\pi k n / N}, \qquad k = 0, \dots, N - 1 . The vectors f_k = (e^{2i\pi k n / N})_n are orthogonal with \|f_k\|^2 = N: for k \neq l, the N-th roots of unity e^{2i\pi (k - l) n / N} sum to zero. Hence inversion, Parseval and the circular convolution theorem: x_n = \frac1N \sum_k X_k\, e^{2i\pi k n / N}, \qquad \sum_k |X_k|^2 = N \sum_n |x_n|^2, \qquad \widehat{(x \circledast y)}_k = X_k Y_k , where (x \circledast y)_n = \sum_m x_m\, y_{(n - m) \bmod N}. The fast Fourier transform (Cooley and Tukey, 1965) computes the DFT in O(N \log N) operations instead of O(N^2).
The code checks Proposition 5.10 and Example 5.7.
import numpy as np
rng = np.random.default_rng(0)
N = 256
x, y = rng.standard_normal(N), rng.standard_normal(N)
X = np.fft.fft(x)
print(np.isclose((np.abs(X) ** 2).sum() / N, (x ** 2).sum())) # Parseval for the DFT
circ = np.array([sum(x[m] * y[(k - m) % N] for m in range(N)) for k in range(N)])
print(np.allclose(np.fft.ifft(X * np.fft.fft(y)).real, circ)) # convolution theorem
# partial Fourier sums of the sawtooth f(t) = t on (-pi, pi): b_n = 2 (-1)^(n+1) / n
t = np.linspace(-np.pi, np.pi, 20001)
for K in (10, 100, 1000):
S = sum(2 * (-1) ** (n + 1) / n * np.sin(n * t) for n in range(1, K + 1))
rms = np.sqrt(np.mean((S - t) ** 2))
print(f"K = {K:4d} max S_K = {S.max():.3f} L2 error = {rms:.3f}")
# K = 10: max 3.414, L2 error 0.437; K = 100: 3.673, 0.143; K = 1000: 3.701, 0.050The L^2 error tends to 0, but the maximum tends to 3.70, not \pi: the excess is 9 % of the jump 2\pi.
Key takeaways — chapter 5
- In a Hilbert space, projections onto closed convex sets exist, are unique and are characterised by an angle condition.
- In an orthonormal basis, coefficients are inner products, truncations are best approximations, and energy is preserved (Parseval).
- Fourier coefficients decay as fast as the function is smooth; the Fourier transform turns translations, derivatives and convolutions into modulations, multiplications and products.
6. Convexity, smoothness and strong convexity
Three properties of a function decide how fast the algorithms of the next chapters converge: convexity, smoothness and strong convexity.
Definition 6.1 — Convex sets and functions A set is convex when it contains the segment between any two of its points. A function f is convex when, for all x, y and t \in [0, 1], f(tx + (1 - t)y) \le t f(x) + (1 - t) f(y). It is \mu-strongly convex, for some \mu > 0, when f - \frac{\mu}{2} \|\cdot\|^2 is convex.
Proposition 6.2 — First- and second-order tests Let f be differentiable and \mu \ge 0. Then f is convex (\mu = 0) or \mu-strongly convex if and only if, for all x, y, f(y) \ \ge\ f(x) + \langle \nabla f(x), y - x \rangle + \frac{\mu}{2} \|y - x\|^2 . For a twice-differentiable f, this holds if and only if \nabla^2 f(x) \succeq \mu I for all x. In particular, a critical point of a convex function is a global minimiser.
Proof. For \mu = 0, convexity gives the first inequality below, and the limit t \to 0 the second: f(y) - f(x) \ \ge\ \frac{f(x + t(y - x)) - f(x)}{t} \ \xrightarrow[t \to 0]{}\ \langle \nabla f(x), y - x \rangle . Conversely, with z = tx + (1 - t)y, add t times the inequality at (z, x) and 1 - t times the inequality at (z, y).
For \mu > 0, apply this to f - \frac\mu2 \|\cdot\|^2; the Hessian test follows from Taylor’s formula. ∎
Non-negative sums, affine substitutions and suprema preserve convexity: norms, the largest eigenvalue of a symmetric matrix and the losses of ch. 4 are convex.
Definition 6.3 — Smoothness and condition number A differentiable f is L-smooth when its gradient is L-Lipschitz: \|\nabla f(x) - \nabla f(y)\| \le L \|x - y\| . For a twice-differentiable f this means -LI \preceq \nabla^2 f \preceq LI. If f is also \mu-strongly convex, its condition number is \kappa = L / \mu.
Lemma 6.4 — Descent lemma An L-smooth function lies below a parabola at every point. With Proposition 6.2, a smooth and strongly convex function is squeezed between two parabolas:
Key formula — the quadratic sandwich \frac{\mu}{2} \|y - x\|^2 \ \le\ f(y) - f(x) - \langle \nabla f(x), y - x \rangle \ \le\ \frac{L}{2} \|y - x\|^2 .
Proof. Integrate the gradient along the segment and use the Lipschitz bound: f(y) - f(x) - \langle \nabla f(x), y - x \rangle = \int_0^1 \langle \nabla f(x + t(y - x)) - \nabla f(x),\ y - x \rangle\, dt \le \int_0^1 L t \|y - x\|^2\, dt . ∎
Proposition 6.5 — Consequences of strong convexity A differentiable \mu-strongly convex f has a unique minimiser x^*, and for all x: f(x) - f(x^*) \le \frac{1}{2\mu} \|\nabla f(x)\|^2, \qquad \mu \|x - x^*\|^2 \le \langle \nabla f(x), x - x^* \rangle . The first inequality is the Polyak–Łojasiewicz inequality.
Proof. Minimise both sides of Proposition 6.2 over y; the right side is smallest at y = x - \nabla f(x) / \mu. For the second inequality, add Proposition 6.2 at (x, x^*) and at (x^*, x). Quadratic growth gives existence, strict convexity uniqueness. ∎
Example 6.6 — The constants of two losses
- Least squares \frac12 \|Ax - b\|^2 has Hessian A^\top A, so L = \sigma_{\max}(A)^2, \mu = \sigma_{\min}(A)^2 and \kappa = \kappa(A)^2.
- Logistic regression with a ridge term \frac{\lambda}{2} \|w\|^2 has L = \|X\|_2^2 / (4n) + \lambda and \mu = \lambda (Example 4.4). On the standardised breast-cancer data with \lambda = 0.01, L \approx 3.33, so \kappa \le 333.
Definition 6.7 — Subgradient For a convex f, the subdifferential \partial f(x) is the set of vectors g with f(y) \ge f(x) + \langle g, y - x \rangle for all y.
For instance \partial |\cdot|(0) = [-1, 1]. By definition, x^* minimises f if and only if 0 \in \partial f(x^*).
Key takeaways — chapter 6
- Convex functions lie above their tangents; strongly convex ones above a parabola, smooth ones below a parabola.
- For twice-differentiable functions: \mu I \preceq \nabla^2 f \preceq L I, and \kappa = L / \mu.
- Strong convexity gives a unique minimiser and the Polyak–Łojasiewicz inequality; subgradients extend optimality conditions to non-smooth functions.
7. Gradient descent and Newton’s method
Gradient descent uses first derivatives, and its speed is set by the condition number; Newton’s method also uses the Hessian and converges quadratically near the solution.
Algorithm 7.1 — Gradient descent From a point x_0, iterate with a step \eta > 0: x_{k+1} = x_k - \eta\, \nabla f(x_k).
Theorem 7.2 — Smooth functions If f is L-smooth and bounded below by f^*, gradient descent with \eta = 1/L satisfies f(x_{k+1}) \le f(x_k) - \frac{1}{2L} \|\nabla f(x_k)\|^2, \qquad \min_{k < K} \|\nabla f(x_k)\|^2 \le \frac{2L\, (f(x_0) - f^*)}{K} .
Proof. Lemma 6.4 at y = x_k - \nabla f(x_k)/L gives the first inequality. Summing it over k < K telescopes. ∎
No convexity is needed, but only small gradients are guaranteed, not a minimiser: this is the setting of deep learning.
Theorem 7.3 — Smooth convex functions If f is convex and L-smooth with a minimiser x^*, gradient descent with \eta = 1/L satisfies f(x_K) - f(x^*) \le \frac{L\, \|x_0 - x^*\|^2}{2K} .
Proof. Write g_k = \nabla f(x_k) and f^* = f(x^*). Convexity gives f(x_k) \le f^* + \langle g_k, x_k - x^* \rangle, and Theorem 7.2 then gives f(x_{k+1}) \le f^* + \langle g_k, x_k - x^* \rangle - \frac{\|g_k\|^2}{2L} = f^* + \frac L2 \big( \|x_k - x^*\|^2 - \|x_{k+1} - x^*\|^2 \big), where the equality expands \|x_{k+1} - x^*\|^2 = \|x_k - x^* - g_k / L\|^2. Summing over k < K telescopes, and f(x_k) never increases. ∎
Theorem 7.4 — Strongly convex functions If moreover f is \mu-strongly convex, then with \kappa = L / \mu f(x_k) - f(x^*) \le \Big(1 - \frac1\kappa\Big)^k \big(f(x_0) - f(x^*)\big). An accuracy \varepsilon therefore needs about \kappa \log(1/\varepsilon) iterations.
Proof. Combine Theorem 7.2 with the Polyak–Łojasiewicz inequality of Proposition 6.5: f(x_{k+1}) - f^* \le f(x_k) - f^* - \frac{1}{2L} \|\nabla f(x_k)\|^2 \le \Big(1 - \frac{\mu}{L}\Big) \big(f(x_k) - f^*\big). ∎
Nesterov’s accelerated gradient improves the two rates to 1/K^2 and (1 - 1/\sqrt\kappa)^k, which is optimal for first-order methods (ch. 10).
Example 7.5 — The price of a bad condition number Take f(x) = \frac12 (x_1^2 + 100\, x_2^2), so L = 100 and \mu = 1.
With \eta = 1/L, the second coordinate is solved in one step, and the first is multiplied by 0.99 at each step. Reducing f by a factor 10^{-6} needs 0.99^{2k} \le 10^{-6}: k \ge \frac{\ln 10^{6}}{2\, |\ln 0.99|} \approx 687 \text{ steps}, while one Newton step lands exactly on the minimiser.
Algorithm 7.6 — Newton’s method Minimise the second-order Taylor model at x_k: x_{k+1} = x_k - \big[\nabla^2 f(x_k)\big]^{-1} \nabla f(x_k). The method is invariant under affine changes of variables, so the condition number does not slow it down. Each step solves a d \times d linear system, at cost O(d^3).
Theorem 7.7 — Local quadratic convergence Let \nabla^2 f be M-Lipschitz and \nabla^2 f(x^*) \succeq \mu I at a minimiser x^*. If \|x_0 - x^*\| \le \mu / (2M), the Newton iterates satisfy \|x_{k+1} - x^*\| \le \frac{M}{\mu}\, \|x_k - x^*\|^2 . The number of correct digits roughly doubles at each step (proof in ch. 10).
Far from x^*, Newton’s method needs a line search. The code compares both methods on the logistic regression of Example 6.6.
import numpy as np
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True) # 569 tumours, 30 features
X = (X - X.mean(0)) / X.std(0)
X = np.c_[np.ones(len(X)), X] # intercept column
n, d = X.shape
lam = 1e-2 # ridge term: mu = lam
def grad_hess(w):
p = 1 / (1 + np.exp(-X @ w))
g = X.T @ (p - y) / n + lam * w
H = (X.T * (p * (1 - p))) @ X / n + lam * np.eye(d)
return g, H
L = np.linalg.norm(X, 2) ** 2 / (4 * n) + lam # smoothness constant
print(f"L = {L:.2f}, mu = {lam}, kappa <= {L / lam:.0f}")
w = np.zeros(d)
for k in range(1, 1001):
w -= grad_hess(w)[0] / L # gradient descent, step 1/L
if k in (10, 100, 1000):
print(f"GD k = {k:4d} |grad| = {np.linalg.norm(grad_hess(w)[0]):.1e}")
w = np.zeros(d)
for k in range(1, 9):
g, H = grad_hess(w)
w -= np.linalg.solve(H, g) # pure Newton step
print(f"Newton k = {k:4d} |grad| = {np.linalg.norm(grad_hess(w)[0]):.1e}")
# GD: 1.3e-01, 1.4e-02, 1.2e-04 after 10, 100, 1000 steps
# Newton: 4.0e-01, 1.6e-01, 5.9e-02, 1.8e-02, 2.8e-03, 9.5e-05, 1.1e-07, 1.4e-13Gradient descent gains about one digit per 450 steps. Newton’s method takes four slow steps, then enters the quadratic phase of Theorem 7.7.
Key takeaways — chapter 7
- With step 1/L: gradient norms decrease like 1/\sqrt K for smooth functions, f - f^* like 1/K for convex ones and like (1 - 1/\kappa)^k for strongly convex ones.
- The condition number \kappa is the number of iterations per digit, up to a constant.
- Newton’s method converges quadratically near a non-degenerate minimiser, at the price of a linear system per step.
8. Constraints, KKT conditions and Lagrangian duality
Multipliers put a price on each constraint, and the best prices solve a second problem, the dual. Consider \text{(P)} \qquad \min_x\ f_0(x) \quad \text{subject to} \quad f_i(x) \le 0 \ \ (i \le m), \qquad h_j(x) = 0 \ \ (j \le p), with optimal value p^*.
Definition 8.1 — Lagrangian and dual problem The Lagrangian and the dual function are \mathcal{L}(x, \lambda, \nu) = f_0(x) + \sum_i \lambda_i f_i(x) + \sum_j \nu_j h_j(x), \qquad g(\lambda, \nu) = \inf_x \mathcal{L}(x, \lambda, \nu). The dual problem maximises g over \lambda \ge 0 and \nu, with value d^*. The dual function is concave, as an infimum of affine functions, even when (P) is not convex.
Proposition 8.2 — Weak duality Always, d^* \le p^*.
Proof. For a feasible x and \lambda \ge 0, each \lambda_i f_i(x) \le 0 and each h_j(x) = 0, so g(\lambda, \nu) \le \mathcal{L}(x, \lambda, \nu) \le f_0(x). ∎
Theorem 8.3 — Slater’s condition Let (P) be convex: f_0 and the f_i convex, the h_j affine. If some feasible point satisfies the inequality constraints strictly and p^* is finite, then d^* = p^* and the dual optimum is attained (sketch in ch. 10). For linear programs, a finite p^* suffices.
Theorem 8.4 — Karush–Kuhn–Tucker conditions Let all functions be differentiable. The KKT conditions at (x, \lambda, \nu) are:
- primal feasibility: f_i(x) \le 0 and h_j(x) = 0;
- dual feasibility: \lambda \ge 0;
- complementary slackness: \lambda_i f_i(x) = 0 for every i;
- stationarity: the gradient of the Lagrangian in x vanishes, \nabla f_0(x) + \sum_i \lambda_i \nabla f_i(x) + \sum_j \nu_j \nabla h_j(x) = 0 .
If strong duality holds, every primal optimum x^* and dual optimum (\lambda^*, \nu^*) satisfy them. If (P) is convex, every point that satisfies them is optimal, and d^* = p^*.
Proof. Necessity. The following chain is an equality: f_0(x^*) = g(\lambda^*, \nu^*) \le \mathcal{L}(x^*, \lambda^*, \nu^*) \le f_0(x^*) . Equality in the second step kills the non-positive terms \lambda_i^* f_i(x^*), giving (3); equality in the first says that x^* minimises the Lagrangian, giving (4).
Sufficiency. For convex (P) and \lambda \ge 0, the Lagrangian is convex in x, so (4) makes x its global minimiser, and g(\lambda, \nu) = f_0(x) by (1) and (3). Weak duality makes both points optimal. ∎
Example 8.5 — The minimum-norm solution Minimise \frac12 \|x\|^2 subject to Ax = b, with A of full row rank. Stationarity gives x = -A^\top \nu, and feasibility -A A^\top \nu = b. Hence \nu^* = -(A A^\top)^{-1} b, \qquad x^* = A^\top (A A^\top)^{-1} b = A^{+} b . The dual function is g(\nu) = -\frac12 \|A^\top \nu\|^2 - \nu^\top b, and there is no duality gap: g(\nu^*) = \tfrac12\, b^\top (A A^\top)^{-1} b = \tfrac12 \|x^*\|^2 .
Example 8.6 — Projection onto the simplex Project y = (0.8, 0.6, -0.2) onto the set of probability vectors: minimise \frac12 \|x - y\|^2 subject to -x_i \le 0 and \sum_i x_i = 1.
- Stationarity: x_i - y_i - \lambda_i + \nu = 0.
- Complementary slackness: if x_i > 0 then \lambda_i = 0 and x_i = y_i - \nu; if x_i = 0 then \lambda_i = \nu - y_i \ge 0. So x_i = \max(y_i - \nu, 0).
- Feasibility fixes \nu: with two positive coordinates, (0.8 - \nu) + (0.6 - \nu) = 1 gives \nu = 0.2.
So x^* = (0.6, 0.4, 0), with \lambda_3 = 0.4 \ge 0: the KKT conditions hold for a convex problem, and x^* is optimal.
Example 8.7 — Linear programming and optimal transport For the linear program of minimising c^\top x subject to b - Ax = 0 and x \ge 0, the infimum of the Lagrangian over x is finite only when c - A^\top \nu \ge 0. The dual is \max_\nu\ b^\top \nu \quad \text{subject to} \quad A^\top \nu \le c . Optimal transport between histograms a and b with costs C_{ij} is such a program, over couplings P \ge 0 with marginals a and b; its dual is the Kantorovich dual: \max_{f, g}\ a^\top f + b^\top g \quad \text{subject to} \quad f_i + g_j \le C_{ij} \ \text{ for all } i, j .
The code solves a small transport problem and reads the dual variables returned by the solver.
import numpy as np
from scipy.optimize import linprog
a, b = np.array([0.5, 0.3, 0.2]), np.array([0.4, 0.4, 0.2]) # two histograms
xs, ys = np.array([0.0, 1.0, 2.0]), np.array([0.5, 1.5, 3.0])
C = (xs[:, None] - ys[None, :]) ** 2 # transport costs
# primal: minimise <C, P> subject to P 1 = a, P^T 1 = b, P >= 0
A_eq = np.vstack([np.kron(np.eye(3), np.ones(3)), np.kron(np.ones(3), np.eye(3))])
res = linprog(C.ravel(), A_eq=A_eq, b_eq=np.r_[a, b], bounds=(0, None), method="highs")
f, g = res.eqlin.marginals[:3], res.eqlin.marginals[3:] # dual variables
P = res.x.reshape(3, 3)
print(f"primal value {res.fun:.4f} dual value {a @ f + b @ g:.4f}")
print("dual feasible:", np.all(f[:, None] + g[None, :] <= C + 1e-9))
print("complementary slackness:", np.allclose(P * (C - f[:, None] - g[None, :]), 0))
print(np.round(P, 2) + 0.0)
# primal value 0.6000, dual value 0.6000; both checks print TrueMass moves only along pairs where the dual constraint is tight, f_i + g_j = C_{ij}.
Key takeaways — chapter 8
- The dual function is a concave lower bound on the optimal value (weak duality); Slater’s condition closes the gap for convex problems.
- KKT = feasibility + non-negative multipliers + complementary slackness + stationarity of the Lagrangian; for convex problems they characterise optimality.
- The dual of a linear program is a linear program; for optimal transport it is the Kantorovich dual.
9. Stochastic gradient and proximal methods
Learning objectives average many examples and often add a non-smooth regulariser such as the \ell_1 norm. Stochastic gradient handles the first, proximal operators the second.
Algorithm 9.1 — Stochastic gradient (SGD) For f(x) = \frac1n \sum_i f_i(x), iterate x_{k+1} = x_k - \eta_k g_k with an unbiased gradient estimate, \mathbb{E}[g_k \mid x_k] = \nabla f(x_k), typically g_k = \nabla f_{i_k}(x_k) with i_k uniform. A step costs 1/n of a gradient step.
Theorem 9.2 — SGD with decreasing steps Let f be \mu-strongly convex with minimiser x^*, and \mathbb{E}\|g_k\|^2 \le G^2 along the iterates. With \eta_k = 1/(\mu (k + 1)) for k \ge 1, \mathbb{E} \|x_k - x^*\|^2 \le \frac{Q}{k}, \qquad Q = \max\Big( \|x_1 - x^*\|^2,\ \frac{G^2}{\mu^2} \Big).
Proof. Let e_k = \mathbb{E}\|x_k - x^*\|^2. Expand the square, condition on x_k and use Proposition 6.5: e_{k+1} = e_k - 2\eta_k\, \mathbb{E}\langle \nabla f(x_k), x_k - x^* \rangle + \eta_k^2\, \mathbb{E}\|g_k\|^2 \le (1 - 2\mu\eta_k)\, e_k + \eta_k^2 G^2 . With \eta_k = 1/(\mu(k+1)) and the induction hypothesis e_k \le Q/k, e_{k+1} \le \frac{k - 1}{k + 1} \cdot \frac{Q}{k} + \frac{Q}{(k + 1)^2} = \frac{Q}{k + 1} \cdot \frac{k^2 + k - 1}{k^2 + k} \le \frac{Q}{k + 1} . ∎
On the whole space a bounded second moment is impossible; a projection onto a ball containing x^* enforces it without changing the proof.
Proposition 9.3 — Constant steps reach a noise floor Under the same assumptions, a constant step \eta < 1/(2\mu) gives e_k \le (1 - 2\mu\eta)^k\, e_0 + \frac{\eta\, G^2}{2\mu} . Proof. Unroll the recursion e_{k+1} \le (1 - 2\mu\eta) e_k + \eta^2 G^2 and sum the geometric series. ∎
import numpy as np
rng = np.random.default_rng(1)
n, d = 2000, 10
A = rng.standard_normal((n, d))
b = A @ rng.standard_normal(d) + 0.5 * rng.standard_normal(n)
x_hat = np.linalg.lstsq(A, b, rcond=None)[0] # minimiser of f = (1/2n) |Ax - b|^2
mu = np.linalg.eigvalsh(A.T @ A / n).min() # strong convexity constant of f
def sgd(step, iters=50_000, seed=2):
r, x = np.random.default_rng(seed), np.zeros(d)
for k in range(iters):
i = r.integers(n) # one example, drawn uniformly
g = (A[i] @ x - b[i]) * A[i] # unbiased estimate of grad f(x)
x -= step(k) * g
return np.sum((x - x_hat) ** 2)
print(f"mu = {mu:.2f}")
for name, step in [("constant 0.02 ", lambda k: 0.02),
("constant 0.002", lambda k: 0.002),
("1/(mu(k+k0)) ", lambda k: 1 / (mu * (k + 100)))]:
print(f"{name} |x_K - x_hat|^2 = {sgd(step):.1e}")
# mu = 0.90; constant 0.02: 1.3e-02; constant 0.002: 2.8e-03; decreasing: 3.3e-05With G^2 \approx 0.25 \times 10, the noise variance times \mathbb{E}\|a_i\|^2, the floor \eta G^2 / (2\mu) is 2.8 \times 10^{-2} \ \text{for } \eta = 0.02, \qquad 2.8 \times 10^{-3} \ \text{for } \eta = 0.002 . Single runs scatter around it, within a factor of 3. The shift k_0 stabilises the first steps.
Definition 9.4 — Proximal operator For a convex, lower semicontinuous g and \gamma > 0, \operatorname{prox}_{\gamma g}(v) = \arg\min_x \Big( g(x) + \frac{1}{2\gamma} \|x - v\|^2 \Big). The minimiser exists and is unique, because the objective is strongly convex.
Proposition 9.5 — Three proximal operators
- For the indicator of a closed convex set C (0 on C, +\infty outside), the prox is the projection P_C of Theorem 5.2.
- For g = \frac{\lambda}{2} \|x\|^2, it is the shrinkage v / (1 + \gamma\lambda).
- For g = \lambda \|x\|_1, it is soft thresholding, coordinate by coordinate: \operatorname{prox}_{\gamma g}(v)_i = \operatorname{sign}(v_i)\, \max(|v_i| - \gamma\lambda,\ 0).
Proof. For soft thresholding, coordinates separate, and x_i is optimal if and only if 0 \in \gamma\lambda\, \partial|x_i| + x_i - v_i (Definition 6.7). A positive x_i forces x_i = v_i - \gamma\lambda > 0, negative values are symmetric, and x_i = 0 works if and only if |v_i| \le \gamma\lambda. ∎
Proposition 9.6 — Fixed points Let f be convex and differentiable, g convex and \eta > 0. A point x^* minimises f + g if and only if x^* = \operatorname{prox}_{\eta g}\big(x^* - \eta \nabla f(x^*)\big). Proof. p = \operatorname{prox}_{\eta g}(w) if and only if (w - p)/\eta \in \partial g(p). With p = x^* and w = x^* - \eta \nabla f(x^*), this reads 0 \in \nabla f(x^*) + \partial g(x^*). ∎ The prox is also non-expansive (ch. 10).
Algorithm 9.7 — Proximal gradient (ISTA) With f convex and L-smooth and \eta = 1/L, iterate a gradient step on f followed by a prox step on g: x_{k+1} = \operatorname{prox}_{\eta g}\big(x_k - \eta \nabla f(x_k)\big). It keeps the rate L \|x_0 - x^*\|^2 / (2k) of Theorem 7.3, and its accelerated version FISTA reaches 1/k^2 (Beck and Teboulle, 2009). For the lasso, f = \frac12 \|Ax - b\|^2 and g = \lambda \|x\|_1.
Example 9.8 — Soft thresholding by hand The minimiser of \frac12 (x - 3)^2 + 2|x| is \operatorname{prox}_{2|\cdot|}(3) = \max(3 - 2, 0) = 1. Check: at x = 1, the derivative of the quadratic is -2 and the subdifferential of 2|x| is \{2\}; they cancel.
With 1.5 instead of 3, the minimiser is 0, since 1.5 \le 2.
The code recovers a sparse signal from fewer measurements than unknowns with ISTA.
import numpy as np
from sklearn.linear_model import Lasso
rng = np.random.default_rng(0)
n, d = 100, 200 # more unknowns than equations
A = rng.standard_normal((n, d)) / np.sqrt(n)
x_true = np.zeros(d)
x_true[:5] = [3, -2, 2, -1.5, 1] # a 5-sparse signal
b = A @ x_true + 0.05 * rng.standard_normal(n)
lam = 0.25
def soft(v, t): # prox of t * |.|_1
return np.sign(v) * np.maximum(np.abs(v) - t, 0)
def F(x):
return 0.5 * np.sum((A @ x - b) ** 2) + lam * np.abs(x).sum()
L = np.linalg.norm(A, 2) ** 2 # Lipschitz constant of the smooth part
x = np.zeros(d)
for k in range(1, 3001):
x = soft(x - A.T @ (A @ x - b) / L, lam / L) # ISTA step
if k in (10, 100, 3000):
print(f"k = {k:4d} F = {F(x):.6f}")
ref = Lasso(alpha=lam / n, fit_intercept=False, tol=1e-12, max_iter=100000).fit(A, b).coef_
print(f"scikit-learn F = {F(ref):.6f}")
print("support:", np.flatnonzero(np.abs(x) > 1e-6), "values:", np.round(x[:5], 2))
# F = 2.965473, 2.343866, 2.343866 after 10, 100, 3000 steps; scikit-learn 2.343866
# support [0 1 2 3 4], values [2.83 -1.77 1.71 -1.26 0.69]ISTA recovers the support exactly, with values shrunk towards 0: the bias of the \ell_1 penalty.
Key takeaways — chapter 9
- SGD with steps 1/(\mu k) converges like 1/k in squared distance; constant steps stall at a floor proportional to the step.
- The prox of a function generalises the projection; for \ell_1 it is soft thresholding.
- Minimisers of f + g are fixed points of a gradient step followed by a prox step; iterating it is ISTA.
10. Complements for self-study
This chapter collects the proofs deferred from the core chapters and further tools: min–max theorems for eigenvalues, the Schur complement, power iteration, the Riesz and sampling theorems, acceleration and convex conjugates. Each section is independent; read it before the MVA course that needs it.
Min–max theorems and the Frobenius case of Eckart–Young
Theorem 10.1 — Courant–Fischer Let S be symmetric with eigenvalues \lambda_1 \ge \dots \ge \lambda_n and Rayleigh quotient R. For every k, \lambda_k = \max_{\dim V = k}\ \min_{x \in V \setminus \{0\}} R(x) = \min_{\dim V = n - k + 1}\ \max_{x \in V \setminus \{0\}} R(x).
Proof. For V = \operatorname{span}(u_1, \dots, u_k), every x \in V has R(x) \ge \lambda_k, a weighted average of \lambda_1, \dots, \lambda_k.
Conversely, any V of dimension k meets \operatorname{span}(u_k, \dots, u_n), of dimension n - k + 1, in a non-zero vector, where R \le \lambda_k. The second formula is the first one applied to -S. ∎
Proposition 10.2 — Weyl’s inequality for singular values For matrices X and Y of the same size and indices i, j \ge 1, \sigma_{i + j - 1}(X + Y) \le \sigma_i(X) + \sigma_j(Y) .
Proof. The operator-norm part of Theorem 3.4 says that \sigma_i(X) is the distance from X to the matrices of rank at most i - 1.
Let C_X and C_Y be the closest matrices of ranks i - 1 and j - 1. Then C_X + C_Y has rank at most i + j - 2, so \sigma_{i+j-1}(X + Y) \le \|X + Y - C_X - C_Y\|_2 \le \sigma_i(X) + \sigma_j(Y). ∎
Proof of the Frobenius case of Theorem 3.4. Let B have rank at most k.
Weyl’s inequality with X = A - B, Y = B and j = k + 1 gives \sigma_{i+k}(A) \le \sigma_i(A - B), because \sigma_{k+1}(B) = 0.
Summing the squares over i, \|A - B\|_F^2 = \sum_{i \ge 1} \sigma_i(A - B)^2 \ \ge\ \sum_{i \ge 1} \sigma_{i+k}(A)^2 = \|A - A_k\|_F^2 . ∎
The Schur complement
Proposition 10.3 — Schur complement Let M be a symmetric block matrix with A \succ 0: M = \begin{pmatrix} A & B \\ B^\top & C \end{pmatrix}, \qquad M \succeq 0 \iff C - B^\top A^{-1} B \succeq 0 .
Proof. Block elimination gives the factorisation M = E^\top D E, with an invertible E and a block-diagonal D: E = \begin{pmatrix} I & A^{-1} B \\ 0 & I \end{pmatrix}, \qquad D = \begin{pmatrix} A & 0 \\ 0 & C - B^\top A^{-1} B \end{pmatrix}. Then x^\top M x = (Ex)^\top D (Ex), and Ex runs over all vectors when x does. So M \succeq 0 if and only if D \succeq 0, that is, since A \succ 0, if and only if the Schur complement is PSD. ∎
The Schur complement is the conditional covariance of a Gaussian vector, and it turns constraints such as x^\top A^{-1} x \le t into the linear matrix inequalities of semidefinite programming.
Power iteration
Proposition 10.4 — Power iteration Let S be symmetric with |\lambda_1| > |\lambda_2| \ge \dots \ge |\lambda_n|, and let x_0 satisfy u_1^\top x_0 \neq 0.
The normalised iterates x_k = S^k x_0 / \|S^k x_0\| make an angle \theta_k with u_1 such that \tan \theta_k \le \Big| \frac{\lambda_2}{\lambda_1} \Big|^k \tan \theta_0 .
Proof. Write x_0 = \sum_i c_i u_i. Then S^k x_0 = \sum_i c_i \lambda_i^k u_i, and the tangent of the angle is the ratio of the component orthogonal to u_1 to the component along u_1: \tan \theta_k = \frac{\big(\sum_{i \ge 2} c_i^2 \lambda_i^{2k}\big)^{1/2}}{|c_1|\, |\lambda_1|^k} \le \Big|\frac{\lambda_2}{\lambda_1}\Big|^k \frac{\big(\sum_{i \ge 2} c_i^2\big)^{1/2}}{|c_1|} . ∎
Power iteration computes PageRank and the top singular vectors of huge matrices. Its block version, with a random starting block, is the core of the randomized SVD of Halko, Martinsson and Tropp (2011); Krylov methods such as Lanczos converge faster by keeping all the iterates.
Deferred proofs of chapter 5, and the Riesz theorem
Full proof of Theorem 5.2. Let d be the distance from x to C, and y_k \in C with \|x - y_k\| \to d.
- The midpoint of y_k and y_l lies in C, so it is at distance at least d from x. The parallelogram law, applied to the two vectors from x, gives \|y_k - y_l\|^2 = 2\|x - y_k\|^2 + 2\|x - y_l\|^2 - 4\Big\|x - \tfrac{y_k + y_l}{2}\Big\|^2 \le 2\|x - y_k\|^2 + 2\|x - y_l\|^2 - 4d^2 .
- The right side tends to 0, so (y_k) is a Cauchy sequence. Its limit p exists by completeness, lies in C because C is closed, and satisfies \|x - p\| = d.
- If p and p' are two minimisers, the alternating sequence p, p', p, p', \dots is minimising, hence Cauchy, so p = p'.
- For y \in C and t \in (0, 1], the point p + t(y - p) lies in C. Expanding \|x - p - t(y - p)\|^2 \ge \|x - p\|^2 gives -2t \operatorname{Re} \langle x - p,\ y - p \rangle + t^2 \|y - p\|^2 \ge 0 ; divide by t and let t \to 0. ∎
Theorem 10.5 — Riesz representation Every continuous linear form \varphi on a Hilbert space H is an inner product: there is a unique g \in H with \varphi(x) = \langle x, g \rangle \quad \text{for all } x \in H . Proof. If \varphi = 0, take g = 0. Otherwise its kernel is a closed proper subspace. Projecting a vector outside it (Theorem 5.2) gives a non-zero z orthogonal to the kernel, scaled so that \varphi(z) = 1.
Each x - \varphi(x) z lies in the kernel, hence is orthogonal to z. So \langle x, z \rangle = \varphi(x) \|z\|^2, and g = z / \|z\|^2 works. Two representers have a difference orthogonal to every vector, hence equal. ∎
In a Hilbert space of functions where every evaluation f \mapsto f(x) is continuous, Riesz gives a K_x with f(x) = \langle f, K_x \rangle; the function K(x, y) = \langle K_y, K_x \rangle is the reproducing kernel of Kernel Methods.
The sampling theorem
Theorem 10.6 — Shannon–Nyquist sampling Let f \in L^2(\mathbb{R}) be continuous with \hat f supported in [-B, B]. With \operatorname{sinc}(t) = \sin(\pi t) / (\pi t), f is determined by its samples at rate 2B: f(x) = \sum_{n \in \mathbb{Z}} f\Big(\frac{n}{2B}\Big)\, \operatorname{sinc}(2Bx - n).
Proof. Sketch. On [-B, B], expand \hat f in a Fourier series of period 2B. By the inversion formula, its coefficients are the samples, up to a factor and a sign of the index: \hat f(\xi) = \sum_n c_n\, e^{i\pi n \xi / B}, \qquad c_n = \frac{1}{2B} \int_{-B}^{B} \hat f(\xi)\, e^{-i\pi n \xi / B}\, d\xi = \frac{1}{2B} f\Big(-\frac{n}{2B}\Big). Invert the transform term by term, using \int_{-B}^{B} e^{2i\pi t \xi}\, d\xi = 2B \operatorname{sinc}(2Bt). ∎
Sampling below the rate 2B folds high frequencies onto low ones: this is aliasing, the trade-off studied in Sub-Pixel Image Processing. Mallat (2009) treats sampling, filtering and wavelet bases in depth.
Acceleration and lower bounds
Algorithm 10.7 — Nesterov’s accelerated gradient For an L-smooth convex f, start from x_0 = y_0 and iterate x_{k+1} = y_k - \frac1L \nabla f(y_k), \qquad y_{k+1} = x_{k+1} + \beta_k (x_{k+1} - x_k). With the momentum \beta_k = (t_k - 1)/t_{k+1}, where t_0 = 1 and t_{k+1} = \big(1 + \sqrt{1 + 4 t_k^2}\big)/2, it satisfies f(x_k) - f^* \le \frac{2L\, \|x_0 - x^*\|^2}{(k + 1)^2} (Beck and Teboulle, 2009, with g = 0). For a \mu-strongly convex f, the constant momentum \beta = (\sqrt\kappa - 1)/(\sqrt\kappa + 1) gives a linear rate with factor 1 - 1/\sqrt\kappa (Nesterov, 2018, ch. 2).
These rates cannot be improved by any method that only combines gradients. Nesterov (2018, section 2.1.2) builds, for every such method and every k below half the dimension, an L-smooth convex quadratic with f(x_k) - f^* \ \ge\ \frac{3 L\, \|x_0 - x^*\|^2}{32\, (k + 1)^2} . Exercise 12 measures the gain: on a quadratic with \kappa = 1000, acceleration needs about 19 times fewer iterations than gradient descent.
Conjugate functions and proximal operators
Definition 10.8 — Convex conjugate The conjugate of a function f is f^*(y) = \sup_x \big( \langle x, y \rangle - f(x) \big). It is convex, as a supremum of affine functions, and satisfies the Fenchel–Young inequality f(x) + f^*(y) \ge \langle x, y \rangle. For a closed convex f, f^{**} = f. Two examples: \frac12 \|\cdot\|^2 is its own conjugate, and the conjugate of a norm is the indicator of the unit ball of the dual norm (Definition 2.1).
Proposition 10.9 — Firm non-expansiveness and Moreau’s identity For a closed convex g, the prox is firmly non-expansive, hence non-expansive: \|\operatorname{prox}_g(u) - \operatorname{prox}_g(v)\|^2 \le \langle \operatorname{prox}_g(u) - \operatorname{prox}_g(v),\ u - v \rangle . Moreover, Moreau’s identity holds: \operatorname{prox}_g(v) + \operatorname{prox}_{g^*}(v) = v .
Proof. Let p = \operatorname{prox}_g(u) and q = \operatorname{prox}_g(v), so that u - p \in \partial g(p) and v - q \in \partial g(q). Adding the two subgradient inequalities, at (p, q) and at (q, p), gives the monotonicity of the subdifferential: \langle (u - p) - (v - q),\ p - q \rangle \ge 0 , which is the claim; Cauchy–Schwarz then gives non-expansiveness.
For Moreau’s identity, use the inversion rule of conjugates: for closed convex g, y \in \partial g(x) if and only if x \in \partial g^*(y).
So p = \operatorname{prox}_g(v) means v - p \in \partial g(p), that is p \in \partial g^*(v - p), which says exactly that v - p = \operatorname{prox}_{g^*}(v). ∎
For g = \lambda \|\cdot\|_1, the conjugate is the indicator of the box \{\|y\|_\infty \le \lambda\}, whose prox is the clipping of each coordinate to [-\lambda, \lambda]. Moreau’s identity then says that soft thresholding is v minus its clipping, which is the formula of Proposition 9.5.
Slater’s theorem
Proof sketch of Theorem 8.3, for inequality constraints only. Consider the set of achievable constraint and objective levels, \mathcal{A} = \{ (u, t) \in \mathbb{R}^m \times \mathbb{R} : f_i(x) \le u_i \text{ for all } i \text{ and } f_0(x) \le t \text{ for some } x \}.
- \mathcal{A} is convex, because the f_i are convex, and it does not meet the half-line of points (0, s) with s < p^*.
- A separating hyperplane gives (\lambda, \lambda_0) \neq 0 with \lambda^\top u + \lambda_0 t \ge \lambda_0 p^* on \mathcal{A}. Since the set is closed under increasing u and t, both multipliers are non-negative.
- If \lambda_0 = 0, then \lambda^\top u \ge 0 on \mathcal{A}, which fails at the strictly feasible point, where every u_i < 0. So \lambda_0 > 0.
- Dividing by \lambda_0: for every x, f_0(x) + \sum_i (\lambda_i / \lambda_0) f_i(x) \ge p^*. So the dual function at \lambda / \lambda_0 is at least p^*, and weak duality gives equality. ∎
Proof of Theorem 7.7
Write e_k = x_k - x^* and H_k = \nabla^2 f(x_k). The Lipschitz bound gives H_k \succeq (\mu - M \|e_k\|) I \succeq \frac{\mu}{2} I while \|e_k\| \le \mu / (2M). Since \nabla f(x^*) = 0, Taylor’s formula with integral remainder gives e_{k+1} = e_k - H_k^{-1} \nabla f(x_k) = H_k^{-1} \int_0^1 \big( H_k - \nabla^2 f(x^* + t e_k) \big)\, e_k\, dt . The integrand has norm at most M (1 - t) \|e_k\|^2, hence \|e_{k+1}\| \le \frac{2}{\mu} \cdot \frac{M}{2} \|e_k\|^2 = \frac{M}{\mu} \|e_k\|^2 \le \frac12 \|e_k\| , so the iterates stay in the region and the bound holds at every step. ∎
Key takeaways — chapter 10
- Eigenvalues are min–max values of the Rayleigh quotient; singular values satisfy Weyl’s inequality, which gives the Frobenius case of Eckart–Young.
- Power iteration converges at the rate |\lambda_2 / \lambda_1|^k; band-limited functions are determined by samples at twice their bandwidth.
- Acceleration reaches the optimal first-order rates 1/k^2 and (1 - 1/\sqrt\kappa)^k; proximal operators are firmly non-expansive, and Moreau’s identity links them to conjugates.
11. Research directions and open problems
The tools of this page are old, but their use in learning raises open questions. This chapter, for self-study, points to a few active lines of work, with entry papers.
Randomized numerical linear algebra
Halko, Martinsson and Tropp (2011) showed that a random projection followed by a small exact SVD approximates the top singular subspace of a large matrix, with error close to \sigma_{k+1} after a few power iterations. Martinsson and Tropp (2020) survey the field: sketching, randomized least squares, Nyström approximations of kernel matrices. Open questions include the right sketch size for a given accuracy, and the behaviour of these algorithms in the low-precision arithmetic of GPUs.
Low rank in learning
Candès and Recht (2009) proved that an incoherent low-rank matrix can be recovered exactly, with high probability, from few random entries by minimising the nuclear norm (Definition 3.2), a convex problem. Practitioners rather factorise X = UV^\top and run gradient descent, a non-convex problem. Burer and Monteiro (2003) introduced this factorisation for semidefinite programs. Ge, Lee and Ma (2016) showed that, for positive semidefinite matrix completion under incoherence assumptions, the factorised objective has no spurious local minimum.
Gunasekar and coauthors (2017) conjectured that gradient descent on a factorised model implicitly minimises the nuclear norm; Arora, Cohen, Hu and Luo (2019) gave evidence that deep factorisations rather favour low rank in a way no norm captures. Low-rank adaptation (Hu and coauthors, 2022) uses the same structure to fine-tune large language models, as taught in Foundations of LLMs and LLMs for Code and Proof.
The implicit bias of gradient descent
On linearly separable data, the logistic loss has no minimiser, yet Soudry and coauthors (2018) proved that gradient descent converges in direction to the maximum-margin separator, at a logarithmic rate. Which solution an optimiser selects, among the many that fit the data, is now a central question of the theory of deep learning taught in Theoretical Foundations of Deep Learning.
Beyond the classical step-size theory
The descent lemma guarantees progress only for steps below 2/L. Cohen and coauthors (2021) observed that full-batch gradient descent on neural networks drives the largest Hessian eigenvalue up to about 2/\eta and keeps training at this “edge of stability”, where the loss decreases non-monotonically. Explaining this regime is open. A related line weakens convexity: with smoothness, the Polyak–Łojasiewicz inequality of Proposition 6.5 gives linear convergence without convexity (Polyak, 1963; Karimi, Nutini and Schmidt, 2016), and holds for some over-parameterised models.
Worst-case analysis by computer
Drori and Teboulle (2014) showed that the worst case of a first-order method over all smooth convex functions can be bounded by solving a semidefinite program. Taylor, Hendrickx and Glineur (2017) made this exact with interpolation conditions for smooth strongly convex functions. The approach has produced tight constants and new methods, and it turns the design of optimisation algorithms into a computational question.
Stochastic and adaptive methods
For finite sums, variance reduction recovers linear rates with stochastic steps: SAG (Schmidt, Le Roux and Bach, 2017), SVRG (Johnson and Zhang, 2013) and SAGA (Defazio, Bach and Lacoste-Julien, 2014). For least squares, Bach and Moulines (2013) showed that averaged SGD with a constant step reaches the optimal O(1/n) rate without strong convexity.
Adaptive methods such as Adam (Kingma and Ba, 2015) and matrix preconditioners such as Shampoo (Gupta, Koren and Singer, 2018) dominate the training of large models, but their theory lags behind practice. The optimisers used for language models, discussed in Foundations of LLMs and Training and Deploying Large-Scale Models, are a fast-moving research topic.
Proximal algorithms with learned denoisers
Plug-and-play methods (Venkatakrishnan, Bouman and Wohlberg, 2013) replace the prox of a regulariser in a splitting algorithm by an image denoiser, possibly a neural network. Convergence then needs the denoiser to behave like a prox: Ryu and coauthors (2019) imposed Lipschitz constraints, and Hurault, Leclaire and Papadakis (2022) built denoisers that are exact gradient steps. These methods are studied in Generative Models for Images and Deep Learning for Image Restoration.
Key takeaways — chapter 11
- Randomization and low rank make linear algebra scale; when non-convex factorised methods succeed is only partly understood.
- The optimiser selects a solution (implicit bias), and practice runs beyond the classical step-size theory (edge of stability).
- Worst-case analyses can be computed, and proximal splitting now accepts learned denoisers under conditions that are still being sharpened.
Exercises
The exercises are sorted by level: ★ applies the course, ★★ combines results or proves a short one, ★★★ is open-ended. The chapters used are in brackets.
★ Diagonalising a symmetric matrix. Let S = \begin{pmatrix} 3 & 1 \\ 1 & 3 \end{pmatrix}. Compute its spectral decomposition, then S^{-1} and S^{10} without multiplying matrices (ch. 1).
Solution: the eigenvalues are 4 and 2, with u_1 = (1, 1)/\sqrt2 and u_2 = (1, -1)/\sqrt2. Functions of S act on the eigenvalues: S^{-1} = \tfrac14 u_1 u_1^\top + \tfrac12 u_2 u_2^\top = \frac18 \begin{pmatrix} 3 & -1 \\ -1 & 3 \end{pmatrix}, \qquad S^{10} = 4^{10} u_1 u_1^\top + 2^{10} u_2 u_2^\top = \begin{pmatrix} 524800 & 523776 \\ 523776 & 524800 \end{pmatrix}.
★ Three tests of positivity. Classify each matrix as positive definite, positive semidefinite or indefinite, with a different test each time (ch. 1): A = \begin{pmatrix} 2 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -1 & 2 \end{pmatrix}, \qquad B = \begin{pmatrix} 1 & 2 \\ 2 & 3 \end{pmatrix}, \qquad C = \begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}.
Solution: the leading minors of A are 2, 3 and 4, so A is positive definite (Sylvester).
The determinant of B is -1, so its eigenvalues have opposite signs; indeed x = (2, -1) gives x^\top B x = -1. Finally C = v v^\top with v = (1, 1) is a Gram matrix, hence PSD, with eigenvalues 2 and 0, so it is not definite.
★ A regression through the origin. Fit y = a t to the points (1, 2), (2, 3), (3, 5) by least squares. Give \hat a, the residual, the projection matrix and the residual sum of squares, and check Theorem 2.4 (ch. 2).
Solution: with t = (1, 2, 3) and y = (2, 3, 5), \hat a = t^\top y / t^\top t = 23/14 \approx 1.643.
The residual y - \hat a t = (5, -4, 1)/14 is orthogonal to t, since 5 - 8 + 3 = 0. The projection matrix is t t^\top / 14, and the residual sum of squares is 42/196 = 3/14 \approx 0.214.
★ Gradients of matrix functions. Compute (a) the gradient of \|x\| for x \neq 0; (b) the gradient of W \mapsto \frac12 \|XW - Y\|_F^2; (c) the gradient of f(K) = \log\det K - \operatorname{tr}(KS) over positive definite K, for a positive definite S, and its maximiser (ch. 4).
Solution: (a) x / \|x\|, by the chain rule on \sqrt{x^\top x}. (b) X^\top (XW - Y), from Proposition 4.2 with B = I. (c) K^{-1} - S, which vanishes at K = S^{-1}.
Along a line, t \mapsto \log\det(K + tH) has second derivative -\operatorname{tr}\big((K^{-1}H)^2\big) \le 0, so f is concave and S^{-1} is the maximiser.
Interpretation: for centred observations x_i with S = \frac1n \sum_i x_i x_i^\top, the Gaussian log-likelihood of the precision matrix K is \frac n2 f(K) up to a constant. The maximum-likelihood covariance is therefore the empirical one, K^{-1} = S.
★ Parseval and \pi^4/90. Compute the Fourier series of f(t) = |t| on (-\pi, \pi), extended with period 2\pi, and use Parseval to compute \sum_{n \ge 1} 1/n^4 (ch. 5).
Solution: f is even, so b_n = 0, and a_0 = \pi.
An integration by parts gives a_n = 2\big((-1)^n - 1\big)/(\pi n^2), that is -4/(\pi n^2) for odd n and 0 for even n \ge 2. Parseval (Example 5.7) gives \frac{2\pi^2}{3} = \frac{\pi^2}{2} + \sum_{n \text{ odd}} \frac{16}{\pi^2 n^4}, \qquad \text{so} \qquad \sum_{n \text{ odd}} \frac{1}{n^4} = \frac{\pi^4}{96} . The even terms are 1/16 of the full sum, so \sum_{n \ge 1} \frac{1}{n^4} = \frac{16}{15} \cdot \frac{\pi^4}{96} = \frac{\pi^4}{90} .
★ Proximal operators by hand. Compute (a) the soft thresholding of v = (3, -0.5, 1.2) at level 1; (b) the projection of (1.5, -0.3) onto the square [0, 1]^2; (c) the prox of g = \frac12 \|x\|^2 with \gamma = 1 at (2, 4) (ch. 9).
Solution: (a) (2, 0, 0.2); (b) (1, 0), by clipping each coordinate; (c) v / (1 + \gamma) = (1, 2).
★★ Rank one and pseudo-inverse. For A = \begin{pmatrix} 1 & 1 \\ 1 & 1 \\ 1 & -1 \end{pmatrix}, compute the SVD, the best rank-one approximation and its error in both norms, and A^{+}; check that A^{+} A = I (ch. 3).
Solution: A^\top A = \begin{pmatrix} 3 & 1 \\ 1 & 3 \end{pmatrix} has eigenvalues 4 and 2, so \sigma_1 = 2 and \sigma_2 = \sqrt2.
The singular vectors are v_1 = (1, 1)/\sqrt2, v_2 = (1, -1)/\sqrt2, u_1 = (1, 1, 0)/\sqrt2 and u_2 = (0, 0, 1). Then A_1 = \begin{pmatrix} 1 & 1 \\ 1 & 1 \\ 0 & 0 \end{pmatrix}, \qquad A - A_1 = \begin{pmatrix} 0 & 0 \\ 0 & 0 \\ 1 & -1 \end{pmatrix}, \qquad A^{+} = \begin{pmatrix} 1/4 & 1/4 & 1/2 \\ 1/4 & 1/4 & -1/2 \end{pmatrix}. The error has operator and Frobenius norm \sqrt2 = \sigma_2, as Theorem 3.4 predicts, and a direct product gives A^{+} A = I.
★★ Log-sum-exp. Let f(x) = \log \sum_i e^{x_i}. Show that \nabla f = p, the softmax vector, and that \nabla^2 f = \operatorname{diag}(p) - p p^\top. Deduce that f is convex and 1-smooth but not strongly convex (ch. 4, 6).
Solution: \partial f / \partial x_i = e^{x_i} / \sum_j e^{x_j} = p_i, and \partial p_i / \partial x_j = p_i \delta_{ij} - p_i p_j.
For every v, v^\top \nabla^2 f\, v = \sum_i p_i v_i^2 - (\sum_i p_i v_i)^2 is the variance of the values v_i under the weights p_i.
It is non-negative, so f is convex, and at most \sum_i p_i v_i^2 \le \|v\|^2, so L \le 1.
The Hessian kills the constant vector, because f(x + t\mathbf{1}) = f(x) + t is affine in t: no strong convexity. The softmax cross-entropy loss is f minus a linear function, with the same properties.
★★ The best constant step on a quadratic. Let f(x) = \frac12 x^\top A x with \mu I \preceq A \preceq L I.
Show that gradient descent contracts the error by \max(|1 - \eta\mu|, |1 - \eta L|) per step, and that \eta = 2/(L + \mu) minimises this factor. Compare with the step 1/L for \kappa = 100 and an accuracy of 10^{-3} (ch. 1, 7).
Solution: x_{k+1} = (I - \eta A) x_k, and in the eigenbasis each component is multiplied by 1 - \eta \lambda_i. On [\mu, L], the maximum of |1 - \eta\lambda| is reached at an endpoint; it is smallest when 1 - \eta\mu = \eta L - 1, giving the factor (\kappa - 1)/(\kappa + 1).
For \kappa = 100, the factor is 99/101 \approx 0.980, and \ln 1000 / |\ln 0.980| \approx 346 steps reach 10^{-3}. With \eta = 1/L the factor is 0.99 and about 688 steps are needed: the optimal step halves the work.
★★ Projection onto a half-space. Project y onto \{x : a^\top x \le c\} with the KKT conditions, then compute it for a = (1, 2), c = 2 and y = (2, 2), with the multiplier and the dual value (ch. 8).
Solution: stationarity of \frac12 \|x - y\|^2 + \lambda (a^\top x - c) gives x = y - \lambda a. If a^\top y \le c, then \lambda = 0 and x = y. Otherwise the constraint is active, and \lambda = \frac{a^\top y - c}{\|a\|^2}, \qquad x^* = y - \frac{\max(0,\ a^\top y - c)}{\|a\|^2}\, a . Here a^\top y = 6, so \lambda = 0.8 and x^* = (1.2, 0.4), on the boundary. The dual function g(\lambda) = \lambda (a^\top y - c) - \frac{\lambda^2}{2} \|a\|^2 is maximal at the same \lambda, with value 1.6 = \frac12 \|y - x^*\|^2.
★★ Power iteration (Python). Build a symmetric 50 \times 50 matrix with \lambda_1 = 10 and \lambda_2 = 9, run power iteration and check the rate of Proposition 10.4 (ch. 1, 10).
Solution:
import numpy as np rng = np.random.default_rng(0) Q = np.linalg.qr(rng.standard_normal((50, 50)))[0] # random orthonormal basis lam = np.r_[10.0, 9.0, rng.uniform(0, 5, 48)] # lambda_2 / lambda_1 = 0.9 S = Q @ np.diag(lam) @ Q.T u1 = Q[:, 0] x = rng.standard_normal(50) for k in range(1, 201): x = S @ x x /= np.linalg.norm(x) # power iteration if k in (50, 100, 200): sin = np.linalg.norm(x - (x @ u1) * u1) # sine of the angle to u_1 print(f"k = {k:3d} sin = {sin:.1e} ratio to 0.9^k = {sin / 0.9 ** k:.2f}") print(f"Rayleigh quotient {x @ S @ x:.6f}")Expected: the sine falls from 3.7 \times 10^{-3} at k = 50 to 5.1 \times 10^{-10} at k = 200, and its ratio to 0.9^k stays at 0.72. The Rayleigh quotient returns \lambda_1 = 10 to six decimals.
★★ Gradient descent versus acceleration (Python). On a quadratic in dimension 100 with Hessian eigenvalues spread from 1 to 1000, count the iterations that gradient descent and Nesterov’s method need to divide f by 10^6 (ch. 7, 10).
Solution:
import numpy as np d = 100 h = np.logspace(0, 3, d) # Hessian eigenvalues from mu = 1 to L = 1000 L, mu = h.max(), h.min() x0 = np.ones(d) f = lambda x: 0.5 * np.sum(h * x ** 2) # minimum value 0 at x = 0 def iterations(method, tol=1e-6): x, y = x0.copy(), x0.copy() beta = (np.sqrt(L) - np.sqrt(mu)) / (np.sqrt(L) + np.sqrt(mu)) for k in range(1, 10 ** 6): if method == "gradient descent": x = x - h * x / L else: # Nesterov, constant momentum x_new = y - h * y / L y = x_new + beta * (x_new - x) x = x_new if f(x) <= tol * f(x0): return k for m in ("gradient descent", "Nesterov"): print(f"{m:16s} {iterations(m):6d} iterations") print(f"kappa = {L / mu:.0f}, sqrt(kappa) = {np.sqrt(L / mu):.1f}")Expected: 2685 iterations for gradient descent and 140 for Nesterov’s method, a ratio of 19. The theory predicts a ratio of order \sqrt\kappa \approx 32; the constants and the spread of the spectrum account for the difference.
★★★ The dual of the lasso and a stopping rule. For P(x) = \frac12 \|Ax - b\|^2 + \lambda \|x\|_1, show that the dual problem is to maximise D(u) = -\frac12 \|u\|^2 - u^\top b subject to \|A^\top u\|_\infty \le \lambda. Deduce a computable bound on P(x) - P^* and use it to stop ISTA (ch. 2, 8, 9).
Hints: write z = Ax - b as a constraint with multiplier u. The infimum over z of \frac12\|z\|^2 - u^\top z is -\frac12\|u\|^2.
The infimum over x of \lambda\|x\|_1 + u^\top A x is 0 if \|A^\top u\|_\infty \le \lambda and -\infty otherwise, because \ell_\infty is the dual norm of \ell_1 (Definition 2.1).
At the optimum u^* = Ax^* - b. Rescaling the current residual into the feasible set gives a dual point u and the bound P(x) - P^* \le P(x) - D(u).
import numpy as np rng = np.random.default_rng(0) n, d, lam = 100, 200, 0.25 # the lasso problem of ch. 9 A = rng.standard_normal((n, d)) / np.sqrt(n) x_true = np.zeros(d) x_true[:5] = [3, -2, 2, -1.5, 1] b = A @ x_true + 0.05 * rng.standard_normal(n) L = np.linalg.norm(A, 2) ** 2 def soft(v, t): return np.sign(v) * np.maximum(np.abs(v) - t, 0) def primal(x): return 0.5 * np.sum((A @ x - b) ** 2) + lam * np.abs(x).sum() def dual(u): # valid when |A^T u|_inf <= lam return -0.5 * u @ u - u @ b x = np.zeros(d) for k in range(1, 2001): x = soft(x - A.T @ (A @ x - b) / L, lam / L) # ISTA step r = A @ x - b u = r * min(1.0, lam / np.abs(A.T @ r).max()) # rescaled residual: dual feasible if k in (10, 100, 1000, 2000): print(f"k = {k:4d} duality gap = {primal(x) - dual(u):.1e}")Expected: the gap is 1.2 after 10 iterations, 4.0 \times 10^{-6} after 100 and reaches rounding level, about 10^{-14}, by 1000. A stopping rule “gap below 10^{-6}” is a certificate, unlike a rule on the change of the iterates.
★★★ The edge of stability. Train a small multilayer perceptron (two hidden layers of width 32, tanh) by full-batch gradient descent on half the mean squared error. Use 500 Gaussian inputs in \mathbb{R}^5 and targets \sin(w^\top x) + 0.1\,\varepsilon, with random w and standard Gaussian noise \varepsilon.
Run 5000 steps with \eta \in \{0.1, 0.2, 0.4\}. Track the loss and the largest Hessian eigenvalue, the sharpness, and compare it with 2/\eta (ch. 6, 7, 10, 11).
Hints and expected result: compute Hessian–vector products with
torch.autograd.gradapplied twice, and the sharpness with 20 steps of power iteration (Proposition 10.4) every 50 iterations. Each run takes a few seconds on a CPU.The sharpness starts between 2 and 3, rises, then hovers at 2/\eta (20, 10 and 5), as Cohen and coauthors (2021) report; for \eta = 0.1 the rise can take most of the 5000 steps. Meanwhile the loss keeps decreasing over the run, but not monotonically. With \eta = 0.01, the sharpness is still near 6 after 3000 steps, far from 2/\eta = 200: the regime needs large steps or long runs.
Explain why Lemma 6.4 says nothing in this regime, and discuss what replaces it in the paper.
Projects and assessment
The refresher fortnight announces no assessment: per the master-mva.com planning, the refresher courses are optional and without registration, and mandatory for the I&I track, with no grade mentioned. This section therefore replaces the usual projects and written exam by a diagnostic self-check, to take before and after the four steps, and two small practice projects that prepare the paper studies common in MVA courses. None of it is official material.
Diagnostic self-check
Twelve short questions, about two minutes each, one or two per chapter. Cover the answer while you think.
Q1 — eigenvalues (ch. 1). What are the eigenvalues and an orthonormal eigenbasis of \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}?
Answer: 1 and -1, with eigenvectors (1, 1)/\sqrt2 and (1, -1)/\sqrt2.
Q2 — positivity (ch. 1). Is \begin{pmatrix} 1 & 2 \\ 2 & 1 \end{pmatrix} positive semidefinite?
Answer: no. Its determinant is -3 and its eigenvalues are 3 and -1; the vector (1, -1) gives the quadratic form -2.
Q3 — projection (ch. 2). Project (1, 2, 3) onto the line spanned by (1, 1, 1).
Answer: (2, 2, 2); the residual (-1, 0, 1) is orthogonal to (1, 1, 1).
Q4 — norms (ch. 2). Give the operator norm, the Frobenius norm and the condition number of \operatorname{diag}(3, -4).
Answer: 4, 5 and 4/3.
Q5 — gradients (ch. 0). Give the gradient and the Hessian of \|Ax - b\|^2, without the factor \frac12.
Answer: 2 A^\top (Ax - b) and 2 A^\top A.
Q6 — SVD (ch. 3). What are the rank, the singular values and the nuclear norm of u v^\top with u = (1, 2, 2) and v = (3, 4)?
Answer: rank 1, a single non-zero singular value \|u\| \|v\| = 3 \times 5 = 15; the nuclear, operator and Frobenius norms all equal 15.
Q7 — matrix calculus (ch. 4). What is the gradient of X \mapsto \operatorname{tr}(AXB)?
Answer: A^\top B^\top, because the cyclic property of the trace gives \operatorname{tr}(AHB) = \operatorname{tr}(BAH) = \langle (BA)^\top, H \rangle_F .
Q8 — Fourier (ch. 5). What are the Fourier transforms of f(x - a) and of e^{2i\pi b x} f(x)?
Answer: e^{-2i\pi a \xi} \hat f(\xi) and \hat f(\xi - b).
Q9 — convexity (ch. 6). Is f(x) = \max(x_1, x_2) + x_1^2 convex? Strongly convex?
Answer: convex, as the sum of a maximum of linear functions and a convex quadratic. Not strongly convex: f(0, t) = \max(0, t) is piecewise linear in t.
Q10 — gradient descent (ch. 7). For f(x) = \frac12 (x_1^2 + 10 x_2^2), what is L, which constant steps converge, and how many steps of size 1/L divide f by 10^6?
Answer: L = 10; every step \eta < 2/L = 0.2 converges. With \eta = 1/L, the first coordinate is multiplied by 0.9 per step and f by 0.81, so about 66 steps.
Q11 — duality (ch. 8). Write the dual of “minimise x over x \in \mathbb{R} subject to x \ge 1”.
Answer: the Lagrangian x + \lambda(1 - x) has infimum \lambda if \lambda = 1 and -\infty otherwise. So d^* = 1 = p^*, with \lambda^* = 1 and an active constraint.
Q12 — prox (ch. 9). Compute the prox of 0.5\, |\cdot| at -0.3 and at 2.
Answer: 0, since |-0.3| \le 0.5, and 1.5.
| Score | Suggested route |
|---|---|
| 11–12 | Read the recap boxes, then do the ★★ and ★★★ exercises. |
| 7–10 | Follow the four steps, with extra time on the chapters of the questions you missed. |
| 0–6 | Start with ch. 0 and a first course such as Strang (2019), then follow the four steps in order. |
Practice projects
Two small projects, sized for the refresher fortnight. Each reproduces a figure of a real paper, the format of most MVA course projects.
- [Solo · ≈ 6 h] Randomized SVD: a paper study. Reproduce, at a small scale, the main experiment of Halko, Martinsson and Tropp (2011).
- Implement: the randomized range finder (a Gaussian test matrix with oversampling p, then QR) with q power iterations, followed by the SVD of the small projected matrix.
- Data: the digits of scikit-learn (1797 \times 64) and a synthetic 2000 \times 1000 matrix with prescribed singular values, decaying like 1/j or like 0.9^j.
- Success criterion: a plot of the ratio of the spectral error to \sigma_{k+1} against q = 0, 1, 2, 3, for p = 5 and p = 10 and the rank k = 20 on the synthetic matrix. The ratio lies between 1.2 and 2 without power iterations and is close to 1 from two of them on. Add a timing comparison with
numpy.linalg.svd. - Deliverables: a notebook and a two-page note relating the curves to Theorem 3.4 and Proposition 10.4. Chapters 1, 3, 10.
- [Group of 2 · ≈ 8 h each] First-order methods for the lasso: a paper study. Beck and Teboulle (2009) compare ISTA and FISTA on wavelet-regularised image deblurring. Reproduce their comparison on a one-dimensional deconvolution, then contrast it with sparse recovery.
- Implement: ISTA, FISTA (Algorithm 10.7 with a prox step) and a reference solver (scikit-learn’s
Lasso), all stopped by the duality gap of Exercise 13. - Data: 15 spikes on a signal of length 500, blurred by a Gaussian kernel of standard deviation 4 samples, with noise of standard deviation 0.01 and \lambda = 0.01 \|A^\top b\|_\infty. Then a Gaussian 200 \times 500 matrix with a 10-sparse signal, noise of standard deviation 0.05 and \lambda = 0.1 \|A^\top b\|_\infty.
- Success criterion: on the deconvolution, a log–log plot of F(x_k) - F^* for k from 100 to 10 000, below the bounds of Algorithms 9.7 and 10.7. The slope of ISTA stays near -1; that of FISTA is -2 or steeper up to k = 1000, before a final linear phase.
- Second criterion: on the Gaussian matrix, both methods reach 10^{-12} within a few hundred steps. Explain this linear rate by the strong convexity of the problem restricted to the support, and recover the support along a grid of \lambda.
- Work split: one member writes the solvers and the duality gap, the other the experiments and the regularisation path; both write the report.
- Deliverables: code, a four-page report and a ten-minute talk. Chapters 6–10.
- Implement: ISTA, FISTA (Algorithm 10.7 with a prox step) and a reference solver (scikit-learn’s
Self-assessment grid
| Criterion | Weight | What earns the marks |
|---|---|---|
| Mathematical correctness | 30 % | Every result used is stated with its hypotheses and checked by hand on a small case. |
| Correct code | 25 % | Results are checked against a reference solver and against the theory of the page. |
| Reproduction of the target figure | 25 % | The paper’s qualitative finding is reproduced, and any gap is explained. |
| Clarity | 20 % | The notebook reruns from scratch; every plot has labelled axes and a caption. |
References
The refresher fortnight publishes no programme and no reference list (master-mva.com planning, 2026–2027). The works below are standard references at the level of this page, followed by the papers cited in it.
Linear algebra and matrix calculus
- G. Strang, Linear Algebra and Learning from Data, Wellesley-Cambridge Press, 2019.
- R. A. Horn, C. R. Johnson, Matrix Analysis, 2nd ed., Cambridge University Press, 2013.
- L. N. Trefethen, D. Bau III, Numerical Linear Algebra, SIAM, 1997.
- G. H. Golub, C. F. Van Loan, Matrix Computations, 4th ed., Johns Hopkins University Press, 2013.
- J. R. Magnus, H. Neudecker, Matrix Differential Calculus with Applications in Statistics and Econometrics, 3rd ed., Wiley, 2019.
- K. B. Petersen, M. S. Pedersen, The Matrix Cookbook, Technical University of Denmark, 2012.
- C. Eckart, G. Young, “The approximation of one matrix by another of lower rank”, Psychometrika 1(3), 1936.
- L. Mirsky, “Symmetric gauge functions and unitarily invariant norms”, Quarterly Journal of Mathematics 11(1), 1960.
Analysis and Fourier analysis
- H. Brezis, Functional Analysis, Sobolev Spaces and Partial Differential Equations, Springer, 2011.
- E. M. Stein, R. Shakarchi, Fourier Analysis: An Introduction, Princeton University Press, 2003.
- S. Mallat, A Wavelet Tour of Signal Processing: The Sparse Way, 3rd ed., Academic Press, 2009.
- J. W. Cooley, J. W. Tukey, “An algorithm for the machine calculation of complex Fourier series”, Mathematics of Computation 19(90), 1965.
Optimisation
- S. Boyd, L. Vandenberghe, Convex Optimization, Cambridge University Press, 2004.
- Y. Nesterov, Lectures on Convex Optimization, 2nd ed., Springer, 2018.
- J. Nocedal, S. J. Wright, Numerical Optimization, 2nd ed., Springer, 2006.
- A. Beck, First-Order Methods in Optimization, SIAM, 2017.
- H. H. Bauschke, P. L. Combettes, Convex Analysis and Monotone Operator Theory in Hilbert Spaces, 2nd ed., Springer, 2017.
- S. Bubeck, “Convex optimization: algorithms and complexity”, Foundations and Trends in Machine Learning 8(3–4), 2015.
- L. Bottou, F. E. Curtis, J. Nocedal, “Optimization methods for large-scale machine learning”, SIAM Review 60(2), 2018.
- N. Parikh, S. Boyd, “Proximal algorithms”, Foundations and Trends in Optimization 1(3), 2014.
- H. W. Kuhn, A. W. Tucker, “Nonlinear programming”, Proceedings of the Second Berkeley Symposium on Mathematical Statistics and Probability, University of California Press, 1951.
- H. Robbins, S. Monro, “A stochastic approximation method”, Annals of Mathematical Statistics 22(3), 1951.
- A. Nemirovski, A. Juditsky, G. Lan, A. Shapiro, “Robust stochastic approximation approach to stochastic programming”, SIAM Journal on Optimization 19(4), 2009.
- Y. Nesterov, “A method for solving the convex programming problem with convergence rate O(1/k²)”, Soviet Mathematics Doklady 27, 1983.
- A. Beck, M. Teboulle, “A fast iterative shrinkage-thresholding algorithm for linear inverse problems”, SIAM Journal on Imaging Sciences 2(1), 2009.
Research directions (ch. 11)
- N. Halko, P.-G. Martinsson, J. A. Tropp, “Finding structure with randomness: probabilistic algorithms for constructing approximate matrix decompositions”, SIAM Review 53(2), 2011.
- P.-G. Martinsson, J. A. Tropp, “Randomized numerical linear algebra: foundations and algorithms”, Acta Numerica 29, 2020.
- E. J. Candès, B. Recht, “Exact matrix completion via convex optimization”, Foundations of Computational Mathematics 9(6), 2009.
- S. Burer, R. D. C. Monteiro, “A nonlinear programming algorithm for solving semidefinite programs via low-rank factorization”, Mathematical Programming 95(2), 2003.
- R. Ge, J. D. Lee, T. Ma, “Matrix completion has no spurious local minimum”, NeurIPS 2016.
- S. Gunasekar, B. Woodworth, S. Bhojanapalli, B. Neyshabur, N. Srebro, “Implicit regularization in matrix factorization”, NeurIPS 2017.
- S. Arora, N. Cohen, W. Hu, Y. Luo, “Implicit regularization in deep matrix factorization”, NeurIPS 2019.
- E. J. Hu, Y. Shen, P. Wallis, Z. Allen-Zhu, Y. Li, S. Wang, L. Wang, W. Chen, “LoRA: low-rank adaptation of large language models”, ICLR 2022.
- D. Soudry, E. Hoffer, M. S. Nacson, S. Gunasekar, N. Srebro, “The implicit bias of gradient descent on separable data”, Journal of Machine Learning Research 19(70), 2018.
- J. Cohen, S. Kaur, Y. Li, J. Z. Kolter, A. Talwalkar, “Gradient descent on neural networks typically occurs at the edge of stability”, ICLR 2021.
- B. T. Polyak, “Gradient methods for the minimisation of functionals”, USSR Computational Mathematics and Mathematical Physics 3(4), 1963.
- H. Karimi, J. Nutini, M. Schmidt, “Linear convergence of gradient and proximal-gradient methods under the Polyak–Łojasiewicz condition”, ECML PKDD 2016.
- Y. Drori, M. Teboulle, “Performance of first-order methods for smooth convex minimization: a novel approach”, Mathematical Programming 145, 2014.
- A. B. Taylor, J. M. Hendrickx, F. Glineur, “Smooth strongly convex interpolation and exact worst-case performance of first-order methods”, Mathematical Programming 161, 2017.
- M. Schmidt, N. Le Roux, F. Bach, “Minimizing finite sums with the stochastic average gradient”, Mathematical Programming 162, 2017.
- R. Johnson, T. Zhang, “Accelerating stochastic gradient descent using predictive variance reduction”, NeurIPS 2013.
- A. Defazio, F. Bach, S. Lacoste-Julien, “SAGA: a fast incremental gradient method with support for non-strongly convex composite objectives”, NeurIPS 2014.
- F. Bach, E. Moulines, “Non-strongly-convex smooth stochastic approximation with convergence rate O(1/n)”, NeurIPS 2013.
- D. P. Kingma, J. Ba, “Adam: a method for stochastic optimization”, ICLR 2015.
- V. Gupta, T. Koren, Y. Singer, “Shampoo: preconditioned stochastic tensor optimization”, ICML 2018.
- S. V. Venkatakrishnan, C. A. Bouman, B. Wohlberg, “Plug-and-play priors for model based reconstruction”, IEEE Global Conference on Signal and Information Processing (GlobalSIP), 2013.
- E. K. Ryu, J. Liu, S. Wang, X. Chen, Z. Wang, W. Yin, “Plug-and-play methods provably converge with properly trained denoisers”, ICML 2019.
- S. Hurault, A. Leclaire, N. Papadakis, “Gradient step denoiser for convergent plug-and-play”, ICLR 2022.