Foundations of Distributed and Large-Scale Computing Optimization
M2 MVA · Semester 1 · Learning · 5 ECTS
Contents
- Introduction and overview
- 0. Review: convex analysis and gradient descent
- 1. Large-scale optimization: models, costs and accelerated gradients
- 2. Proximity operators
- 3. Proximal gradient algorithms: forward–backward and FISTA
- 4. Splitting algorithms: Douglas–Rachford, ADMM and primal–dual methods
- 5. Majorization–Minimization methods
- 6. Stochastic and block-coordinate methods for large data sets
- 7. Parallel optimization
- 8. Distributed optimization strategies
- 9. Research directions and open problems
- Exercises
- Projects and assessment
- References
Introduction and overview
| Module | Foundations of Distributed and Large-Scale Computing Optimization |
| Official title | Foundations of Distributed and Large Scale Computing Optimization |
| Instructors | E. CHOUZENOUX (master-mva.com, 2026–2027) |
| Period | Semester 1 · period 1 (28/09/2026 – 08/01/2027) |
| Credits and volume | 5 ECTS · 24 h (lectures 24 h) per the Université Paris-Saclay programme table |
| Label | Learning · domains on master-mva.com: Theory |
| Language | Not displayed (the master-mva.com course description is written in English) |
| Assessment | Two lab reports and an exam (master-mva.com: “2 labs report + exam”; no weights displayed); Université Paris-Saclay: “Evaluation Continue non Intégrale” (partial continuous assessment) |
| Prerequisites | Not displayed |
| Note on sources | master-mva.com announces 7 sessions of 3 h plus a 2 h exam; the Université Paris-Saclay table gives 24 h of lectures, the volume used in the session plan |
Audience: a student with a good M1 in applied mathematics, computer science or signal processing who can minimize a smooth convex function by gradient descent and now faces problems with millions of unknowns, non-smooth regularizers, or data spread over several machines.
Empirical first: on a denoising problem with 2000 unknowns and an edge-preserving penalty, plain gradient descent still has an objective error of 25.6 after 50 iterations. A Majorization–Minimization method of about the same cost per iteration is at 2.8 \times 10^{-7} (ch. 5). On a ring of 10 machines holding different data, decentralized gradient descent stalls at distance 0.42 from the solution forever, while gradient tracking reaches machine precision (ch. 8).
This course explains both observations. It builds the convex-analytic toolbox (proximity operators, monotone operators, majorants) behind the algorithms that solve very large problems. It then shows how the same algorithms split across the cores of one machine or across a network of machines.
The course shares tools with Convex Optimization and Applications in Machine Learning, taught in the same semester, and prepares the imaging and large-model courses of semester 2, such as Deep Learning for Image Restoration and Synthesis and Training and Deploying Large-Scale Models.
What you will be able to do
- Compute the proximity operator of the usual regularizers and constraints, and combine them with the rules of proximal calculus.
- Prove the convergence rates of gradient descent, forward–backward and FISTA from the descent lemma.
- Choose between forward–backward, Douglas–Rachford, ADMM and primal–dual methods from the structure of a problem.
- Build a tangent majorant for a given cost (Lipschitz, half-quadratic, Jensen) and derive the Majorization–Minimization algorithm it defines.
- Implement the subspace Majorization–Minimization method 3MG and explain why it scales to large images.
- Analyze stochastic gradient, variance-reduced and randomized coordinate methods on finite sums.
- Reformulate a sum of functions in a product space and run the parallel proximal algorithm PPXA.
- Predict the speedup of a parallel method with Amdahl’s law, the cost of an all-reduce and the damping of parallel coordinate steps.
- Design a distributed method (consensus ADMM, decentralized gradient, gradient tracking) for data held by several agents, and explain the bias of naive schemes.
- Implement these methods in NumPy and PyTorch and check them against a reference solution.
Official objectives and syllabus (2026–2027)
The course description on master-mva.com states as objective to introduce the theoretical background that makes it possible to develop efficient algorithms for the large-scale problems the course addresses, taking advantage of modern multicore or distributed computing architectures.
The description adds that the course is mainly focused on nonlinear optimization tools for convex problems. It presents proximal tools, splitting techniques and Majorization–Minimization strategies, which the description calls very popular for processing massive data sets, and it illustrates these methods on various application examples.
The listed instructor is Emilie Chouzenoux (CentraleSupélec & INRIA Saclay). The organisation announced is 7 sessions of 3 h plus a 2 h exam, and the assessment is two lab reports plus an exam. The course page also links a presentation file; these notes are an independent reconstruction and do not reproduce it. The Université Paris-Saclay course detail gives only the type of assessment, with no programme of its own.
| Official topic | Course section |
|---|---|
| Large scale optimization | ch. 1: costs of second-order methods (Example 1.2), lower bound (Theorem 1.4), accelerated gradient (Algorithm 1.5, Theorem 1.6), power iteration (Proposition 1.7), preconditioning (Definition 1.8); ch. 6: stochastic gradient (Theorem 6.2), variance reduction (Theorem 6.5), randomized coordinate descent (Theorem 6.8) |
| Proximal algorithms | ch. 2: proximity operator (Definition 2.1, Example 2.3), firm nonexpansiveness (Proposition 2.5), Moreau decomposition (Theorem 2.6); ch. 3: forward–backward (Theorem 3.4), FISTA (Theorem 3.6), variable metric (Definition 3.7) |
| Majorization-Minimization methods | ch. 5: tangent majorants (Definition 5.1, Proposition 5.3), EM as MM (Example 5.4), convergence (Theorem 5.5), subspace MM 3MG (Algorithm 5.6, Example 5.7) |
| Parallel optimization | ch. 7: Amdahl’s law (Proposition 7.2), all-reduce (Proposition 7.3), product space and PPXA (Proposition 7.4, Algorithm 7.5, Theorem 7.6), parallel coordinate descent (Theorem 7.9), data parallelism (Example 7.10) |
| Distributed optimization strategies | ch. 8: consensus ADMM (Algorithm 8.1), gossip (Proposition 8.3), decentralized gradient (Proposition 8.6), gradient tracking (Proposition 8.8), federated averaging |
| Objective: theoretical background for algorithms that exploit multicore or distributed architectures | ch. 4 (averaged operators and the Krasnosel’skii–Mann theorem, the common proof of all splitting methods), ch. 7 (shared and distributed memory, synchronous and asynchronous), ch. 8 (networks of agents) |
| Objective: nonlinear optimization tools for convex problems | ch. 0 (subdifferentials, smoothness, conjugates, duality) and the convex setting of every chapter; nonconvex extensions in ch. 9 |
| Objective: proximal tools | ch. 2 (the whole chapter) and the prox-based algorithms of ch. 3, ch. 4 and ch. 7 |
| Objective: splitting techniques | ch. 3 (forward–backward), ch. 4 (Douglas–Rachford, ADMM, Chambolle–Pock, Condat–Vũ), ch. 7 (PPXA in a product space) |
| Objective: Majorization–Minimization strategies for massive data sets | ch. 5 (memory-gradient subspace MM, separable majorants) and the incremental and block versions mentioned in ch. 9 |
| Objective: illustrations on application examples | Lasso (Example 3.8), total-variation denoising (Example 4.11), edge-preserving denoising (Example 5.7), logistic regression (Example 6.6), spike deconvolution (Example 7.7), data-parallel training (Example 7.10), decentralized least squares (Example 8.9) |
| Organisation: 7 sessions of 3 h + exam (2 h) | Session plan (seven lectures plus one session, 24 h); written exam proposal (2 h) |
| Assessment: 2 lab reports + exam | Projects and assessment: lab-sized solo subjects and a written exam proposal |
Every official topic is taught on this page. The extensions beyond the syllabus are the review of ch. 0, the lower bound and acceleration theory of ch. 1, the stochastic and variance-reduced methods of ch. 6, federated learning in ch. 8, and the self-study research chapter 9.
Where this course fits in the programme
Official prerequisites: not displayed. In practice the course uses M1 linear algebra (eigenvalues, symmetric matrices), differential calculus and the basics of convex functions; ch. 0 reviews what is needed. Chapter 6 also uses expectations and variances.
- Refreshers — Linear Algebra, Analysis and Optimization for ch. 0, Probability and Statistics for the stochastic methods of ch. 6, and Scientific Python, NumPy and PyTorch for the code.
- Related courses of semester 1 — Convex Optimization and Applications in Machine Learning (duality and interior-point methods, complementary to the first-order methods here), Computational Statistics (EM and stochastic approximation, met as MM and SGD), Introduction to Probabilistic Graphical Models (EM), Deep Learning (stochastic training), Optimal Transport (entropic solvers as alternating projections) and Image Denoising (variational denoisers).
- Semester 2 courses that build on it — Deep Learning for Image Restoration and Synthesis (variational and hybrid methods for inverse problems), Inverse Problems and Imaging (regularized least squares for ill-posed problems), Training and Deploying Large-Scale Models (data parallelism and all-reduce), Algorithms for Network Optimization and Management (optimization problems of communication networks), Graphs in Machine Learning (graph Laplacians, the matrices of gossip), Sequential Learning (online convex optimization) and Kernel Methods (large-scale kernel solvers).
Course outline
- 0. Review: convex analysis and gradient descent — subdifferentials, smoothness and strong convexity, the rates of gradient descent, conjugates and Fenchel duality.
- 1. Large-scale optimization — the composite model, what second-order methods cost, the lower bound of first-order methods, acceleration, estimating Lipschitz constants and preconditioning.
- 2. Proximity operators — definition, a catalogue, firm nonexpansiveness, Moreau decomposition and envelope, proximal calculus.
- 3. Proximal gradient algorithms — forward–backward, its O(1/k) rate, FISTA and its O(1/k^2) rate, variable metrics.
- 4. Splitting algorithms — averaged operators, Douglas–Rachford, ADMM, Chambolle–Pock and Condat–Vũ.
- 5. Majorization–Minimization — tangent majorants, half-quadratic and EM, convergence, the subspace method 3MG.
- 6. Stochastic and block-coordinate methods — stochastic gradient, mini-batches, SVRG and SAGA, randomized coordinate descent.
- 7. Parallel optimization — speedup and communication models, PPXA in a product space, parallel coordinate descent, data parallelism and asynchrony.
- 8. Distributed optimization strategies — consensus ADMM, gossip, decentralized gradient, gradient tracking, federated averaging.
- 9. Research directions and open problems — a self-study tour of current work.
Session plan
24 h in class = 8 sessions of 3 h. The volume of 24 h of lectures comes from the Université Paris-Saclay programme table. master-mva.com organises the course as 7 sessions of 3 h plus a 2 h exam. The split below is a proposal: it keeps seven 3-hour lectures, uses the remaining 3 h of the official volume for an eighth session, and leaves the written exam outside the plan.
Level 1 = foundations, 2 = core results and algorithms, 3 = advanced and research-level material. The level never goes down from one session to the next.
| Session | Hours | Level | Content | Practice |
|---|---|---|---|---|
| 1 | 3 h | 1 | ch. 0 Review: subdifferentials, descent lemma, rates of gradient descent, conjugates and duality; ch. 1 large-scale models and their costs (Examples 1.1–1.2) | Ex. 2 (gradient descent part) |
| 2 | 3 h | 1 | ch. 1 lower bound, Nesterov acceleration, power iteration, preconditioning (1.3–1.9); ch. 2 proximity operator, its catalogue and its fixed points (2.1–2.4) | Ex. 1; Ex. 2 (accelerated part) |
| 3 | 3 h | 2 | ch. 2 firm nonexpansiveness, Moreau decomposition and envelope, proximal calculus (2.5–2.9); ch. 3 forward–backward and FISTA | Ex. 3, 4, 7; lab 1 starts |
| 4 | 3 h | 2 | ch. 4 Averaged operators, Krasnosel’skii–Mann, Douglas–Rachford, ADMM, Chambolle–Pock, Condat–Vũ | Ex. 8, 10 |
| 5 | 3 h | 2 | ch. 5 Majorization–Minimization: majorants, EM, convergence, 3MG | Ex. 9; lab 2 starts |
| 6 | 3 h | 2 | ch. 6 Stochastic gradient, mini-batches, SVRG, randomized coordinate descent | Ex. 6 |
| 7 | 3 h | 3 | ch. 7 Parallel optimization: Amdahl, all-reduce, PPXA, parallel coordinate descent, data parallelism, asynchrony | Ex. 12, 15 |
| 8 | 3 h | 3 | ch. 8 Distributed optimization: consensus ADMM, gossip, DGD, gradient tracking, federated averaging | Ex. 5, 11, 13, 14 |
Self-study, outside the 24 h (about 4 h in total): ch. 9 Research directions and open problems (≈ 4 h).
How to study this module
- Read ch. 0 before session 1 if subdifferentials or conjugate functions feel distant: every later proof uses them.
- Follow one thread through the course: almost every algorithm is a fixed-point iteration of an averaged operator (ch. 4), and almost every proof is the descent lemma of ch. 0 plus one inequality.
- After each session, do the exercises listed in its row, then run the code of the chapter and change one parameter (step size, number of workers, graph) to see the effect predicted by the theory.
- The code uses NumPy, SciPy, scikit-learn, NetworkX and PyTorch (CPU) on synthetic data; every block runs in a few seconds on a laptop.
- The solo projects of the last section are sized like the two official lab reports; start the first one after session 3.
0. Review: convex analysis and gradient descent
Every algorithm of the course minimizes a convex function that may be non-smooth or take the value +\infty. This chapter collects the M1-level facts the proofs rely on: subgradients, the descent lemma, the rates of gradient descent and Fenchel duality.
The Linear Algebra, Analysis and Optimization refresher covers the same ground at a slower pace. Throughout, the space is \mathbb{R}^N with the Euclidean inner product \langle \cdot, \cdot \rangle; all results hold in Hilbert spaces (Bauschke and Combettes, 2011).
Convex functions and subdifferentials
Definition 0.1 — The class Γ₀ A function f : \mathbb{R}^N \to (-\infty, +\infty] is proper if its domain \mathrm{dom} f = \{x : f(x) < +\infty\} is non-empty, convex if its epigraph is convex, and lower semicontinuous if its epigraph is closed.
\Gamma_0(\mathbb{R}^N) denotes the proper, convex, lower semicontinuous functions. Examples: every norm; every convex quadratic; the indicator of a non-empty closed convex set C, \iota_C(x) = 0 \ \text{ if } x \in C, \qquad \iota_C(x) = +\infty \ \text{ otherwise}.
Indicators turn constraints into terms of the objective: minimizing f over C is minimizing f + \iota_C over the whole space.
Definition 0.2 — Subdifferential The subdifferential of f \in \Gamma_0(\mathbb{R}^N) at x is the set of slopes of affine minorants that touch f at x: \partial f(x) = \{ u \in \mathbb{R}^N : f(y) \geq f(x) + \langle u, y - x \rangle \ \text{ for all } y \}. If f is differentiable at x, then \partial f(x) = \{\nabla f(x)\}.
Proposition 0.3 — Fermat’s rule and the sum rule
- A point x^\star minimizes f if and only if 0 \in \partial f(x^\star).
- If f, g \in \Gamma_0(\mathbb{R}^N) and one of them is finite and continuous everywhere, then \partial (f + g) = \partial f + \partial g.
Proof. Item 1 is the definition read with u = 0: the inequality f(y) \geq f(x^\star) for all y. Item 2 is the Moreau–Rockafellar theorem; its proof uses a separating hyperplane (Bauschke and Combettes, 2011, ch. 16). ∎
Example 0.4 — Two subdifferentials and the optimality of the lasso
- For the absolute value, \partial |\cdot|(x) = \{\mathrm{sign}(x)\} if x \neq 0, and \partial |\cdot|(0) = [-1, 1].
- For an indicator, \partial \iota_C(x) is the normal cone: the vectors u with \langle u, y - x \rangle \leq 0 for every y \in C.
For the lasso F(x) = \frac12 \|Ax - b\|^2 + \lambda \|x\|_1, the sum rule and Fermat’s rule give the optimality conditions, coordinate by coordinate, with a_j the j-th column of A: a_j^\top (b - A x^\star) = \lambda\, \mathrm{sign}(x^\star_j) \ \text{ if } x^\star_j \neq 0, \qquad |a_j^\top (b - A x^\star)| \leq \lambda \ \text{ if } x^\star_j = 0. In particular x^\star = 0 is optimal exactly when \|A^\top b\|_\infty \leq \lambda.
Smoothness, strong convexity and gradient descent
Definition 0.5 — Smoothness and strong convexity A differentiable f is L-smooth if its gradient is L-Lipschitz: \|\nabla f(x) - \nabla f(y)\| \leq L \|x - y\| . It is \mu-strongly convex (\mu > 0) if f - \frac{\mu}{2}\|\cdot\|^2 is convex. The ratio \kappa = L / \mu is the condition number.
For a quadratic \frac12 x^\top Q x - c^\top x with Q symmetric positive definite, L and \mu are the largest and smallest eigenvalues of Q.
Lemma 0.6 — Descent lemma If f is L-smooth, then for all x, y: f(y) \leq f(x) + \langle \nabla f(x), y - x \rangle + \frac{L}{2} \|y - x\|^2 .
Proof. Write f(y) - f(x) - \langle \nabla f(x), y - x\rangle as the integral over t \in [0, 1] of \langle \nabla f(x + t(y - x)) - \nabla f(x), y - x \rangle. By Cauchy–Schwarz and the Lipschitz bound, the integrand is at most L t \|y - x\|^2, whose integral is \frac{L}{2}\|y - x\|^2. ∎
The descent lemma says that a smooth function lies below a parabola tangent at any point. Minimizing that parabola is a gradient step: it is the first Majorization–Minimization algorithm of the course (ch. 5).
Theorem 0.7 — Rates of gradient descent Let f be convex and L-smooth with a minimizer x^\star, and let x_{k+1} = x_k - \frac{1}{L} \nabla f(x_k). Then f(x_k) is non-increasing and f(x_k) - f(x^\star) \leq \frac{L\, \|x_0 - x^\star\|^2}{2k} . If moreover f is \mu-strongly convex, the iterates converge linearly: \|x_k - x^\star\|^2 \leq \Big(1 - \frac{\mu}{L}\Big)^k \|x_0 - x^\star\|^2 .
Proof. Write g = \nabla f(x) and x^+ = x - g / L.
- The descent lemma at y = x^+ gives f(x^+) \leq f(x) - \frac{1}{2L}\|g\|^2: the values decrease.
- Convexity gives f(x) \leq f(x^\star) + \langle g, x - x^\star \rangle.
- Adding the two and completing the square: f(x^+) - f(x^\star) \leq \langle g, x - x^\star \rangle - \frac{\|g\|^2}{2L} = \frac{L}{2}\big( \|x - x^\star\|^2 - \|x^+ - x^\star\|^2 \big).
- Summing over the first k steps telescopes the right-hand side, bounded by \frac{L}{2}\|x_0 - x^\star\|^2. The left-hand terms decrease, so the last one is at most their mean.
With strong convexity, step 2 improves by -\frac{\mu}{2}\|x - x^\star\|^2. Since the left-hand side of step 3 is non-negative, \|x^+ - x^\star\|^2 \leq (1 - \mu / L)\|x - x^\star\|^2. ∎
To reach a relative accuracy \varepsilon on \|x_k - x^\star\|^2, the linear rate needs about \kappa \ln(1/\varepsilon) iterations. Chapter 1 shows that this dependence on \kappa is not optimal.
Conjugates and duality
Definition 0.8 — Fenchel conjugate The conjugate of f is f^*(u) = \sup_{x \in \mathbb{R}^N} \; \langle u, x \rangle - f(x) . For f \in \Gamma_0(\mathbb{R}^N): f^* \in \Gamma_0(\mathbb{R}^N) and f^{**} = f (Fenchel–Moreau).
The Fenchel–Young inequality f(x) + f^*(u) \geq \langle u, x \rangle holds for all x, u. Equality holds if and only if u \in \partial f(x), equivalently x \in \partial f^*(u).
Example 0.9 — Four conjugates used later
- \frac12 \|\cdot\|^2 is its own conjugate.
- The conjugate of a norm is the indicator of the unit ball of the dual norm. For instance, the conjugate of \lambda \|\cdot\|_1 is the indicator of the box \{u : \|u\|_\infty \leq \lambda\}.
- The conjugate of \iota_C is the support function \sigma_C(u) = \sup_{x \in C} \langle u, x \rangle.
- If g(x) = \frac12 \|x - y\|^2, then g^*(u) = \frac12 \|u\|^2 + \langle u, y \rangle.
Proposition 0.10 — Fenchel–Rockafellar duality Let f \in \Gamma_0(\mathbb{R}^N), h \in \Gamma_0(\mathbb{R}^M) and K \in \mathbb{R}^{M \times N}. Consider the primal and dual problems p^\star = \inf_x \; f(x) + h(Kx), \qquad d^\star = \sup_u \; -f^*(-K^\top u) - h^*(u) .
- Weak duality: d^\star \leq p^\star.
- Strong duality: if 0 is an interior point of \mathrm{dom}\, h - K \mathrm{dom} f, then p^\star = d^\star and the dual supremum is attained.
- Optimality: (x^\star, u^\star) is a primal–dual solution if and only if -K^\top u^\star \in \partial f(x^\star) \qquad \text{and} \qquad u^\star \in \partial h(K x^\star) .
Proof. Weak duality: Fenchel–Young gives f(x) + f^*(-K^\top u) \geq -\langle u, Kx \rangle and h(Kx) + h^*(u) \geq \langle u, Kx \rangle; add them. Item 3 is the equality case of both inequalities. Item 2 needs a separation argument (Bauschke and Combettes, 2011, ch. 15). ∎
The dual variable u lives in the space of Kx. Primal–dual algorithms (ch. 4) update x and u together and only ever multiply by K and K^\top.
Key takeaways — chapter 0
- Constraints become indicator functions; Fermat’s rule 0 \in \partial f(x^\star) characterizes minimizers, and the sum rule splits the subdifferential of a sum.
- The descent lemma bounds an L-smooth function by a tangent parabola; gradient descent with step 1/L minimizes that parabola.
- Gradient descent reaches O(1/k) on convex smooth functions and a linear rate (1 - 1/\kappa)^k under strong convexity.
- Conjugates turn norms into indicators of dual balls, and Fenchel–Rockafellar duality pairs f + h \circ K with a dual problem in the space of Kx.
1. Large-scale optimization: models, costs and accelerated gradients
What makes an optimization problem “large”, and which algorithms survive at that scale? This chapter fixes the model problem of the course, shows why second-order methods are out of reach, and establishes what first-order methods can and cannot achieve.
The model problem
Most problems of the course have the composite form \min_{x \in \mathbb{R}^N} \; F(x) = \sum_{j=1}^{J} f_j(L_j x), with each f_j \in \Gamma_0 simple in some sense (smooth, or with an explicit proximity operator) and each L_j a linear operator that can be applied quickly.
Example 1.1 — Four large problems
- Image restoration. An image \bar x of N = 10^6 pixels is observed as y = H \bar x + w, with a blur H and noise w. The estimate minimizes a data term plus a regularization, such as total variation with D the discrete gradient: \tfrac12 \|Hx - y\|^2 + \lambda \|D x\|_{1} .
- Sparse regression (lasso). In genomics, N can reach 10^5 to 10^6 features for a few thousand samples, and the cost is \frac12 \|Ax - b\|^2 + \lambda \|x\|_1.
- Regularized logistic regression. For click prediction, the number n of samples (a_i, b_i) can exceed 10^9: \frac{1}{n}\sum_{i=1}^n \log\big(1 + e^{-b_i a_i^\top x}\big) + \frac{\mu}{2}\|x\|^2 .
- Training a neural network. The same finite-sum structure, with a non-convex loss and up to 10^{11} parameters.
“Large” means that N, n or both are too large for any method whose cost per iteration grows faster than linearly with the size of the data.
Example 1.2 — What a Newton step would cost Take a 1000 \times 1000 image, so N = 10^6.
- A dense Hessian has N^2 = 10^{12} entries, that is 8 TB in double precision.
- A Cholesky factorization costs about N^3 / 3 \approx 3.3 \times 10^{17} flops: about four days at 10^{12} flop/s.
- A product by a convolution H costs O(N \log N) with the FFT, about 2 \times 10^7 flops: a few tens of microseconds at the same speed.
The algorithms of this course use only products by L_j and L_j^\top, gradients and simple proximity operators, so that one iteration costs about as much as reading the data.
What first-order methods can achieve
Definition 1.3 — First-order method A first-order method on a differentiable f generates iterates in the span of the gradients seen so far: x_k \in x_0 + \mathrm{span}\{\nabla f(x_0), \dots, \nabla f(x_{k-1})\} .
Theorem 1.4 — Lower bound for smooth convex minimization For every k with 1 \leq k \leq (N - 1)/2 and every x_0, there is a convex L-smooth function on \mathbb{R}^N such that every first-order method satisfies f(x_k) - f(x^\star) \geq \frac{3 L\, \|x_0 - x^\star\|^2}{32\, (k + 1)^2} .
Proof. Sketch (Nesterov, 2004, §2.1.2). The worst function is a quadratic whose matrix is the Laplacian of a path graph, \frac{L}{4} times the tridiagonal matrix with 2 on the diagonal and -1 beside it, plus a linear term on the first coordinate.
Starting from 0, each gradient makes at most one new coordinate non-zero: information travels one coordinate per iteration. After k steps the iterate lives in the first k coordinates, while the minimizer has all coordinates non-zero. A direct computation of the best value on that subspace gives the bound. ∎
Gradient descent reaches O(1/k) (Theorem 0.7), while the bound allows O(1/k^2). Nesterov (1983) closed the gap with a momentum term.
Algorithm 1.5 — Nesterov’s accelerated gradient Set y_1 = x_0 and t_1 = 1. For k \geq 1: x_k = y_k - \tfrac{1}{L} \nabla f(y_k), \qquad t_{k+1} = \frac{1 + \sqrt{1 + 4 t_k^2}}{2}, \qquad y_{k+1} = x_k + \frac{t_k - 1}{t_{k+1}}\,(x_k - x_{k-1}) . The gradient is taken at the extrapolated point y_k, not at x_k.
Theorem 1.6 — Rates of the accelerated gradient If f is convex and L-smooth, Algorithm 1.5 satisfies f(x_k) - f(x^\star) \leq \frac{2 L\, \|x_0 - x^\star\|^2}{(k + 1)^2}, which matches Theorem 1.4 up to a constant. If f is \mu-strongly convex, a constant momentum (\sqrt{\kappa} - 1)/(\sqrt{\kappa} + 1) gives a linear rate of order (1 - 1/\sqrt{\kappa})^k (Nesterov, 2004, §2.2).
Proof. The first bound is the case g = 0 of Theorem 3.6, proved in ch. 3 for the more general proximal setting. ∎
The gain is large on ill-conditioned problems. With \kappa = 10^4 and \varepsilon = 10^{-6}, the two iteration counts are \kappa \ln(1/\varepsilon) \approx 1.4 \times 10^5 \ \text{ (gradient descent)}, \qquad \sqrt{\kappa} \ln(1/\varepsilon) \approx 1.4 \times 10^3 \ \text{ (accelerated)}.
Estimating the Lipschitz constant
Every method above needs L, and a step larger than 2/L can diverge. For f(x) = \frac12 \|Ax - b\|^2, the constant is L = \|A\|^2, the largest eigenvalue of A^\top A, which is too costly to compute exactly at scale.
Proposition 1.7 — Power iteration Let M = A^\top A have eigenvalues \lambda_1 > \lambda_2 \geq \dots \geq 0. For a random start v_0, the iteration v_{k+1} = M v_k / \|M v_k\| satisfies v_k^\top M v_k \longrightarrow \lambda_1 = \|A\|^2, with an error of order (\lambda_2 / \lambda_1)^{2k}. Each step costs one product by A and one by A^\top.
Proof. Expand v_0 = \sum_i c_i u_i in an orthonormal eigenbasis; c_1 \neq 0 with probability one. Then M^k v_0 = \sum_i c_i \lambda_i^k u_i aligns with u_1 at the rate (\lambda_2/\lambda_1)^k. The Rayleigh quotient is quadratic in the error on the direction, which squares the rate. ∎
Preconditioning
Ill-conditioning slows every first-order method. A preconditioner changes the geometry in which the gradient step is taken.
Definition 1.8 — Preconditioned gradient step For a symmetric positive definite P, write \|x\|_P^2 = x^\top P x. The preconditioned step is x^+ = x - P^{-1} \nabla f(x) . Suppose that, for all x, y, f(y) \leq f(x) + \langle \nabla f(x), y - x\rangle + \tfrac12 \|y - x\|_P^2, for instance when \nabla^2 f \preceq P. Then the step minimizes this upper bound and decreases f by at least \frac12 \nabla f(x)^\top P^{-1} \nabla f(x).
Proposition 1.9 — A diagonal majorant For a symmetric matrix M, let P = \mathrm{diag}(p) with p_i = \sum_j |M_{ij}|. Then M \preceq P.
Proof. For every x, using |x_i x_j| \leq \frac12 (x_i^2 + x_j^2) and the symmetry of M: x^\top M x \leq \sum_{i,j} |M_{ij}|\, |x_i|\, |x_j| \leq \sum_{i} \Big(\sum_j |M_{ij}|\Big) x_i^2 = x^\top P x . ∎
A diagonal preconditioner costs nothing to invert, and its step updates all coordinates independently. This is the first example of a separable majorant, which makes an algorithm parallel (ch. 5 and ch. 7).
The code below estimates L by power iteration on an ill-conditioned least-squares problem (singular values of the design spread over two decades), then compares gradient descent and Algorithm 1.5.
import numpy as np
rng = np.random.default_rng(0)
n, d = 300, 200
A = rng.standard_normal((n, d)) @ np.diag(np.logspace(0, -2, d)) # ill-conditioned
x_true = rng.standard_normal(d)
b = A @ x_true + 0.01 * rng.standard_normal(n)
# Lipschitz constant of grad f, f(x) = 0.5 ||Ax - b||^2, by power iteration
v = rng.standard_normal(d)
for _ in range(100):
v = A.T @ (A @ v)
v /= np.linalg.norm(v)
L = v @ (A.T @ (A @ v))
print(f"power iteration L = {L:.4f}, exact ||A||^2 = {np.linalg.norm(A, 2)**2:.4f}")
f = lambda x: 0.5 * np.sum((A @ x - b) ** 2)
f_star = f(np.linalg.lstsq(A, b, rcond=None)[0])
grad = lambda x: A.T @ (A @ x - b)
x = np.zeros(d) # gradient descent, step 1/L
y, z, t = np.zeros(d), np.zeros(d), 1.0 # Nesterov (FISTA with g = 0)
for k in range(1, 501):
x = x - grad(x) / L
z_new = y - grad(y) / L
t_new = (1 + np.sqrt(1 + 4 * t * t)) / 2
y = z_new + (t - 1) / t_new * (z_new - z)
z, t = z_new, t_new
if k in (10, 100, 500):
print(f"k={k:4d} GD gap {f(x) - f_star:.3e} Nesterov gap {f(z) - f_star:.3e}")Power iteration recovers L = 348.1558 to all printed digits. After 500 iterations the objective gaps are \text{gradient descent: } 2.81, \qquad \text{accelerated: } 7.6 \times 10^{-3} . At k = 100 the gaps are already 15.3 and 0.86.
Key takeaways — chapter 1
- Large-scale problems are sums of simple functions composed with fast linear operators; one iteration should cost about one pass over the data.
- Newton steps are out of reach at N = 10^6 (terabytes, days); first-order methods use only gradients, products by L_j, L_j^\top and simple proximity operators.
- No first-order method beats O(1/k^2) on smooth convex functions; Nesterov’s momentum attains it, and replaces \kappa by \sqrt{\kappa} in the linear rate.
- Power iteration estimates L cheaply; diagonal majorants give free, separable preconditioners.
2. Proximity operators
Gradient steps need differentiability, and the \ell_1 norm, total variation or a constraint are not differentiable. The proximity operator replaces the gradient step on such a term by a small, often explicit, minimization problem.
Definition and catalogue
Definition 2.1 — Proximity operator For f \in \Gamma_0(\mathbb{R}^N) and \gamma > 0, the proximity operator of \gamma f at v is \mathrm{prox}_{\gamma f}(v) = \operatorname*{argmin}_{x \in \mathbb{R}^N} \; f(x) + \frac{1}{2\gamma} \|x - v\|^2 . It is a compromise between minimizing f and staying close to v; \gamma sets the balance.
Proposition 2.2 — Existence, uniqueness, characterization The minimizer in Definition 2.1 exists and is unique, and p = \mathrm{prox}_{\gamma f}(v) \iff v - p \in \gamma\, \partial f(p) .
Proof. The objective is in \Gamma_0 and \frac{1}{\gamma}-strongly convex, hence coercive: a minimizer exists, and strict convexity makes it unique. The quadratic term is finite and differentiable everywhere, so the sum rule and Fermat’s rule (Proposition 0.3) give 0 \in \partial f(p) + (p - v)/\gamma. ∎
The inclusion reads p = (I + \gamma \partial f)^{-1}(v): the prox is an implicit (backward) gradient step, where the subgradient is taken at the arrival point.
Example 2.3 — A catalogue of proximity operators
- Indicator. \mathrm{prox}_{\gamma \iota_C} = P_C, the projection onto C, for every \gamma. For a box, it clips each coordinate.
- \ell_1 norm. The prox of \gamma \|\cdot\|_1 is soft thresholding, coordinate by coordinate: \big(\mathrm{prox}_{\gamma \|\cdot\|_1}(v)\big)_i = \mathrm{sign}(v_i)\, \max(|v_i| - \gamma, 0) . In one dimension, Proposition 2.2 gives p = v - \gamma if v > \gamma, p = v + \gamma if v < -\gamma, and p = 0 exactly when |v| \leq \gamma.
- Least squares. For f(x) = \frac12 \|Ax - b\|^2, setting the gradient to zero gives a linear system: \mathrm{prox}_{\gamma f}(v) = (I + \gamma A^\top A)^{-1} (v + \gamma A^\top b) .
- Euclidean norm (group sparsity). The prox of \gamma \|\cdot\|_2 shrinks the whole vector: \mathrm{prox}_{\gamma \|\cdot\|_2}(v) = \max\Big(1 - \frac{\gamma}{\|v\|_2},\, 0\Big)\, v .
- Separable sums. If f(x) = \sum_i f_i(x_i) over blocks x_i, the prox acts block by block, and the blocks can be processed in parallel.
Proposition 2.4 — Fixed points and the proximal point algorithm For every \gamma > 0, x^\star \in \operatorname{argmin} f \iff x^\star = \mathrm{prox}_{\gamma f}(x^\star) .
Proof. By Proposition 2.2, x^\star = \mathrm{prox}_{\gamma f}(x^\star) if and only if 0 \in \gamma\, \partial f(x^\star), which is Fermat’s rule. ∎
The proximal point algorithm x_{k+1} = \mathrm{prox}_{\gamma f}(x_k) converges to a minimizer of f whenever one exists (Rockafellar, 1976). It is rarely practical on its own, since each step is as hard as the original problem, but it is the template of every algorithm of chapters 3 and 4.
Firm nonexpansiveness and Moreau’s identities
Proposition 2.5 — Firm nonexpansiveness For all u, w, with p = \mathrm{prox}_{\gamma f}(u) and q = \mathrm{prox}_{\gamma f}(w): \|p - q\|^2 \leq \langle p - q,\, u - w \rangle . In particular, \|p - q\| \leq \|u - w\|: the prox is nonexpansive.
Proof. First, \partial f is monotone: if a \in \partial f(p) and c \in \partial f(q), adding the two subgradient inequalities between p and q gives \langle a - c, p - q \rangle \geq 0.
By Proposition 2.2, (u - p)/\gamma \in \partial f(p) and (w - q)/\gamma \in \partial f(q). Monotonicity gives \langle (u - w) - (p - q),\, p - q \rangle \geq 0, which is the claim. Cauchy–Schwarz then gives nonexpansiveness. ∎
Theorem 2.6 — Moreau decomposition For f \in \Gamma_0(\mathbb{R}^N), \gamma > 0 and every v: v = \mathrm{prox}_{\gamma f}(v) + \gamma\, \mathrm{prox}_{\gamma^{-1} f^*}(v / \gamma) .
Proof. Let p = \mathrm{prox}_{\gamma f}(v) and u = (v - p)/\gamma.
- By Proposition 2.2, u \in \partial f(p).
- By the equality case of Fenchel–Young (Definition 0.8), p \in \partial f^*(u).
- Hence v/\gamma - u = p/\gamma \in \partial (\gamma^{-1} f^*)(u), which by Proposition 2.2 (with parameter 1) means u = \mathrm{prox}_{\gamma^{-1} f^*}(v/\gamma).
Then v = p + \gamma u is the claim. ∎
When f is a norm, f^* is the indicator of the dual unit ball (Example 0.9), and scaling an indicator changes nothing. The prox of a norm is therefore the identity minus a projection: soft thresholding is v - P_{[-\gamma, \gamma]^N}(v). This identity also gives the prox of a conjugate, which the primal–dual methods of ch. 4 need.
Proposition 2.7 — Moreau envelope The Moreau envelope of f \in \Gamma_0(\mathbb{R}^N) is {}^{\gamma} f(v) = \min_x \; f(x) + \frac{1}{2\gamma}\|x - v\|^2 . It is convex, finite everywhere, has the same minimizers as f, and is differentiable with a \frac{1}{\gamma}-Lipschitz gradient: \nabla\, {}^{\gamma} f(v) = \frac{v - \mathrm{prox}_{\gamma f}(v)}{\gamma} .
Proof. Sketch. The gradient formula is proved in Bauschke and Combettes (2011, ch. 12). By Theorem 2.6, the gradient equals \mathrm{prox}_{\gamma^{-1} f^*}(v/\gamma), which is nonexpansive in v/\gamma, hence \frac1\gamma-Lipschitz in v. ∎
Example 2.8 — The Huber function The Moreau envelope of |\cdot| is the Huber function: {}^{\gamma} |\cdot|(v) = \frac{v^2}{2\gamma} \ \text{ if } |v| \leq \gamma, \qquad {}^{\gamma} |\cdot|(v) = |v| - \frac{\gamma}{2} \ \text{ otherwise.} For |v| > \gamma, the prox is v - \gamma\, \mathrm{sign}(v), and the value is |v| - \gamma + \gamma/2. Smoothing a non-smooth term by its envelope lets gradient methods handle it, at the price of a bias of size \gamma/2.
Proximal calculus
Proposition 2.9 — Three rules
- Translation. If g(x) = f(x - a), then \mathrm{prox}_{\gamma g}(v) = a + \mathrm{prox}_{\gamma f}(v - a) .
- Quadratic perturbation. If g(x) = f(x) + \frac{\alpha}{2}\|x\|^2 with \alpha \geq 0, then \mathrm{prox}_{\gamma g}(v) = \mathrm{prox}_{\frac{\gamma}{1 + \alpha\gamma} f}\Big(\frac{v}{1 + \alpha \gamma}\Big) .
- Semi-orthogonal composition. If g = f \circ L with L L^\top = \nu I for some \nu > 0 (an orthogonal transform, or a tight frame), then \mathrm{prox}_{\gamma g}(v) = v + \nu^{-1} L^\top \big( \mathrm{prox}_{\gamma \nu f}(L v) - L v \big) .
Proof. Items 1 and 2 follow by a change of variable and by completing the square in Definition 2.1. Item 3 is proved in Bauschke and Combettes (2011, ch. 24): write x = L^\top z / \nu + x_\perp with L x_\perp = 0, and minimize separately over the two components. ∎
Rule 3 covers \ell_1 regularization in an orthonormal wavelet or cosine basis. It does not cover total variation, because the discrete gradient D is not semi-orthogonal. In general, the prox of a sum is not the composition of the proxes: that is why splitting algorithms exist (ch. 4).
The code checks soft thresholding, the Moreau decomposition for the \ell_1 norm and firm nonexpansiveness on random pairs.
import numpy as np
def prox_l1(v, gamma):
"""prox of gamma * ||.||_1: soft thresholding"""
return np.sign(v) * np.maximum(np.abs(v) - gamma, 0.0) + 0.0
def proj_linf(v, r):
"""projection onto the l-infinity ball of radius r"""
return np.clip(v, -r, r)
rng = np.random.default_rng(1)
v = np.array([3.0, -0.4, 1.2, -2.5, 0.05])
print("prox_l1(v, 1) =", prox_l1(v, 1.0))
# Moreau decomposition: v = prox_{gamma f}(v) + gamma * prox_{f*/gamma}(v/gamma),
# with f = ||.||_1, f* = indicator of the unit l-infinity ball
print("Moreau residual =", np.abs(v - prox_l1(v, 1.0) - proj_linf(v, 1.0)).max())
# firm nonexpansiveness: ||p - q||^2 <= <p - q, u - w>
worst = np.inf
for _ in range(10000):
u, w = rng.standard_normal(5) * 3, rng.standard_normal(5) * 3
p, q = prox_l1(u, 0.7), prox_l1(w, 0.7)
worst = min(worst, (p - q) @ (u - w) - (p - q) @ (p - q))
print(f"min of <p-q,u-w> - ||p-q||^2 over 10^4 pairs: {worst:.2e}")The output is (2, 0, 0.2, -1.5, 0), a Moreau residual of exactly 0, and a minimum of -7 \times 10^{-15} for the firm-nonexpansiveness gap, which is zero up to rounding.
Key takeaways — chapter 2
- \mathrm{prox}_{\gamma f}(v) is the unique minimizer of f + \frac{1}{2\gamma}\|\cdot - v\|^2, characterized by v - p \in \gamma\, \partial f(p): an implicit gradient step.
- Projections, soft thresholding, group shrinkage and linear solves are proximity operators; separable functions have separable, parallel proxes.
- Minimizers are the fixed points of the prox, and the prox is firmly nonexpansive: these two facts drive every convergence proof of the course.
- Moreau’s decomposition links the prox of f and of f^*; the Moreau envelope smooths f with a \frac1\gamma-Lipschitz gradient.
3. Proximal gradient algorithms: forward–backward and FISTA
Many problems split into a smooth data term and a non-smooth but proximable regularizer. This chapter combines a gradient step on the first with a proximal step on the second, and proves the rates of the plain and accelerated versions.
Throughout the chapter, F = f + g with f convex and L-smooth, g \in \Gamma_0(\mathbb{R}^N), and a minimizer x^\star exists.
Forward–backward splitting
Algorithm 3.1 — Forward–backward (proximal gradient) Choose x_0 and steps \gamma_k \in (0, 2/L). Iterate x_{k+1} = \mathrm{prox}_{\gamma_k g}\big(x_k - \gamma_k \nabla f(x_k)\big) . The step on f is explicit (forward), the step on g implicit (backward).
Special cases: g = 0 gives gradient descent; f = 0 gives the proximal point algorithm; g = \iota_C gives projected gradient; g = \lambda \|\cdot\|_1 gives ISTA, the iterative shrinkage-thresholding algorithm (Daubechies, Defrise and De Mol, 2004).
Proposition 3.2 — Fixed points For every \gamma > 0, x^\star minimizes F if and only if x^\star = \mathrm{prox}_{\gamma g}\big(x^\star - \gamma \nabla f(x^\star)\big) .
Proof. By Proposition 2.2, the fixed-point equation reads -\nabla f(x^\star) \in \partial g(x^\star) after division by \gamma. By the sum rule, this is 0 \in \nabla f(x^\star) + \partial g(x^\star) = \partial F(x^\star), and Fermat’s rule concludes. ∎
The norm of x_k - x_{k+1}, divided by \gamma_k, therefore measures optimality and gives a stopping criterion.
Lemma 3.3 — Key inequality Let x^+ = \mathrm{prox}_{g/L}\big(x - \nabla f(x)/L\big). For every z: F(x^+) \leq F(z) + \frac{L}{2}\big( \|x - z\|^2 - \|x^+ - z\|^2 \big) .
Proof. Three inequalities, then one identity.
- Descent lemma: f(x^+) \leq f(x) + \langle \nabla f(x), x^+ - x \rangle + \tfrac{L}{2}\|x^+ - x\|^2 .
- Convexity of f: f(x) + \langle \nabla f(x), z - x \rangle \leq f(z).
- By Proposition 2.2, L(x - x^+) - \nabla f(x) \in \partial g(x^+), so g(x^+) \leq g(z) - \langle L(x - x^+) - \nabla f(x),\, z - x^+ \rangle .
- Adding the three, the gradient terms combine into \langle \nabla f(x), z - x\rangle and cancel against item 2: F(x^+) \leq F(z) + \frac{L}{2}\|x^+ - x\|^2 - L \langle x - x^+, z - x^+ \rangle .
- With a = x - x^+ and c = z - x^+, the identity \|a\|^2 - 2\langle a, c\rangle = \|a - c\|^2 - \|c\|^2 turns the last two terms into the claim. ∎
Theorem 3.4 — Rate of forward–backward With \gamma_k = 1/L, the values F(x_k) are non-increasing and F(x_k) - F(x^\star) \leq \frac{L\, \|x_0 - x^\star\|^2}{2k} . For any constant step in (0, 2/L), the iterates converge to a minimizer (Combettes and Wajs, 2005).
Proof. Lemma 3.3 with z = x_k gives F(x_{k+1}) \leq F(x_k) - \frac{L}{2}\|x_{k+1} - x_k\|^2: monotonicity.
With z = x^\star, summing the inequality over the first k steps telescopes, exactly as in Theorem 0.7. The sum of the gaps is at most \frac{L}{2}\|x_0 - x^\star\|^2, and the last gap is the smallest. Convergence of the iterates is the averaged-operator argument of ch. 4. ∎
Acceleration: FISTA
Algorithm 3.5 — FISTA (Beck and Teboulle, 2009) Set y_1 = x_0 and t_1 = 1. For k \geq 1: x_k = \mathrm{prox}_{g/L}\big(y_k - \tfrac{1}{L}\nabla f(y_k)\big), \qquad t_{k+1} = \frac{1 + \sqrt{1 + 4t_k^2}}{2}, y_{k+1} = x_k + \frac{t_k - 1}{t_{k+1}}\,(x_k - x_{k-1}) .
Theorem 3.6 — Rate of FISTA The iterates of Algorithm 3.5 satisfy F(x_k) - F(x^\star) \leq \frac{2L\, \|x_0 - x^\star\|^2}{(k+1)^2} .
Proof. Two facts on the sequence t_k: t_{k+1}^2 - t_{k+1} = t_k^2 by construction, and t_k \geq (k+1)/2 by induction, since t_{k+1} \geq t_k + \frac12.
Write t = t_{k+1} and define u_k = x_{k-1} + t_k (x_k - x_{k-1}).
- Apply Lemma 3.3 at the point y_{k+1} with z = (1 - \frac1t) x_k + \frac1t x^\star.
- By convexity, F(z) \leq (1 - \frac1t) F(x_k) + \frac1t F(x^\star).
- The definitions give t\,(y_{k+1} - z) = u_k - x^\star and t\,(x_{k+1} - z) = u_{k+1} - x^\star.
- Multiplying by t^2 and using t^2 - t = t_k^2, the energy below is non-increasing: E_k = t_k^2 \big(F(x_k) - F(x^\star)\big) + \frac{L}{2}\|u_k - x^\star\|^2 .
- Lemma 3.3 at x_0 with z = x^\star gives E_1 \leq \frac{L}{2}\|x_0 - x^\star\|^2, since u_1 = x_1.
Hence the following bound holds, and t_k \geq (k+1)/2 concludes: t_k^2 \big(F(x_k) - F(x^\star)\big) \leq \frac{L}{2}\|x_0 - x^\star\|^2 . ∎
FISTA is not monotone, and the convergence of its iterates is subtle; Chambolle and Dossal (2015) prove it for the slightly modified sequence t_k = (k + a - 1)/a with a > 2.
Variable metric and line search
Definition 3.7 — Variable metric forward–backward For symmetric positive definite matrices P_k, the step x_{k+1} = \mathrm{prox}^{P_k}_{g}\big(x_k - P_k^{-1}\nabla f(x_k)\big), \qquad \mathrm{prox}^{P}_{g}(v) = \operatorname*{argmin}_x \; g(x) + \tfrac12 \|x - v\|_P^2, replaces L\, I by a majorant metric P_k, as in Definition 1.8.
Chouzenoux, Pesquet and Repetti (2014) prove its convergence when P_k satisfies the majorization condition of Definition 1.8, including for non-convex f (ch. 9). The metric prox is explicit when P_k is diagonal and g separable.
When L is unknown, backtracking multiplies a trial L by a factor \eta > 1 until the descent inequality of Lemma 0.6 holds between y_k and the new point. The rates are kept, with L replaced by \eta L in the worst case (Beck and Teboulle, 2009).
Example 3.8 — ISTA and FISTA on a lasso The code generates a 10-sparse signal in dimension 500 observed through 200 random measurements, and solves the lasso with \lambda = 0.02. scikit-learn provides the reference value; it scales the data term by 1/n, hence \alpha = \lambda / n.
import numpy as np
from sklearn.linear_model import Lasso
rng = np.random.default_rng(0)
n, d, s = 200, 500, 10
A = rng.standard_normal((n, d)) / np.sqrt(n)
x_true = np.zeros(d)
x_true[rng.choice(d, s, replace=False)] = rng.choice([-1.0, 1.0], s) * rng.uniform(1, 2, s)
b = A @ x_true + 0.01 * rng.standard_normal(n)
lam = 0.02
F = lambda x: 0.5 * np.sum((A @ x - b) ** 2) + lam * np.abs(x).sum()
soft = lambda v, g: np.sign(v) * np.maximum(np.abs(v) - g, 0.0)
L = np.linalg.norm(A, 2) ** 2
# reference solution: scikit-learn minimises (1/2n)||b - Ax||^2 + alpha ||x||_1
ref = Lasso(alpha=lam / n, fit_intercept=False, tol=1e-12, max_iter=100000).fit(A, b).coef_
F_star = F(ref)
x = np.zeros(d) # ISTA = forward-backward
z, y, t = np.zeros(d), np.zeros(d), 1.0 # FISTA
for k in range(1, 301):
x = soft(x - A.T @ (A @ x - b) / L, lam / L)
z_new = soft(y - A.T @ (A @ y - b) / L, lam / L)
t_new = (1 + np.sqrt(1 + 4 * t * t)) / 2
y = z_new + (t - 1) / t_new * (z_new - z)
z, t = z_new, t_new
if k in (10, 50, 300):
print(f"k={k:5d} ISTA {F(x) - F_star:.2e} FISTA {F(z) - F_star:.2e}")
supp = lambda v: set(np.flatnonzero(np.abs(v) > 1e-6))
print("true support recovered by FISTA:", supp(x_true) <= supp(z), "| nonzeros:", len(supp(z)))
print(f"relative error ||x - x_true|| / ||x_true|| = {np.linalg.norm(z - x_true) / np.linalg.norm(x_true):.3f}")The objective gaps are:
| Iteration | ISTA | FISTA |
|---|---|---|
| 10 | 0.52 | 0.42 |
| 50 | 0.29 | 5.8 \times 10^{-4} |
| 300 | 2.9 \times 10^{-7} | 6.3 \times 10^{-13} |
The final estimate has 38 non-zeros: the 10 true ones and 28 spurious ones, all below 0.02 in absolute value. Its relative error is 0.024. Both methods end up converging linearly, because the lasso is strongly convex on the support of the solution; FISTA reaches that regime much earlier.
Key takeaways — chapter 3
- Forward–backward alternates a gradient step on the smooth term and a prox step on the other; minimizers are its fixed points for every step size.
- One inequality (Lemma 3.3) gives monotonicity and the O(1/k) rate, and, with an energy argument, the O(1/k^2) rate of FISTA.
- Variable metrics and backtracking adapt the step to the local curvature without knowing L.
- On the lasso, ISTA is soft thresholding after a gradient step; FISTA reaches 10^{-3} accuracy in 50 iterations where ISTA is still at 0.29.
4. Splitting algorithms: Douglas–Rachford, ADMM and primal–dual methods
Forward–backward needs one smooth term. Total variation \lambda\|Dx\|_1, a sum of two constraints, or a non-smooth data term break this assumption. This chapter builds algorithms that only use the proxes of the individual terms and products by linear operators, from one fixed-point theorem.
Averaged operators
Definition 4.1 — Nonexpansive and averaged operators An operator T : \mathbb{R}^N \to \mathbb{R}^N is nonexpansive if \|Tx - Ty\| \leq \|x - y\| for all x, y.
It is \alpha-averaged, for \alpha \in (0, 1), if T = (1 - \alpha) I + \alpha R with R nonexpansive. Firmly nonexpansive operators (Proposition 2.5) are exactly the \frac12-averaged ones.
Proposition 4.2 — The building blocks are averaged
- The reflected prox R_{\gamma f} = 2\,\mathrm{prox}_{\gamma f} - I is nonexpansive.
- If f is convex and L-smooth and \gamma \in (0, 2/L), then I - \gamma \nabla f is \frac{\gamma L}{2}-averaged.
- A composition of averaged operators is averaged.
Proof. Item 1: for any T, expanding the square gives \|(2T - I)x - (2T - I)y\|^2 = \|x - y\|^2 - 4\big( \langle Tx - Ty, x - y \rangle - \|Tx - Ty\|^2 \big), which is at most \|x - y\|^2 when T is firmly nonexpansive. Item 2 rests on the Baillon–Haddad theorem, by which \frac1L \nabla f is firmly nonexpansive. Item 3 is a computation on the averaging constants (Bauschke and Combettes, 2011, ch. 4). ∎
Theorem 4.3 — Krasnosel’skii–Mann Let T be \alpha-averaged with at least one fixed point, and x_{k+1} = T x_k. Then (x_k) converges to a fixed point of T, and the fixed-point residual decreases at the rate \|x_k - T x_k\| \leq \sqrt{\frac{\alpha}{(1 - \alpha)\,(k + 1)}}\; \|x_0 - z\| \qquad \text{for every fixed point } z .
Proof. Write T = (1 - \alpha)I + \alpha R, and let z = Tz = Rz.
- Take a = x - z and c = Rx - z, so that \|c\| \leq \|a\|. The identity \|(1 - \alpha)a + \alpha c\|^2 = (1 - \alpha)\|a\|^2 + \alpha\|c\|^2 - \alpha(1 - \alpha)\|a - c\|^2 and x - Tx = \alpha (x - Rx) give \|Tx - z\|^2 \leq \|x - z\|^2 - \frac{1 - \alpha}{\alpha}\, \|x - Tx\|^2 .
- The distances to every fixed point decrease (Fejér monotonicity), and summing gives \sum_k \|x_k - Tx_k\|^2 \leq \frac{\alpha}{1 - \alpha}\|x_0 - z\|^2 .
- The residuals are non-increasing, because T is nonexpansive and x_{k+1} = T x_k: \|x_{k+1} - Tx_{k+1}\| = \|Tx_k - Tx_{k+1}\| \leq \|x_k - x_{k+1}\| . The last of k + 1 terms is at most their mean: this is the rate.
- The sequence is bounded; by continuity of T, its cluster points are fixed points. Fejér monotonicity with respect to such a cluster point forces the whole sequence to converge to it. ∎
By Proposition 4.2, the forward–backward operator \mathrm{prox}_{\gamma g} \circ (I - \gamma \nabla f) is averaged for \gamma \in (0, 2/L), and its fixed points are the minimizers (Proposition 3.2). Theorem 4.3 thus proves the convergence of the iterates claimed in Theorem 3.4.
Douglas–Rachford splitting
Algorithm 4.4 — Douglas–Rachford To minimize f + g with f, g \in \Gamma_0(\mathbb{R}^N), choose \gamma > 0, \lambda \in (0, 2) and y_0. Iterate x_k = \mathrm{prox}_{\gamma g}(y_k), \qquad w_k = \mathrm{prox}_{\gamma f}(2 x_k - y_k), \qquad y_{k+1} = y_k + \lambda\, (w_k - x_k) .
Theorem 4.5 — Convergence of Douglas–Rachford If f + g has a minimizer and the relative interiors of \mathrm{dom} f and \mathrm{dom}\, g intersect, then y_k \to y^\star, and x_k converges to x^\star = \mathrm{prox}_{\gamma g}(y^\star) \in \operatorname{argmin}\, (f + g) .
Proof. Sketch for \lambda = 1 (Lions and Mercier, 1979; Eckstein and Bertsekas, 1992).
- A direct computation shows y_{k+1} = T y_k with T = \frac12 (I + R_{\gamma f} R_{\gamma g}).
- R_{\gamma f} R_{\gamma g} is nonexpansive (Proposition 4.2), so T is \frac12-averaged, and Theorem 4.3 applies.
- At a fixed point, w = x. Then y - x \in \gamma\,\partial g(x) and x - y \in \gamma\,\partial f(x), whose sum is 0 \in \partial f(x) + \partial g(x).
The convergence of x_k itself follows from the continuity of the prox. ∎
Douglas–Rachford uses no gradient and no Lipschitz constant: any \gamma > 0 works, although \gamma strongly affects the speed (Example 7.7).
ADMM
The alternating direction method of multipliers handles a linear coupling between two blocks of variables: \min_{x, z} \; f(x) + g(z) \quad \text{subject to} \quad A x + B z = c .
Algorithm 4.6 — ADMM, scaled form With a penalty \rho > 0 and a scaled multiplier u: \begin{aligned} x_{k+1} &= \operatorname*{argmin}_x \; f(x) + \tfrac{\rho}{2}\|A x + B z_k - c + u_k\|^2, \\ z_{k+1} &= \operatorname*{argmin}_z \; g(z) + \tfrac{\rho}{2}\|A x_{k+1} + B z - c + u_k\|^2, \\ u_{k+1} &= u_k + A x_{k+1} + B z_{k+1} - c . \end{aligned}
Theorem 4.7 — Convergence of ADMM Assume f, g \in \Gamma_0 and that the Lagrangian has a saddle point. Then the residual A x_k + B z_k - c tends to 0, the objective tends to the optimal value, and \rho u_k converges to a dual solution (Boyd et al., 2011, §3.2).
Proof. Idea. ADMM is Douglas–Rachford applied to the Fenchel dual of the problem, with \gamma = \rho (Eckstein and Bertsekas, 1992). Theorem 4.5 on the dual gives the convergence of the multipliers, and the primal statements follow from the optimality conditions of the two subproblems. ∎
Example 4.8 — ADMM for the lasso and for total variation
- Lasso: f(x) = \frac12\|Ax - b\|^2, g = \lambda\|\cdot\|_1 and the constraint x - z = 0. The second step is soft thresholding at \lambda / \rho of x_{k+1} + u_k, and the first solves a linear system: (A^\top A + \rho I)\,x_{k+1} = A^\top b + \rho (z_k - u_k) .
- Total variation denoising: f(x) = \frac12 \|x - y\|^2, g = \lambda \|\cdot\|_1, constraint D x - z = 0. The x-step solves a system with the matrix I + \rho D^\top D, tridiagonal in one dimension.
In both cases the matrix does not change with k: it is factorized once, and each iteration costs two triangular solves.
Boyd et al. (2011) recommend stopping when both the primal residual \|A x_k + B z_k - c\| and the dual residual \rho \|A^\top B (z_{k} - z_{k-1})\| are small.
Primal–dual methods
The problem \min_x g(x) + h(Kx) is equivalent to the saddle-point problem \min_x \max_u \; g(x) + \langle K x, u \rangle - h^*(u), by Definition 0.8 applied to h = h^{**}. Primal–dual methods alternate a prox step in x and one in u, and never invert K.
Algorithm 4.9 — Chambolle–Pock Choose \tau, \sigma > 0 with \tau \sigma \|K\|^2 < 1, and set \bar x_0 = x_0. Iterate u_{k+1} = \mathrm{prox}_{\sigma h^*}(u_k + \sigma K \bar x_k), \qquad x_{k+1} = \mathrm{prox}_{\tau g}(x_k - \tau K^\top u_{k+1}), \qquad \bar x_{k+1} = 2 x_{k+1} - x_k . The prox of h^* comes from that of h by the Moreau decomposition (Theorem 2.6).
Theorem 4.10 — Convergence of Chambolle–Pock If a saddle point exists and \tau\sigma\|K\|^2 < 1, then (x_k, u_k) converges to a saddle point, and the primal–dual gap of the averaged iterates decreases as O(1/k) (Chambolle and Pock, 2011).
Proof. Idea. The iteration is a proximal point algorithm in the product space for the metric M = \begin{pmatrix} \tau^{-1} I & -K^\top \\ -K & \sigma^{-1} I \end{pmatrix}, whose Schur complement \tau^{-1} I - \sigma K^\top K is positive definite exactly when \tau\sigma\|K\|^2 < 1 (He and Yuan, 2012). Proposition 2.4 and Theorem 4.3 then apply in the norm of M. ∎
Condat (2013) and Vũ (2013) add a smooth term f with an L-Lipschitz gradient to the primal step: x_{k+1} = \mathrm{prox}_{\tau g}\big(x_k - \tau (\nabla f(x_k) + K^\top u_{k+1})\big), \qquad \text{with} \quad \frac{1}{\tau} - \sigma \|K\|^2 > \frac{L}{2} . The result handles f + g + h \circ K with only explicit operations: the most flexible of the splitting algorithms.
Example 4.11 — Total variation denoising in one dimension A piecewise-constant signal of length 500 with noise of standard deviation 0.5 is denoised by minimizing \frac12\|x - y\|^2 + \lambda \|Dx\|_1 with \lambda = 1.
For Chambolle–Pock, g = \frac12\|\cdot - y\|^2, h = \lambda\|\cdot\|_1 and K = D. Then h^* is the indicator of [-\lambda, \lambda]^{N-1}, whose prox is a clipping.
Since \|D\|^2 < 4, the choice \tau = \sigma = 0.49 is admissible.
import numpy as np
import scipy.sparse as sp
from scipy.sparse.linalg import splu
rng = np.random.default_rng(0)
N, lam = 500, 1.0
x_clean = np.repeat([0.0, 2.0, -1.0, 1.0, 0.0], N // 5) # piecewise constant
y = x_clean + 0.5 * rng.standard_normal(N)
D = sp.diags([-np.ones(N - 1), np.ones(N - 1)], [0, 1], shape=(N - 1, N)).tocsr()
F = lambda x: 0.5 * np.sum((x - y) ** 2) + lam * np.abs(D @ x).sum()
def chambolle_pock(iters, tau=0.49, sigma=0.49): # tau * sigma * ||D||^2 < 1
x, xbar, u = y.copy(), y.copy(), np.zeros(N - 1)
for _ in range(iters):
u = np.clip(u + sigma * (D @ xbar), -lam, lam) # prox of sigma h*, h = lam ||.||_1
x_new = (x - tau * (D.T @ u) + tau * y) / (1 + tau) # prox of tau g, g = 0.5||. - y||^2
xbar, x = 2 * x_new - x, x_new
return x
def admm(iters, rho=1.0):
solve = splu((sp.eye(N) + rho * D.T @ D).tocsc()).solve # factorised once
z, w = np.zeros(N - 1), np.zeros(N - 1)
for _ in range(iters):
x = solve(y + rho * (D.T @ (z - w)))
Dx = D @ x
z = np.sign(Dx + w) * np.maximum(np.abs(Dx + w) - lam / rho, 0.0)
w = w + Dx - z
return x
F_star = F(chambolle_pock(20000))
for k in (50, 200, 1000):
print(f"k={k:5d} Chambolle-Pock {F(chambolle_pock(k)) - F_star:.2e} ADMM {F(admm(k)) - F_star:.2e}")
x = chambolle_pock(20000)
print(f"RMSE noisy {np.sqrt(np.mean((y - x_clean)**2)):.3f} -> denoised {np.sqrt(np.mean((x - x_clean)**2)):.3f}")| Iterations | Chambolle–Pock gap | ADMM gap |
|---|---|---|
| 50 | 1.16 | 0.31 |
| 200 | 8.1 \times 10^{-2} | 1.7 \times 10^{-2} |
| 1000 | 1.0 \times 10^{-3} | 1.0 \times 10^{-5} |
The root-mean-square error drops from 0.507 to 0.123. ADMM converges faster per iteration but solves a linear system at each step. Chambolle–Pock only multiplies by D and D^\top: on a large two-dimensional image with general boundary conditions, it is the method whose iterations stay cheap and parallel.
Key takeaways — chapter 4
- Proxes are firmly nonexpansive, reflected proxes nonexpansive, and compositions of averaged operators averaged; the Krasnosel’skii–Mann theorem makes every such iteration converge, with residual O(1/\sqrt{k}).
- Douglas–Rachford minimizes f + g with the two proxes only and any \gamma > 0; ADMM is Douglas–Rachford on the dual.
- Chambolle–Pock handles g + h \circ K with products by K and K^\top under \tau\sigma\|K\|^2 < 1; Condat–Vũ adds a smooth term.
- The choice between them is a choice of which operations are cheap at scale: linear solves (ADMM) or matrix–vector products (primal–dual).
5. Majorization–Minimization methods
Instead of minimizing a hard function directly, Majorization–Minimization (MM) minimizes, at each step, a simpler function that lies above it and touches it at the current point. Gradient descent, half-quadratic algorithms, iteratively reweighted least squares and EM are all instances.
The MM principle
Definition 5.1 — Tangent majorant and MM iteration A function h(\cdot \mid y) is a tangent majorant of F at y if F(x) \leq h(x \mid y) \ \text{ for all } x, \qquad F(y) = h(y \mid y) . The MM algorithm computes x_{k+1} \in \operatorname{argmin}_x h(x \mid x_k).
Proposition 5.2 — MM decreases the objective The MM iterates satisfy F(x_{k+1}) \leq F(x_k).
Proof. The chain F(x_{k+1}) \leq h(x_{k+1} \mid x_k) \leq h(x_k \mid x_k) = F(x_k) uses majorization, then the definition of x_{k+1} as a minimizer, then tangency. ∎
Monotonicity holds without convexity, which makes MM popular for non-convex models. The art is to choose a majorant that is tight enough to make progress and simple enough to minimize.
Building majorants
Proposition 5.3 — Four constructions
- Lipschitz gradient. If F is L-smooth, the descent lemma gives a quadratic majorant with curvature L\,I; its minimizer is the gradient step with step 1/L.
- Curvature matrix. If there are symmetric positive definite A(y) with F(x) \leq F(y) + \langle \nabla F(y), x - y \rangle + \tfrac12 \|x - y\|^2_{A(y)}, the MM step is the preconditioned step x^+ = y - A(y)^{-1}\nabla F(y) of Definition 1.8.
- Half-quadratic. Let \varphi : \mathbb{R} \to \mathbb{R} be even and differentiable, with u \mapsto \varphi(\sqrt{u}) concave on [0, \infty), and let \omega(s) = \varphi'(s)/s. Then for all t and s \neq 0: \varphi(t) \leq \varphi(s) + \frac{\omega(s)}{2}\,(t^2 - s^2) .
- Absolute value. For s \neq 0, |t| \leq \frac{t^2}{2|s|} + \frac{|s|}{2}, by the inequality between arithmetic and geometric means.
Proof. Item 3: \psi(u) = \varphi(\sqrt u) is concave, so it lies below its tangent at v = s^2: \psi(u) \leq \psi(v) + \psi'(v)\,(u - v) . With u = t^2 and \psi'(v) = \varphi'(s)/(2s) = \omega(s)/2, this is the claim. Items 1, 2 and 4 are direct. ∎
The hyperbolic potential \varphi(t) = \sqrt{t^2 + \delta^2}, a smooth version of |t| that preserves edges, satisfies item 3 with \omega(s) = 1/\sqrt{s^2 + \delta^2}. So does the Cauchy potential \log(1 + t^2/\delta^2), which is not convex.
Item 3 is the majorant behind the multiplicative half-quadratic form of Geman and Reynolds (1992). The additive form of Geman and Yang (1995) corresponds instead to a majorant of constant curvature, as in item 1.
For a penalty \sum_i \varphi([Dx]_i), item 3 replaces each term by a weighted square, and the MM step solves a weighted least-squares problem: this is iteratively reweighted least squares (IRLS).
Example 5.4 — EM is an MM algorithm Let a model p(y, z; \theta) have a latent variable z, and let q_k(z) = p(z \mid y; \theta_k) be the posterior at the current parameter. By Jensen’s inequality for the concave logarithm: -\log p(y; \theta) = -\log \sum_z q_k(z)\, \frac{p(y, z; \theta)}{q_k(z)} \leq -\sum_z q_k(z) \log \frac{p(y, z; \theta)}{q_k(z)} . Equality holds at \theta = \theta_k, so the right-hand side is a tangent majorant of the negative log-likelihood. Minimizing it is the M-step of EM, and computing q_k is the E-step. Proposition 5.2 recovers the monotonicity of EM, studied in Computational Statistics.
Convergence of quadratic MM
Theorem 5.5 — Convergence of MM with quadratic majorants Let F be continuously differentiable and bounded below, with majorants as in Proposition 5.3, item 2, and \nu I \preceq A(y) \preceq \nu' I for all y, with 0 < \nu \leq \nu'. Then:
- F(x_k) decreases, the gradients are square-summable and \nabla F(x_k) \to 0: \sum_k \|\nabla F(x_k)\|^2 \leq 2\nu' \big(F(x_0) - \inf F\big) ;
- \|x_{k+1} - x_k\| \leq \|\nabla F(x_k)\| / \nu \to 0;
- if F is convex and coercive, every cluster point of (x_k) minimizes F, and F(x_k) \to \min F.
Proof. Write g_k = \nabla F(x_k) and A_k = A(x_k).
- The minimizer of the majorant is x_{k+1} = x_k - A_k^{-1} g_k, and the minimum value is F(x_k) - \frac12 g_k^\top A_k^{-1} g_k.
- Since A_k^{-1} \succeq I / \nu', majorization gives F(x_{k+1}) \leq F(x_k) - \|g_k\|^2 / (2\nu').
- Summing over k bounds \sum_k \|g_k\|^2 by 2\nu'(F(x_0) - \inf F). Item 2 follows from \|A_k^{-1}\| \leq 1/\nu.
- If F is convex and coercive, the iterates stay in a bounded sublevel set. At a cluster point the gradient vanishes by continuity, so it is a minimizer, and the decreasing values converge to \min F. ∎
If moreover \nabla F is Lipschitz and F has the Kurdyka–Łojasiewicz property, which semi-algebraic functions satisfy, every bounded MM sequence converges as a whole, even without convexity (Attouch, Bolte and Svaiter, 2013); see ch. 9.
MM at scale: the memory-gradient subspace method
For a large image, the half-quadratic step solves a linear system with the matrix A(x_k) at every iteration, which is expensive. The subspace method minimizes the same majorant only over a small subspace.
Algorithm 5.6 — 3MG, the MM memory-gradient algorithm At iteration k, form the N \times 2 matrix of directions S_k = [\,-\nabla F(x_k),\; x_k - x_{k-1}\,], then u_k = -\big(S_k^\top A(x_k)\, S_k\big)^{\dagger} S_k^\top \nabla F(x_k), \qquad x_{k+1} = x_k + S_k u_k . The step costs two products by A(x_k) and the solution of a 2 \times 2 system: no large linear system is ever solved.
Proof. Why Theorem 5.5 still applies. The subspace contains -g_k, so the minimum of the majorant over it is at most its minimum along -g_k: F(x_k) - \frac{\|g_k\|^4}{2\, g_k^\top A_k g_k} \leq F(x_k) - \frac{\|g_k\|^2}{2\nu'} . This is the decrease used in step 2 of the proof of Theorem 5.5. Chouzenoux, Idier and Moussaoui (2011) prove the convergence of 3MG under these assumptions and study its speed on image restoration. ∎
The second direction acts as a memory, like the momentum of Algorithm 1.5, but its weight is optimized at each step rather than prescribed.
A separable majorant, with A(y) diagonal, is the other road to scale: Proposition 1.9 builds one from any symmetric matrix. Then every coordinate is updated independently, in parallel, which is how classical multiplicative algorithms such as the non-negative matrix factorization updates of Lee and Seung (2001) work.
Example 5.7 — Edge-preserving denoising A piecewise-constant signal of length 2000 with noise of standard deviation 0.5 is denoised by minimizing F(x) = \tfrac12\|x - y\|^2 + \lambda \sum_i \sqrt{[Dx]_i^2 + \delta^2}, \qquad \lambda = 1, \ \delta = 0.05 . The half-quadratic majorant has A(x) = I + \lambda D^\top W(x) D, with W(x) the diagonal of the weights \omega([Dx]_i). The code compares the exact MM step (a sparse solve), 3MG and gradient descent with the global constant L = 1 + 4\lambda/\delta = 81.
import numpy as np
import scipy.sparse as sp
from scipy.sparse.linalg import spsolve
rng = np.random.default_rng(0)
N, lam, delta = 2000, 1.0, 0.05
x_clean = np.repeat([0.0, 2.0, -1.0, 1.0, 0.0], N // 5)
y = x_clean + 0.5 * rng.standard_normal(N)
D = sp.diags([-np.ones(N - 1), np.ones(N - 1)], [0, 1], shape=(N - 1, N)).tocsr()
phi = lambda t: np.sqrt(t ** 2 + delta ** 2) # hyperbolic (smoothed TV) potential
F = lambda x: 0.5 * np.sum((x - y) ** 2) + lam * phi(D @ x).sum()
grad = lambda x: x - y + lam * (D.T @ ((D @ x) / phi(D @ x)))
weights = lambda x: 1.0 / phi(D @ x) # omega(t) = phi'(t) / t
def mm_halfquadratic(iters): # exact minimisation of the majorant
x = y.copy()
for _ in range(iters):
A = sp.eye(N) + lam * D.T @ sp.diags(weights(x)) @ D
x = spsolve(A.tocsc(), y)
return x
def mm_subspace(iters): # 3MG: majorant minimised on span(-g, x - x_prev)
x, x_prev = y.copy(), y.copy()
for k in range(iters):
g, w = grad(x), weights(x)
S = np.column_stack([-g, x - x_prev]) if k else -g[:, None]
AS = S + lam * (D.T @ (w[:, None] * (D @ S))) # A(x) S without forming A(x)
u = np.linalg.solve(S.T @ AS, -S.T @ g)
x_prev, x = x, x + S @ u
return x
def gradient_descent(iters):
L = 1 + 4 * lam / delta # Lipschitz bound: ||D||^2 <= 4, phi'' <= 1/delta
x = y.copy()
for _ in range(iters):
x = x - grad(x) / L
return x
F_star = F(mm_halfquadratic(300))
gap = lambda x: abs(F(x) - F_star)
for k in (10, 50, 200):
print(f"k={k:4d} MM-HQ {gap(mm_halfquadratic(k)):.2e} "
f"3MG {gap(mm_subspace(k)):.2e} GD {gap(gradient_descent(k)):.2e}")
vals = []
x = y.copy()
for _ in range(10): # MM is monotone: F decreases at every step
A = sp.eye(N) + lam * D.T @ sp.diags(weights(x)) @ D
x = spsolve(A.tocsc(), y)
vals.append(F(x))
print("monotone decrease:", bool(np.all(np.diff(vals) <= 1e-12)))| Iterations | MM, exact step | 3MG | Gradient descent |
|---|---|---|---|
| 10 | 1.3 \times 10^{-2} | 11.8 | 383 |
| 50 | 2.4 \times 10^{-9} | 2.8 \times 10^{-7} | 25.6 |
| 200 | below 10^{-12} | below 10^{-12} | 5.9 \times 10^{-2} |
The exact MM step converges in fewer iterations, but each one solves a sparse system. 3MG needs a few more iterations at the cost of a gradient step, and it is the version that scales to large two-dimensional problems. Gradient descent pays for the global constant L = 81, set by the sharpest edge, while the majorant adapts its curvature locally.
Key takeaways — chapter 5
- MM minimizes a tangent majorant at each step, and the objective decreases monotonically, with or without convexity.
- Majorants come from the descent lemma, curvature matrices, concavity of \varphi(\sqrt{\cdot}) (half-quadratic, IRLS) and Jensen’s inequality (EM).
- With curvature matrices between \nu I and \nu' I, the gradients are square-summable; with convexity and coercivity, MM converges to a minimizer.
- 3MG minimizes the majorant over a two-dimensional memory-gradient subspace: no large system, and, on this example, an objective gap 30 times smaller than gradient descent after 10 iterations and 10^8 times smaller after 50.
6. Stochastic and block-coordinate methods for large data sets
When the objective is an average over n = 10^9 samples, or has 10^9 variables, even one exact gradient is too expensive. This chapter replaces it by a cheap unbiased estimate (stochastic methods) or by a partial derivative (coordinate methods), and measures what is lost and how to recover it.
The objective is a finite sum, as in Example 1.1: F(x) = \frac{1}{n} \sum_{i=1}^n f_i(x) . One full gradient costs n sample gradients: a pass over the data.
Stochastic gradient
Algorithm 6.1 — Stochastic gradient (SGD) Draw i_t uniformly in \{1, \dots, n\} and step along the sample gradient: x_{t+1} = x_t - \gamma_t\, \nabla f_{i_t}(x_t) . The direction is unbiased: its conditional expectation is \nabla F(x_t).
Theorem 6.2 — SGD on a strongly convex function Let F be \mu-strongly convex with minimizer x^\star on a closed convex set X. Run projected SGD, x_{t+1} = P_X(x_t - \gamma_t g_t).
Assume that g_t is unbiased given x_t and that \mathbb{E}\|g_t\|^2 \leq G^2. With \gamma_t = 1/(\mu t), for every t \geq 2: \mathbb{E}\, \|x_t - x^\star\|^2 \leq \frac{2 G^2}{\mu^2\, t} .
Proof. Write a_t = \mathbb{E}\|x_t - x^\star\|^2 and c = G^2/\mu^2.
- The projection is nonexpansive and fixes x^\star, so \|x_{t+1} - x^\star\|^2 \leq \|x_t - x^\star\|^2 - 2\gamma_t \langle g_t, x_t - x^\star \rangle + \gamma_t^2 \|g_t\|^2 .
- Strong convexity and the optimality of x^\star on X give \langle \nabla F(x), x - x^\star \rangle \geq \mu \|x - x^\star\|^2 . Taking expectations: a_{t+1} \leq (1 - 2/t)\, a_t + c / t^2.
- At t = 1 the coefficient of a_1 is negative, so a_2 \leq c, which is the claim at t = 2.
- If a_t \leq 2c/t with t \geq 2, then a_{t+1} \leq c\,(2t - 3)/t^2 \leq 2c/(t + 1), since (2t - 3)(t + 1) \leq 2t^2. ∎
The rate O(1/t) is slow compared with the linear rate of gradient descent, but each step costs 1/n of a pass. The noise is the limit: with a constant step, SGD only reaches a neighborhood of x^\star whose size is proportional to the step and to the variance of the sample gradients.
Proposition 6.3 — Mini-batches divide the variance Let g = \frac1B \sum_{b=1}^B \nabla f_{i_b}(x) with i_1, \dots, i_B independent and uniform. Then \mathbb{E}\, g = \nabla F(x) and \mathbb{E}\, \|g - \nabla F(x)\|^2 = \frac{1}{B}\, \mathbb{E}\, \|\nabla f_{i}(x) - \nabla F(x)\|^2 .
Proof. The terms \nabla f_{i_b}(x) - \nabla F(x) are independent and centred, so the cross terms of the squared norm of their sum vanish in expectation. ∎
The B sample gradients of a mini-batch are independent computations: on B workers, a mini-batch step takes the time of one sample gradient. This is the root of data parallelism (ch. 7).
Variance reduction
The variance of SGD does not vanish at the solution, because the individual gradients \nabla f_i(x^\star) are not zero. Variance-reduced methods correct each sample gradient with a reference point.
Algorithm 6.4 — SVRG (Johnson and Zhang, 2013) At each outer step s, keep a snapshot \tilde x and its full gradient \tilde g = \nabla F(\tilde x). Then run m inner steps x_{t+1} = x_t - \eta\, \big( \nabla f_{i_t}(x_t) - \nabla f_{i_t}(\tilde x) + \tilde g \big), and take as new snapshot one of the inner iterates.
The direction is still unbiased, and its variance tends to zero as both x_t and \tilde x approach x^\star.
Theorem 6.5 — Linear convergence of SVRG Let each f_i be convex and L-smooth and F be \mu-strongly convex. Take \eta < 1/(4L), m large enough that \rho = \frac{1}{\mu \eta\, (1 - 2L\eta)\, m} + \frac{2L\eta}{1 - 2L\eta} < 1, and the new snapshot uniformly among the inner iterates. Then \mathbb{E}\,[F(\tilde x_s) - F(x^\star)] \leq \rho^s\, [F(\tilde x_0) - F(x^\star)] .
Proof. Key step (Johnson and Zhang, 2013, Theorem 1). Smoothness and convexity of each f_i bound the second moment of the corrected direction v_t by the suboptimality of the two points: \mathbb{E}\, \|v_t\|^2 \leq 4L\, \big[ F(x_t) - F(x^\star) + F(\tilde x) - F(x^\star) \big] . Plugging this into the expansion of step 1 of Theorem 6.2, summing over the inner loop and using strong convexity at \tilde x gives the contraction factor \rho. ∎
With \eta = 0.1/L and m = 50 L/\mu, the factor is \rho = \frac{1}{5 \times 0.8} + \frac{0.2}{0.8} = 0.5.
Each outer step costs n + 2m sample gradients. Reaching accuracy \varepsilon therefore costs O((n + L/\mu) \log(1/\varepsilon)) sample gradients, against O(n\, \kappa \log(1/\varepsilon)) for gradient descent: the condition number and the number of samples now add instead of multiplying.
SAGA (Defazio, Bach and Lacoste-Julien, 2014) keeps a table of the last gradient of each f_i instead of a snapshot. It needs no full passes and handles a proximal term.
Example 6.6 — Logistic regression with three methods An \ell_2-regularized logistic regression with n = 5000 samples, d = 20 features and \mu = 10^{-3} is solved with a budget of 20 passes over the data.
- Full gradient descent uses the step 1/L.
- SGD uses 1/(L_{\max} + \mu t), where L_{\max} bounds the smoothness of every f_i.
- SVRG uses \eta = 0.5/L_{\max}, beyond the theoretical 1/(4L_{\max}), as is common in practice. One outer step with m = n costs three passes (a full gradient, then two sample gradients per inner step), so it gets 6 outer steps.
import numpy as np
from scipy.optimize import minimize
rng = np.random.default_rng(0)
n, d, mu = 5000, 20, 1e-3
A = rng.standard_normal((n, d))
b = np.sign(A @ rng.standard_normal(d) + 0.5 * rng.standard_normal(n))
def F(x):
return np.mean(np.logaddexp(0, -b * (A @ x))) + 0.5 * mu * x @ x
def grad_i(x, i): # gradient of the i-th term f_i
s = -b[i] / (1 + np.exp(b[i] * (A[i] @ x)))
return s * A[i] + mu * x
def full_grad(x):
s = -b / (1 + np.exp(b * (A @ x)))
return A.T @ s / n + mu * x
F_star = minimize(F, np.zeros(d), jac=full_grad, method="L-BFGS-B", tol=1e-14).fun
L = np.linalg.norm(A, 2) ** 2 / (4 * n) + mu # smoothness of F
L_max = np.max(np.sum(A ** 2, axis=1)) / 4 + mu # smoothness of the worst f_i
passes = 20 # budget: 20 passes over the data
x = np.zeros(d) # full gradient descent: 1 pass per step
for _ in range(passes):
x -= full_grad(x) / L
gd = F(x) - F_star
x = np.zeros(d) # SGD, decreasing step 1 / (L_max + mu t)
for t, i in enumerate(rng.integers(n, size=passes * n)):
x -= grad_i(x, i) / (L_max + mu * t)
sgd = F(x) - F_star
eta = 0.5 / L_max # SVRG: snapshot every n inner steps
x_tilde, used = np.zeros(d), 0
while used + 3 <= passes: # each outer loop costs 3n sample gradients
g_tilde, x = full_grad(x_tilde), x_tilde.copy()
for i in rng.integers(n, size=n):
x -= eta * (grad_i(x, i) - grad_i(x_tilde, i) + g_tilde)
x_tilde, used = x, used + 3
svrg = F(x_tilde) - F_star
print(f"after {passes} passes: GD {gd:.1e} SGD {sgd:.1e} SVRG {svrg:.1e}")
print(f"condition number L/mu = {L / mu:.0f}, L_max/L = {L_max / L:.1f}")After 20 passes the objective gaps are \text{GD: } 2.5 \times 10^{-2}, \qquad \text{SGD: } 2.0 \times 10^{-3}, \qquad \text{SVRG: } 3.0 \times 10^{-8} . The condition number is 285 and L_{\max}/L = 41.4. SGD makes fast early progress and then stalls on its variance; SVRG keeps the cheap steps and converges linearly.
Randomized block-coordinate descent
When the number of variables is huge, one can update a single block of coordinates at a time. Write x = (x_1, \dots, x_p) in blocks and let L_i be the Lipschitz constant of the block gradient \nabla_i F with respect to changes of block i.
Algorithm 6.7 — Randomized block-coordinate descent Draw a block i_k uniformly in \{1, \dots, p\} and update only that block: x_{i_k} \leftarrow x_{i_k} - \frac{1}{L_{i_k}}\, \nabla_{i_k} F(x) . For a separable term g = \sum_i g_i, the step becomes a block prox: x_{i} \leftarrow \mathrm{prox}_{g_i / L_i}\big(x_i - \nabla_i F(x)/L_i\big) .
Theorem 6.8 — Linear rate of coordinate descent If F is \mu-strongly convex and every L_i \leq L_{\max}, then \mathbb{E}\, [F(x_k)] - F^\star \leq \Big(1 - \frac{\mu}{p\, L_{\max}}\Big)^k \big(F(x_0) - F^\star\big) .
Proof.
- The descent lemma along block i gives F(x^+) \leq F(x) - \|\nabla_i F(x)\|^2 / (2L_{\max}).
- Averaging over the uniform block: \mathbb{E}\, F(x^+) \leq F(x) - \frac{\|\nabla F(x)\|^2}{2 p L_{\max}} .
- Minimizing the strong-convexity lower bound over the second point gives the Polyak–Łojasiewicz inequality: \|\nabla F(x)\|^2 \geq 2\mu\, \big(F(x) - F^\star\big) .
- Combining 2 and 3 gives a contraction by 1 - \mu/(p L_{\max}) in expectation; iterate. ∎
One block step costs about 1/p of a gradient when partial derivatives are cheap, for instance for F(x) = f(Ax) with the residual kept up to date. Per pass, the contraction is about e^{-\mu/L_{\max}}, against e^{-\mu/L} for gradient descent.
Since L_{\max} \leq L \leq p L_{\max}, the gain per pass lies between 1 and p. There is no gain for a separable F, where L = L_{\max}. The gain is largest when the coordinates are strongly coupled, for instance for least squares with highly correlated columns, where L approaches p L_{\max}.
Nesterov (2012) gives the general analysis with non-uniform sampling; the proximal and parallel versions (Richtárik and Takáč, 2014 and 2016) lead to ch. 7.
Key takeaways — chapter 6
- SGD replaces the gradient of a finite sum by one sample gradient; with steps 1/(\mu t) it reaches O(1/t) in expected squared distance.
- Mini-batches divide the variance by the batch size and are computed in parallel.
- SVRG and SAGA remove the variance at the solution and recover a linear rate with total cost O((n + \kappa)\log(1/\varepsilon)).
- Randomized coordinate descent contracts by 1 - \mu/(pL_{\max}) per block step, and beats gradient descent when the coordinate constants are small compared with L.
7. Parallel optimization
A multicore machine or a cluster offers p processors. This chapter asks which parts of an optimization algorithm can run simultaneously, how much time that saves, and what must change in the algorithm when updates happen at the same time.
Architectures and speedup
Definition 7.1 — Parallel architectures and synchronization
- Shared memory (multicore): all threads read and write the same iterate in RAM; communication is cheap, but simultaneous writes conflict.
- Distributed memory (cluster, several GPUs): each node holds its own data and variables and communicates by messages, whose cost is modelled as a fixed latency plus a time per number sent.
- Synchronous algorithms wait at a barrier at each iteration for the slowest worker; asynchronous ones let each worker proceed with possibly outdated information.
Proposition 7.2 — Amdahl’s law If a fraction s of the work is sequential and the rest is perfectly parallel, the speedup on p processors is S(p) = \frac{1}{s + (1 - s)/p} \leq \frac{1}{s} .
Proof. The time on p processors is s\,T + (1 - s)\,T/p, where T is the sequential time. ∎
With s = 0.05 and p = 32, the speedup is only 1/(0.05 + 0.95/32) = 12.5, and no number of processors exceeds 20. The sequential part of an optimization algorithm is typically a reduction (an average, a norm, a step-size computation) or a synchronization.
Proposition 7.3 — Cost of a ring all-reduce To give every one of p workers the sum of their N-dimensional vectors, the ring algorithm sends from each worker \frac{2(p - 1)}{p}\, N \ \text{ numbers, in } 2(p - 1) \text{ steps,} an amount that does not grow with p (Patarasuk and Yuan, 2009).
Proof. Cut each vector into p chunks of size N/p. In a reduce-scatter phase of p - 1 steps, each worker passes one chunk to its neighbour, which adds its own; afterwards each worker owns one fully reduced chunk. An all-gather phase of p - 1 steps circulates the reduced chunks. ∎
Product space and the parallel proximal algorithm
Many problems are sums \sum_{i=1}^m f_i(x) of terms with simple proxes, while the prox of the sum is intractable. The idea is to give each term its own copy of the variable and to force the copies to agree.
Proposition 7.4 — Product-space reformulation On \mathcal{H} = (\mathbb{R}^N)^m, use the inner product \sum_i \omega_i \langle x_i, y_i \rangle, with weights \omega_i > 0 summing to 1.
Let \mathcal{D} = \{(x, \dots, x)\} be the diagonal. Then minimizing \sum_i f_i(x) over \mathbb{R}^N is equivalent to minimizing over \mathcal{H} G(x_1, \dots, x_m) + \iota_{\mathcal{D}}(x_1, \dots, x_m), \qquad G(x_1, \dots, x_m) = \sum_i f_i(x_i) .
- The prox of \gamma G in this geometry acts component by component, with m independent computations: \mathrm{prox}_{\gamma G}(x_1, \dots, x_m) = \big(\mathrm{prox}_{\gamma f_1 / \omega_1}(x_1), \dots, \mathrm{prox}_{\gamma f_m / \omega_m}(x_m)\big) .
- The projection onto \mathcal{D} replaces every component by the weighted average \sum_i \omega_i x_i: one reduction.
Proof. Item 1: the objective of the prox separates over i, \sum_i \Big[f_i(y_i) + \frac{\omega_i}{2\gamma}\|y_i - x_i\|^2\Big], and its i-th term is \frac{\omega_i}{\gamma} times the objective that defines \mathrm{prox}_{\gamma f_i/\omega_i}(x_i). Item 2: \sum_i \omega_i \|y - x_i\|^2 is minimized at the weighted mean. ∎
Algorithm 7.5 — PPXA, the parallel proximal algorithm (Combettes and Pesquet, 2008) Choose \gamma > 0, \lambda \in (0, 2), vectors y_{i,0}, and set x_0 = \sum_i \omega_i y_{i,0}. Iterate:
- in parallel, for each i, compute p_{i,k} = \mathrm{prox}_{\gamma_i f_i}(y_{i,k}) with \gamma_i = \gamma / \omega_i;
- reduction: p_k = \sum_i \omega_i\, p_{i,k};
- in parallel, for each i: y_{i,k+1} = y_{i,k} + \lambda\, (2 p_k - x_k - p_{i,k});
- x_{k+1} = x_k + \lambda\, (p_k - x_k).
Theorem 7.6 — Convergence of PPXA If \sum_i f_i has a minimizer and a qualification condition holds (for instance, the relative interiors of the domains intersect), then x_k converges to a minimizer of \sum_i f_i.
Proof. PPXA is the Douglas–Rachford algorithm (Algorithm 4.4) in \mathcal{H}, with \gamma G in the role of \gamma g and \iota_{\mathcal{D}} in the role of \gamma f. Write y_k = (y_{i,k})_i.
- Step 1 computes \mathrm{prox}_{\gamma G}(y_k): the first prox of Douglas–Rachford.
- By induction from step 4, x_k is the projection of y_k onto \mathcal{D}. This projection is linear, so the projection of 2(p_{i,k})_i - y_k is 2 p_k - x_k: the second prox of Douglas–Rachford.
- Step 3 is then the Douglas–Rachford update of y_k, and Theorem 4.5 applies.
At the limit y^\star, the fixed-point relation shows that the projection of y^\star onto \mathcal{D} equals \mathrm{prox}_{\gamma G}(y^\star), so x_k converges to the same minimizer. ∎
Each iteration costs one prox per term, all simultaneous, and a single reduction of N numbers: one all-reduce in distributed memory (Proposition 7.3).
Example 7.7 — Spike deconvolution with positivity Twelve positive spikes in a signal of length 256 are blurred by a Gaussian kernel and observed with noise. The estimate minimizes the sum of three terms: f_1(x) = \tfrac12 \|Hx - y\|^2, \qquad f_2(x) = \lambda \|x\|_1, \qquad f_3 = \iota_{[0, +\infty)^N} . The prox of f_1 is diagonal in the Fourier basis, the prox of f_2 is soft thresholding, and the prox of f_3 clips at zero. PPXA runs them on three workers; FISTA on f_1 + (f_2 + f_3) gives the reference.
import numpy as np
rng = np.random.default_rng(0)
N, lam = 256, 0.05
x_true = np.zeros(N)
x_true[rng.choice(N, 12, replace=False)] = rng.uniform(0.5, 2.0, 12) # positive spikes
h = np.exp(-0.5 * (np.arange(-8, 9) / 2.5) ** 2); h /= h.sum() # Gaussian blur
Hf = np.fft.fft(np.roll(np.pad(h, (0, N - h.size)), -8)) # circular convolution
H = lambda v: np.real(np.fft.ifft(Hf * np.fft.fft(v)))
Ht = lambda v: np.real(np.fft.ifft(np.conj(Hf) * np.fft.fft(v)))
y = H(x_true) + 0.01 * rng.standard_normal(N)
F = lambda x: 0.5 * np.sum((H(x) - y) ** 2) + lam * np.abs(x).sum() # on x >= 0
# the three proximity operators, each computable on its own core
def prox_data(v, g): # (I + g H^T H)^{-1}(v + g H^T y), diagonal in Fourier
return np.real(np.fft.ifft(np.fft.fft(v + g * Ht(y)) / (1 + g * np.abs(Hf) ** 2)))
prox_l1 = lambda v, g: np.sign(v) * np.maximum(np.abs(v) - g * lam, 0.0)
prox_pos = lambda v, g: np.maximum(v, 0.0)
proxes, w = [prox_data, prox_l1, prox_pos], np.full(3, 1 / 3)
def ppxa(gamma, iters=1000): # Combettes and Pesquet (2008), lambda = 1
z, x = [np.zeros(N) for _ in proxes], np.zeros(N)
for _ in range(iters):
p_i = [prox(zi, gamma / wi) for prox, zi, wi in zip(proxes, z, w)] # parallel step
p = sum(wi * pi for wi, pi in zip(w, p_i)) # reduction
z = [zi + (2 * p - x - pi) for zi, pi in zip(z, p_i)]
x = p
return x
v, t, u = np.zeros(N), 1.0, np.zeros(N) # reference: FISTA with prox of l1 + positivity
for _ in range(20000):
v_new = np.maximum(u - Ht(H(u) - y) - lam, 0.0) # here L = max |Hf|^2 = 1
t_new = (1 + np.sqrt(1 + 4 * t * t)) / 2
u, v, t = v_new + (t - 1) / t_new * (v_new - v), v_new, t_new
print(f"FISTA reference: F = {F(v):.6f}")
for gamma in (0.2, 1.0, 10.0):
x = ppxa(gamma)
print(f"PPXA gamma={gamma:5.1f}: F - F_ref = {F(x) - F(v):.1e}, "
f"relative distance {np.linalg.norm(x - v) / np.linalg.norm(v):.1e}")After 1000 iterations, the relative distance to the reference solution depends strongly on \gamma:
| \gamma | F - F_{\mathrm{ref}} | relative distance |
|---|---|---|
| 0.2 | 4.8 \times 10^{-3} | 0.51 |
| 1 | 1.2 \times 10^{-4} | 0.24 |
| 10 | 3.2 \times 10^{-6} | 1.5 \times 10^{-4} |
Theorem 7.6 holds for every \gamma > 0, but the speed does not: tuning \gamma to the scale of the problem is part of using any Douglas–Rachford-type method.
Parallel coordinate descent
Coordinate descent (Algorithm 6.7) is sequential: each step uses the latest iterate. Updating \tau blocks at once, one per core, is natural, but the simultaneous steps are all computed from the same point and can overshoot when the blocks interact.
Algorithm 7.8 — Parallel block-coordinate descent At each iteration, draw a set S_k of \tau blocks uniformly among the subsets of size \tau (a \tau-nice sampling) and update them simultaneously, with a damping factor \beta \geq 1: x_i \leftarrow x_i - \frac{1}{\beta L_i} \nabla_i F(x) \qquad \text{for all } i \in S_k .
Theorem 7.9 — Safe damping and parallel speedup Let F = \sum_j \phi_j where each \phi_j depends on at most \omega of the p blocks (partial separability of degree \omega). Richtárik and Takáč (2016) show that Algorithm 7.8 converges with \beta = 1 + \frac{(\omega - 1)(\tau - 1)}{\max(1, p - 1)}, and that its iteration complexity is that of serial coordinate descent divided by about \tau / \beta.
Proof. Key step. The damping makes the update satisfy an expected separable overapproximation. The expected value of F after the parallel step is bounded by F(x), plus \tau/p times the first-order term, plus \tau/p times a block-diagonal quadratic term weighted by \beta L_i.
From there, the proof of Theorem 6.8 goes through with \tau blocks per step and constants multiplied by \beta. ∎
The speedup \tau / \beta depends on the coupling:
- with p = 10^6 blocks, \tau = 32 cores and sparse coupling \omega = 10, \beta \approx 1.0003: the speedup is almost 32;
- with a dense problem, \omega = p, \beta = \tau: no speedup at all;
- with \omega = p/2, \beta \approx 16.5 and the speedup is about 2.
Exercise 12 shows on a small example why \beta = 1 can diverge.
Data parallelism and asynchrony
In data parallelism, each of p workers holds a shard of the data, computes the gradient of its part of the loss, and an all-reduce averages the gradients. With equal shards, this is exactly one mini-batch step (Proposition 6.3): the theory of ch. 6 applies unchanged, and only the communication of Proposition 7.3 is added.
Example 7.10 — Data-parallel training gives the same iterates A logistic regression is trained with full-batch gradient descent, once on one worker and once on four simulated workers whose gradients are averaged.
import torch
torch.set_num_threads(1)
torch.manual_seed(0)
n, d, workers = 4000, 30, 4
X = torch.randn(n, d)
y = (X @ torch.randn(d) + 0.3 * torch.randn(n) > 0).float()
loss_fn = torch.nn.BCEWithLogitsLoss()
def train(n_workers, steps=200, lr=0.5):
model = torch.nn.Linear(d, 1)
torch.nn.init.zeros_(model.weight); torch.nn.init.zeros_(model.bias)
shards = torch.arange(n).chunk(n_workers) # data parallelism: one shard per worker
for _ in range(steps):
grads = []
for idx in shards: # in practice: one process / GPU each
model.zero_grad()
loss_fn(model(X[idx]).squeeze(1), y[idx]).backward()
grads.append([p.grad.clone() for p in model.parameters()])
with torch.no_grad(): # all-reduce: average the gradients
for j, p in enumerate(model.parameters()):
p -= lr * sum(g[j] for g in grads) / n_workers
return torch.cat([p.detach().flatten() for p in model.parameters()])
w1, w4 = train(1), train(workers)
print(f"max |w(1 worker) - w({workers} workers)| = {(w1 - w4).abs().max():.1e}")After 200 steps the two parameter vectors differ by 2.4 \times 10^{-7}, the rounding error of single precision. In a real run, the inner loop is replaced by one process per GPU and the average by an all-reduce, for instance with torch.distributed.
Asynchronous methods remove the barrier. Hogwild! (Recht et al., 2011) lets threads update a shared iterate without locks; it converges for sparse problems where conflicting writes are rare.
ARock (Peng et al., 2016) runs asynchronous block updates of a Krasnosel’skii–Mann iteration (Theorem 4.3) with delays of at most \tau iterations; here \tau is a delay, not the number of blocks of Algorithm 7.8. Its step size must shrink with the delay, roughly in proportion to 1/(1 + 2\tau/\sqrt{p}) for p blocks: asynchrony is almost free when \tau is small compared with \sqrt{p}. Exercise 15 computes the exact stability limit of a delayed gradient step on a quadratic.
Key takeaways — chapter 7
- Amdahl’s law bounds the speedup by the inverse of the sequential fraction; the ring all-reduce costs 2(p-1)N/p numbers per worker, nearly independent of p.
- In a product space, a sum of proximable functions becomes a separable function plus a consensus constraint; PPXA is Douglas–Rachford there, with all proxes in parallel and one average per iteration.
- Parallel coordinate steps must be damped by \beta = 1 + (\omega - 1)(\tau - 1)/(p - 1); the speedup \tau/\beta is large only when the coupling degree \omega is small.
- Synchronous data parallelism is mini-batch gradient descent; asynchronous methods trade staleness for the removal of barriers and need steps that shrink with the delay.
8. Distributed optimization strategies
Now the data are split among m agents (machines, hospitals, phones) that cannot or must not pool them, because of size, privacy or regulation. Agent i holds a private function f_i, and together they must solve \min_{x \in \mathbb{R}^N} \; \sum_{i=1}^m f_i(x) . Communication, not computation, is the bottleneck. Two topologies are common: a star, where agents talk to a server, and a graph, where they only talk to their neighbours.
Star topology: consensus ADMM
Copy the variable on every agent and add the consensus constraint x_i = z. ADMM (Algorithm 4.6) on this formulation gives a method where each agent solves a local problem and the server only averages.
Algorithm 8.1 — Consensus ADMM (Boyd et al., 2011, ch. 7) With \rho > 0: x_i^{k+1} = \mathrm{prox}_{f_i/\rho}\big(z^k - u_i^k\big) \ \text{ (on each agent)}, \qquad z^{k+1} = \frac1m \sum_{i=1}^m \big(x_i^{k+1} + u_i^k\big) \ \text{ (server)}, u_i^{k+1} = u_i^k + x_i^{k+1} - z^{k+1} \ \text{ (on each agent)} .
Convergence is Theorem 4.7, with f(x_1, \dots, x_m) = \sum_i f_i(x_i), g = 0 and the constraint x_i - z = 0. Each round costs one local prox per agent and one exchange of N numbers with the server. The data never leave the agents.
Graph topology: gossip
Definition 8.2 — Mixing matrix On a connected graph with m nodes, a mixing matrix W \in \mathbb{R}^{m \times m} is symmetric, satisfies W \mathbf{1} = \mathbf{1}, and has W_{ij} = 0 when i \neq j are not neighbours. Its second largest eigenvalue in absolute value, \lambda = \max(|\lambda_2(W)|, |\lambda_m(W)|), must be smaller than 1.
The Metropolis–Hastings weights W_{ij} = 1/(1 + \max(d_i, d_j)) on each edge, with the diagonal completing each row to 1, satisfy these conditions on any connected graph.
Proposition 8.3 — Gossip averaging If every agent repeatedly replaces its value by the W-weighted average of its neighbours’, x^{k+1} = W x^k, then the values converge to their mean \bar x: \|x^k - \bar x \mathbf{1}\| \leq \lambda^k\, \|x^0 - \bar x \mathbf{1}\| .
Proof. Since \mathbf{1}^\top W = \mathbf{1}^\top, the mean is preserved. The error x^k - \bar x \mathbf{1} is orthogonal to \mathbf{1}, a subspace that the symmetric W maps to itself, with eigenvalues \lambda_2, \dots, \lambda_m. Each step shrinks the error by at least \lambda. ∎
Example 8.4 — A ring of 10 agents On a ring, every degree is 2, so the Metropolis weights are all 1/3. The eigenvalues are \frac13 + \frac23 \cos(2\pi k / m), and for m = 10: \lambda = \tfrac13 + \tfrac23 \cos 36° = 0.873 . Reducing the disagreement by 10^{6} takes \ln(10^6) / (-\ln 0.873) \approx 102 rounds. Since 1 - \lambda \approx 4\pi^2 / (3 m^2), the number of rounds grows like m^2 on a ring: sparse graphs mix slowly.
Decentralized gradient descent and its bias
Algorithm 8.5 — Decentralized gradient descent (DGD) Each agent mixes with its neighbours, then takes a local gradient step (Nedić and Ozdaglar, 2009): x_i^{k+1} = \sum_j W_{ij}\, x_j^k - \alpha\, \nabla f_i(x_i^k) . In matrix form, with the rows of X holding the x_i: X^{k+1} = W X^k - \alpha\, \nabla f(X^k).
Proposition 8.6 — DGD minimizes a penalized problem With a constant step \alpha, DGD is gradient descent with step \alpha on J_\alpha(X) = \sum_i f_i(x_i) + \frac{1}{2\alpha}\, \mathrm{tr}\big(X^\top (I - W) X\big) . Its fixed points minimize J_\alpha. They are not consensual unless all the f_i share a minimizer.
Proof. The gradient of J_\alpha is \nabla f(X) + (I - W)X/\alpha, and X - \alpha \nabla J_\alpha(X) = WX - \alpha \nabla f(X).
At a consensual point X = \mathbf{1} x^\top, (I - W) X = 0. A consensual fixed point therefore needs \nabla f_i(x) = 0 for every i separately. ∎
The disagreement is penalized with weight 1/\alpha, so the bias shrinks with the step (Yuan, Ling and Yin, 2016). Decreasing steps remove it, but slowly.
Gradient tracking
Algorithm 8.7 — Gradient tracking Each agent keeps an estimate s_i of the average gradient and mixes it like the iterates (Nedić, Olshevsky and Shi, 2017; Qu and Li, 2018). With S^0 = \nabla f(X^0): X^{k+1} = W X^k - \alpha\, S^k, \qquad S^{k+1} = W S^k + \nabla f(X^{k+1}) - \nabla f(X^k) .
Proposition 8.8 — Tracking invariant and exact fixed points
- For every k, \mathbf{1}^\top S^k = \mathbf{1}^\top \nabla f(X^k): the average of the s_i is the average gradient.
- Every fixed point has the form X = \mathbf{1} x^{\star\top} with \sum_i \nabla f_i(x^\star) = 0.
Proof. Item 1: induction, using \mathbf{1}^\top W = \mathbf{1}^\top.
Item 2: at a fixed point, S = WS, so the columns of S are in the eigenspace of W for the eigenvalue 1: S = \mathbf{1} s^\top. The first equation gives (I - W)X = -\alpha \mathbf{1} s^\top.
Multiplying by \mathbf{1}^\top gives s = 0, then (I - W)X = 0, so X is consensual. Item 1 then says that the sum of the local gradients vanishes. ∎
With strongly convex smooth f_i and a small enough step, gradient tracking converges linearly to the exact solution (Nedić, Olshevsky and Shi, 2017). EXTRA (Shi et al., 2015) reaches the same goal with a correction based on two successive mixing matrices.
Example 8.9 — Least squares on a ring of 10 agents Each agent holds 40 private samples of a linear model whose parameter differs from agent to agent. The code compares DGD with three steps, gradient tracking and consensus ADMM.
import numpy as np
import networkx as nx
rng = np.random.default_rng(0)
m, d, n_loc = 10, 5, 40 # 10 agents, 40 private samples each
G = nx.cycle_graph(m) # communication graph: a ring
A = [rng.standard_normal((n_loc, d)) for i in range(m)]
b = [Ai @ rng.normal(1, 1, d) + 0.1 * rng.standard_normal(n_loc) for Ai in A] # heterogeneous
grad = lambda i, x: A[i].T @ (A[i] @ x - b[i]) # f_i(x) = 0.5 ||A_i x - b_i||^2
x_star = np.linalg.lstsq(np.vstack(A), np.concatenate(b), rcond=None)[0]
W = np.zeros((m, m)) # Metropolis-Hastings mixing matrix
for i, j in G.edges:
W[i, j] = W[j, i] = 1 / (1 + max(G.degree[i], G.degree[j]))
W += np.diag(1 - W.sum(axis=1))
lam2 = np.sort(np.abs(np.linalg.eigvals(W)))[-2]
print(f"second largest |eigenvalue| of W: {lam2:.3f}")
L = max(np.linalg.norm(Ai, 2) ** 2 for Ai in A)
T = 3000
for c in (0.2, 0.1, 0.05): # DGD: mix, then local gradient step
X, alpha = np.zeros((m, d)), c / L
for _ in range(T):
X = W @ X - alpha * np.array([grad(i, X[i]) for i in range(m)])
print(f"DGD, alpha={c}/L: max_i ||x_i - x*|| = {np.linalg.norm(X - x_star, axis=1).max():.2f}")
alpha = 0.1 / L
X = np.zeros((m, d)) # gradient tracking
g_old = np.array([grad(i, X[i]) for i in range(m)]); S = g_old.copy()
for _ in range(T):
X = W @ X - alpha * S
g_new = np.array([grad(i, X[i]) for i in range(m)])
S, g_old = W @ S + g_new - g_old, g_new
print(f"gradient tracking, 0.1/L: max_i ||x_i - x*|| = {np.linalg.norm(X - x_star, axis=1).max():.1e}")
rho = 50.0 # consensus ADMM with a central averaging step
X, U, z = np.zeros((m, d)), np.zeros((m, d)), np.zeros(d)
solves = [np.linalg.inv(Ai.T @ Ai + rho * np.eye(d)) for Ai in A]
for _ in range(50):
X = np.array([solves[i] @ (A[i].T @ b[i] + rho * (z - U[i])) for i in range(m)])
z = (X + U).mean(axis=0)
U += X - z
print(f"consensus ADMM, 50 rounds: ||z - x*|| = {np.linalg.norm(z - x_star):.1e}")| Method (3000 rounds unless stated) | Largest distance to x^\star |
|---|---|
| DGD, \alpha = 0.2/L | 0.67 |
| DGD, \alpha = 0.1/L | 0.42 |
| DGD, \alpha = 0.05/L | 0.24 |
| Gradient tracking, \alpha = 0.1/L | 2.7 \times 10^{-15} |
| Consensus ADMM, 50 rounds | 1.0 \times 10^{-12} |
The mixing matrix has \lambda = 0.873, as in Example 8.4. The bias of DGD shrinks with the step, as Proposition 8.6 predicts, while gradient tracking is exact. Consensus ADMM is fastest, but it needs a server and exact local solves.
Federated learning
In federated averaging (McMahan et al., 2017), each client runs several local SGD steps before the server averages the models, to save communication rounds. With heterogeneous clients, the local steps drift toward the local minimizers, and the fixed point is biased: Exercise 14 computes the bias on two quadratics.
SCAFFOLD (Karimireddy et al., 2020) corrects the drift with control variates, much as gradient tracking corrects DGD. On the theory side, Scaman et al. (2017) characterize the optimal number of communication rounds for smooth strongly convex problems on a network: it grows with the square root of the condition number and with the inverse square root of the spectral gap of the gossip matrix.
Key takeaways — chapter 8
- With a server, consensus ADMM alternates local proxes and one average per round, and keeps the data local.
- On a graph, gossip contracts the disagreement by \lambda = \max(|\lambda_2|, |\lambda_m|) per round; on a ring 1 - \lambda is of order 1/m^2.
- DGD with a constant step is gradient descent on a penalized problem: biased by O(\alpha) when the local functions differ.
- Gradient tracking makes each agent track the average gradient, and its fixed points are exactly the solutions; federated methods face the same drift and the same cure.
9. Research directions and open problems
This self-study chapter surveys active questions around the course. It names only work whose authors and year are given in the references, and it does not try to be exhaustive.
Beyond convexity
Many imaging and learning models are non-convex: sparsity-inducing penalties such as \ell_0 or Cauchy potentials, matrix factorizations, neural networks. The Kurdyka–Łojasiewicz (KL) inequality has become the standard tool to prove that a whole sequence of iterates converges, not only that its gradients vanish.
- Attouch, Bolte and Svaiter (2013) give an abstract framework: sufficient decrease, a relative error condition and the KL property imply convergence of descent methods, including forward–backward.
- Bolte, Sabach and Teboulle (2014) build PALM, an alternating proximal linearized method for non-convex, non-smooth problems in two blocks of variables.
- Chouzenoux, Pesquet and Repetti (2014, 2016) extend forward–backward to variable metrics derived from MM majorants and to block-coordinate updates, under the KL property.
Open question: beyond convergence, which non-convex structures give explicit rates or guarantee convergence to a global minimizer?
Stochastic, incremental and randomized splitting
The deterministic splitting methods of ch. 4 touch all the data at each iteration. Several lines of work randomize them.
- Mairal (2015) proposes incremental MM: each step updates the majorant of one term of a finite sum, which brings the MM principle to large data sets.
- Combettes and Pesquet (2015) prove the convergence of block-coordinate fixed-point iterations in which a random subset of blocks is updated at each step, which covers randomized versions of forward–backward and Douglas–Rachford.
- Pesquet and Repetti (2015) and Bianchi, Hachem and Iutzeler (2016) derive randomized and asynchronous primal–dual algorithms for distributed optimization, in which each agent wakes up at random times and only talks to its neighbours.
The survey of Sun, Babu and Palomar (2017) covers MM in signal processing, communications and machine learning; Komodakis and Pesquet (2015) and Condat et al. (2023) survey primal–dual and splitting methods. Davis and Yin (2017) add a third operator to Douglas–Rachford, so that a smooth term enters through its gradient only.
Learning the algorithm: unrolling
Gregor and LeCun (2010) observed that a fixed number of ISTA iterations is a neural network whose weights can be learned: LISTA reaches a given accuracy with far fewer layers than ISTA needs iterations. Monga, Li and Eldar (2021) survey this algorithm unrolling. Bertocchi et al. (2020) unfold a proximal interior-point method for image restoration, learning its step sizes and regularization parameters.
Open questions: what guarantees (stability, robustness to the forward model, convergence as the depth grows) can an unrolled network keep from the algorithm it comes from?
Communication-efficient distributed learning
- Lian et al. (2017) show that decentralized SGD can match centralized mini-batch SGD while avoiding the bottleneck of a server.
- Koloskova et al. (2020) give a unified analysis of decentralized SGD with changing topologies and local updates.
- Alistarh et al. (2017) quantize gradients (QSGD) to cut the number of bits sent, with convergence guarantees.
- Mishchenko et al. (2022) show with ProxSkip that communicating only at random steps, with a control variate on the local updates, reduces the number of communication rounds from order \kappa to order \sqrt{\kappa} (times a logarithm) in the strongly convex case.
- Kairouz et al. (2021) collect the open problems of federated learning: heterogeneity of clients, privacy, robustness to faulty or adversarial clients, fairness.
Open problems
- Tuning without knowledge of the problem. Douglas–Rachford, ADMM and PPXA converge for every step \gamma > 0, but their speed varies by orders of magnitude (Example 7.7). Adaptive and parameter-free rules with guarantees remain an active topic.
- Heterogeneity versus communication. The bias of local steps (Exercise 14) and of decentralized gradients (Proposition 8.6) can be corrected, but the optimal trade-off between local computation and communication under strong heterogeneity and non-convexity is not settled.
- Asynchrony with non-smooth and non-convex terms. Bounded-delay analyses exist for convex fixed-point iterations; extending them to the non-convex settings of deep learning, with realistic delays, is open.
- MM for very large models. Majorants with cheap minimizers are well understood for imaging; building them for deep networks, where curvature varies widely between layers, is a natural but difficult direction.
Key takeaways — chapter 9
- The Kurdyka–Łojasiewicz property extends the convergence of forward–backward, MM and alternating methods to non-convex problems.
- Incremental, randomized and asynchronous versions of MM and of splitting algorithms bring them to large data sets and to networks.
- Unrolling turns iterations into trainable layers; distributed learning trades computation, communication and accuracy, with heterogeneity as the central difficulty.
Exercises
Levels: ★ apply the course, ★★ combine results or prove a short statement, ★★★ open-ended or research-flavoured. Exercises 6, 13, 14 and 15 are computational.
★ Proximity operators by hand. Compute:
- the prox of |\cdot| (\gamma = 1) at v = 3, -0.4 and 1.2;
- the prox of \gamma f for f(x) = \frac{a}{2} x^2 on \mathbb{R}, with a > 0;
- the prox of \gamma \|\cdot\|_2 at v = (3, 4), for \gamma = 1 and \gamma = 6;
- the projection of (2, -0.5, 0.3) onto [0, 1]^3.
Solution: (a) soft thresholding gives 2, 0 and 0.2. (b) Setting the derivative of \frac{a}{2}x^2 + \frac{1}{2\gamma}(x - v)^2 to zero gives \mathrm{prox}_{\gamma f}(v) = \frac{v}{1 + \gamma a} .
Here \|v\| = 5. For \gamma = 1 the result is (1 - \frac15)(3, 4) = (2.4, 3.2); for \gamma = 6 \geq 5 it is 0 (Example 2.3, item 4).
Clipping each coordinate gives (1, 0, 0.3).
★ Step sizes and iteration counts. Let f(x) = \frac12 x^\top Q x - c^\top x with Q = \mathrm{diag}(1, 100). Give L, \mu and \kappa. How many iterations of gradient descent with step 1/L guarantee, by Theorem 0.7, \|x_k - x^\star\|^2 \leq 10^{-6}\, \|x_0 - x^\star\|^2 \, ? Compare with the order (1 - 1/\sqrt{\kappa})^k of the accelerated method.
Solution: L = 100, \mu = 1, \kappa = 100. Theorem 0.7 needs 0.99^k \leq 10^{-6}: k \geq \frac{\ln 10^6}{-\ln 0.99} = \frac{13.82}{0.01005} \approx 1375 . For the accelerated rate, 0.9^k \leq 10^{-6} gives k \geq 13.82 / 0.1054 \approx 132: ten times fewer, the factor \sqrt{\kappa}.
★ The Huber function. Derive the Moreau envelope of |\cdot| (Example 2.8) from Proposition 2.2, and check the gradient formula of Proposition 2.7. Evaluate the envelope and its gradient for \gamma = 0.5 at v = 0.2 and v = 2.
Solution: for |v| \leq \gamma the prox is 0 and the value v^2/(2\gamma). Otherwise the prox is v - \gamma\,\mathrm{sign}(v) and the value |v| - \gamma/2.
The gradient (v - \mathrm{prox}(v))/\gamma is v/\gamma in the first case and \mathrm{sign}(v) in the second: it is continuous and \frac1\gamma-Lipschitz.
With \gamma = 0.5, at v = 0.2 the value is 0.04 and the gradient 0.4. At v = 2 the value is 1.75 and the gradient 1.
★ One forward–backward step by hand. In the lasso, take A = \mathrm{diag}(2, 1), b = (4, 0.5) and \lambda = 1. Compute L, one ISTA step from x_0 = 0, and the objective before and after. Check optimality with Example 0.4.
Solution: L = \|A\|^2 = 4. The gradient at 0 is -A^\top b = (-8, -0.5), so the forward step gives (2, 0.125). Soft thresholding at \lambda / L = 0.25 gives x_1 = (1.75,\ 0) . The objective goes from 8.125 to 0.5\,(0.25 + 0.25) + 1.75 = 2.
Optimality: A^\top(b - Ax_1) = (1, 0.5). The first coordinate equals \lambda\,\mathrm{sign}(1.75), and the second satisfies |0.5| \leq \lambda where the solution is zero. So x_1 is optimal: one step suffices because the first coordinate has curvature exactly L.
★ Gossip on a path of three agents. Write the Metropolis–Hastings matrix of the path 1 - 2 - 3, its eigenvalues and \lambda. Starting from x^0 = (3, 0, 0), compute two gossip rounds and the error norms. How many rounds reduce the error by 10^6?
Solution: the degrees are 1, 2, 1, every edge weight is 1/3, and W = \begin{pmatrix} 2/3 & 1/3 & 0 \\ 1/3 & 1/3 & 1/3 \\ 0 & 1/3 & 2/3 \end{pmatrix} . The eigenvalues are 1, then 2/3 with eigenvector (1, 0, -1), then 0 with eigenvector (1, -2, 1), so \lambda = 2/3.
The rounds give x^1 = (2, 1, 0) and x^2 = (5/3, 1, 1/3). The error norms are \sqrt6 \approx 2.45, \sqrt2 \approx 1.41 and \sqrt{8}/3 \approx 0.94.
From round 1 on, the error is an eigenvector and shrinks by exactly 2/3 per round. A reduction by 10^6 needs 13.82/\ln 1.5 \approx 35 rounds.
★ Randomized coordinate descent for the lasso, in Python. On the lasso of Example 3.8, implement coordinate descent with soft thresholding (Algorithm 6.7 with g = \lambda\|\cdot\|_1), keeping the residual r = Ax - b up to date. After 1, 10 and 50 epochs of d coordinate steps, compare with the same number of ISTA iterations.
Hints and expected result: the step on coordinate j is a soft thresholding at \lambda/L_j of x_j - a_j^\top r / L_j, with L_j = \|a_j\|^2 \approx 1. It is followed by the update r \leftarrow r + a_j\,\Delta x_j, and one epoch costs about one ISTA iteration.
Drawing the coordinates with the generator
rngthat made the data, the gaps are about 1.9 and 0.47 after 1 and 10 epochs, against 2.7 and 0.52 for ISTA. After 50 epochs, coordinate descent is near 2 \times 10^{-5} while ISTA is still at 0.29: the coordinate constants are about 1, while L \approx 6.5 (Theorem 6.8).Other seeds give between 1.1 and 1.8 after one epoch, and anywhere between 10^{-9} and 6 \times 10^{-3} after 50 epochs: average several runs before drawing conclusions.
★★ The prox of the Euclidean norm, by Moreau’s identity. Prove the formula of Example 2.3, item 4, with Theorem 2.6. Deduce the prox of a group-lasso penalty \sum_g \|x_g\|_2 over disjoint groups.
Solution: the conjugate of \|\cdot\|_2 is the indicator of the unit Euclidean ball B (Example 0.9), and \gamma^{-1}\iota_B = \iota_B. Theorem 2.6 gives \mathrm{prox}_{\gamma \|\cdot\|_2}(v) = v - \gamma P_B(v/\gamma) . If \|v\| \leq \gamma, then P_B(v/\gamma) = v/\gamma and the prox is 0. Otherwise P_B(v/\gamma) = v/\|v\|, and the prox is (1 - \gamma/\|v\|)\,v.
For disjoint groups the penalty is separable, and the prox applies this shrinkage group by group (Example 2.3, item 5).
★★ Fixed points do not depend on the step, stability does. Take f(x) = \frac{L}{2}x^2 on \mathbb{R} and g = 0.
- Show that forward–backward diverges for every x_0 \neq 0 when \gamma > 2/L, although 0 is a fixed point for every \gamma.
- Show that the forward–backward operator is nonexpansive exactly when \gamma \leq 2/L, and averaged when \gamma < 2/L.
Solution: (a) x_{k+1} = (1 - \gamma L)\, x_k, and |1 - \gamma L| > 1 when \gamma > 2/L. The fixed-point equation x = (1 - \gamma L)x has the unique solution 0 for every \gamma > 0 (Proposition 3.2).
- The operator is multiplication by 1 - \gamma L, nonexpansive when |1 - \gamma L| \leq 1. For \gamma < 2/L it equals (1 - \alpha) I + \alpha (-I) with \alpha = \gamma L / 2 < 1, as Proposition 4.2 predicts.
★★ Iteratively reweighted least squares as MM. Derive the MM iteration given by the half-quadratic majorant (Proposition 5.3, item 3) for F(x) = \tfrac12\|Ax - b\|^2 + \lambda \sum_i \sqrt{x_i^2 + \delta^2} . Run it by hand in the scalar case A = 1, b = 2, \lambda = 1, \delta = 0.1, from x_0 = 2, and compare the limit with the lasso solution (\delta = 0).
Solution: with \omega(s) = 1/\sqrt{s^2 + \delta^2} and W_k = \mathrm{diag}(\omega(x_{k,i})), the majorant is a quadratic in x, minimized by x_{k+1} = \big(A^\top A + \lambda W_k\big)^{-1} A^\top b . In the scalar case, x_{k+1} = 2 / (1 + 1/\sqrt{x_k^2 + 0.01}). The iterates are 1.334, 1.144, 1.069, 1.036, and they decrease monotonically to 1.0049. The lasso solution is the soft thresholding of 2 at 1, that is 1.
As \delta \to 0, the weights 1/|x_i| blow up at zero coordinates: an exact zero can never leave zero, which is why \delta > 0 is kept.
★★ ADMM for the lasso at scale. Derive the three updates of Example 4.8 from Algorithm 4.6. When A is n \times d with n \ll d, show how to perform the x-update with one factorization of an n \times n matrix, and give the cost per iteration.
Solution: Algorithm 4.6 with f(x) = \frac12\|Ax - b\|^2, g = \lambda\|\cdot\|_1 and the constraint x - z = 0 gives the x-step of Example 4.8.
The z-step is soft thresholding of x_{k+1} + u_k at \lambda/\rho, and u accumulates x_{k+1} - z_{k+1}.
The matrix inversion lemma gives (A^\top A + \rho I)^{-1} = \frac1\rho \Big( I - A^\top (\rho I + A A^\top)^{-1} A \Big) . Factorizing \rho I + AA^\top costs O(n^2 d) once. Each iteration then costs O(nd): two products by A or A^\top, and two triangular solves of size n.
★★ The bias of DGD on two agents. Let f_1(x) = \frac12 (x - a)^2 and f_2(x) = \frac12 (x + a)^2, so that x^\star = 0, and let W have off-diagonal entries w \in (0, \frac12].
Find the fixed point of DGD with step \alpha and check it against Proposition 8.6. Evaluate it for a = 1, w = 0.25 and \alpha = 0.1.
Solution: by symmetry, the fixed point is (s, -s). The first equation reads s = (1 - w)s - ws - \alpha(s - a), hence s = \frac{\alpha a}{2w + \alpha} . Minimizing the penalized function of Proposition 8.6 gives the same point: J_\alpha(x_1, x_2) = \tfrac12(x_1 - a)^2 + \tfrac12(x_2 + a)^2 + \tfrac{w}{2\alpha}(x_1 - x_2)^2 . With the numbers, s = 0.1/0.6 = 1/6: each agent is off by 0.17. For small \alpha, the error is of order \alpha a / (2w).
★★ Why parallel coordinate steps need damping. Let F(x) = \frac12 (\mathbf{1}^\top x)^2 on \mathbb{R}^p, so that every coordinate constant is L_i = 1, and write s = \mathbf{1}^\top x.
- Run Algorithm 7.8 with \tau coordinates and \beta = 1, and show that s^+ = (1 - \tau)s.
- Compute \beta from Theorem 7.9 and show that the method then converges in one step.
- For p = 1000, \tau = 32 and \omega = 4, compute \beta and the speedup.
Solution: (a) \nabla_i F(x) = s for every i, so each updated coordinate loses s/\beta, and s^+ = (1 - \tau/\beta)s.
With \beta = 1 and \tau \geq 3, the factor satisfies |1 - \tau| > 1: the method diverges.
Every term couples all coordinates, so \omega = p and \beta = 1 + (p - 1)(\tau - 1)/(p - 1) = \tau. Then s^+ = 0: a minimizer.
\beta = 1 + 3 \times 31/999 \approx 1.093, and the speedup is 32/1.093 \approx 29.
★★ Spectral gap of rings, in Python. With NetworkX, build the Metropolis–Hastings matrix of rings with m = 10, 20, 40, 80 agents, compute 1 - \lambda and compare with 4\pi^2/(3m^2). Repeat for a \sqrt m \times \sqrt m torus and a complete graph, and estimate how the number of gossip rounds of Example 8.4 scales with m.
Hints and expected result: for the rings, 1 - \lambda is 0.1273, 0.0326, 0.0082 and 0.0021, against the approximations 0.1316, 0.0329, 0.0082 and 0.0021. The rounds grow like m^2 on a ring.
For a torus, 1 - \lambda decays like 1/m, so the rounds grow like m.
On a complete graph, the Metropolis weights are all 1/m, W is the averaging matrix and \lambda = 0. One round suffices, at the price of m - 1 messages per agent.
★★★ Client drift in federated averaging. Two clients hold f_i(x) = \frac{c_i}{2}(x - a_i)^2. Each round, both start from the server value x and run K gradient steps of size \eta on their own f_i; the server then averages the results.
- Find the fixed point and compare it with x^\star = \sum_i c_i a_i / \sum_i c_i.
- Evaluate for c = (1, 4), a = (0, 1), \eta = 0.1, K = 10, and check by simulation.
- Propose and test a correction.
Hints and expected result: (a) with q_i = (1 - \eta c_i)^K, client i returns a_i + q_i(x - a_i), and the fixed point is \hat x = \frac{\sum_i (1 - q_i)\, a_i}{\sum_i (1 - q_i)} . It equals x^\star for K = 1, where 1 - q_i = \eta c_i, but not in general.
q = (0.349, 0.006), so \hat x = 0.604 while x^\star = 0.8; a simulation of 500 rounds converges to 0.6041.
A control variate in the spirit of SCAFFOLD (Karimireddy et al., 2020) adds \nabla F(x) - \nabla f_i(x), computed at the start of the round, to every local gradient. The fixed point becomes exact; with the numbers of (b), the error is multiplied by about -0.12 per round, against 0.75 for plain gradient steps with K = 1.
★★★ How much delay can a gradient step tolerate? Asynchronous workers apply gradients computed on stale iterates. On f(x) = \frac{L}{2}x^2, consider the delayed iteration x_{k+1} = x_k - \gamma L\, x_{k - \tau} .
- For \tau = 1, show that the iteration is stable exactly when \gamma < 1/L.
- Check numerically, with the roots of the characteristic polynomial, that the limit for general \tau is \gamma L < 2\sin\big(\pi / (2(2\tau + 1))\big), and relate it to the step-size rule of ARock (ch. 7).
Hints and expected result: (a) the characteristic polynomial is z^2 - z + a with a = \gamma L. For 0 < a \leq \frac14 both roots are real and lie in (0, 1).
For a > \frac14 they are complex conjugate with |z|^2 = a, so the iteration is stable if and only if a < 1: the delay halves the admissible step.
- Build the polynomial z^{\tau + 1} - z^{\tau} + a and compute the largest root modulus with
numpy.roots, for a just below and above the bound. For \tau = 2 and \tau = 5, the bounds 0.618 and 0.285 are where it crosses 1.
For large \tau the bound behaves like \pi/(2\tau): the step must shrink like 1/\tau, the behaviour that the ARock step size encodes.
Projects and assessment
The official assessment, per master-mva.com, combines two lab reports and an exam; no weights are displayed, and the Université Paris-Saclay course detail classifies it as “Evaluation Continue non Intégrale” (partial continuous assessment). The solo subjects below are sized like an extended lab report; the group subjects are longer studies for students who want to go further. The written exam proposal follows the 2 h format announced on master-mva.com. None of these proposals is official material.
Solo projects
- [Solo · ≈ 20 h] FISTA for image deblurring: a paper study. Reproduce the main experiment of Beck and Teboulle (2009): ISTA against FISTA on a deblurring problem with \ell_1 regularization in an orthonormal transform.
- Implement: a Gaussian blur by FFT, an orthonormal 2-D DCT (
scipy.fft.dctnwithnorm="ortho") as sparsifying transform, ISTA, FISTA and FISTA with backtracking. - Data: a grey-level version of an image bundled with scikit-learn (
sklearn.datasets.load_sample_image). - Success criterion: log–log plots of F(x_k) - F^\star with slopes close to -1 and -2 (Theorems 3.4 and 3.6), and the PSNR against the iteration number.
- Deliverables: code, a 4–6 page report, a 10-minute talk. Chapters 2, 3.
- Implement: a Gaussian blur by FFT, an orthonormal 2-D DCT (
- [Solo · ≈ 20 h] Subspace Majorization–Minimization for image restoration: a paper study. Reimplement the 3MG algorithm of Chouzenoux, Idier and Moussaoui (2011) on two-dimensional deblurring with a hyperbolic edge-preserving penalty.
- Compare: half-quadratic MM with conjugate-gradient inner solves, 3MG, nonlinear conjugate gradient and L-BFGS (
scipy.optimize), all from the same start. - Success criterion: a table of time and iterations to reach a relative objective accuracy of 10^{-6}, and a check of monotone decrease (Proposition 5.2).
- Deliverables: code, report, talk. Chapters 1, 5.
- Compare: half-quadratic MM with conjugate-gradient inner solves, 3MG, nonlinear conjugate gradient and L-BFGS (
- [Solo · ≈ 15 h] Variance reduction in practice. Compare SGD, SVRG (Johnson and Zhang, 2013) and SAGA (Defazio, Bach and Lacoste-Julien, 2014) on \ell_2-regularized logistic regression with n = 10^5 synthetic samples (
sklearn.datasets.make_classification), and the proximal version of SAGA with an \ell_1 term.- Success criterion: suboptimality against the number of passes over 30 passes, a linear rate for SVRG and SAGA, and an experimental check of the condition \rho < 1 of Theorem 6.5.
- Deliverables: code, report, talk. Chapters 3, 6.
Group projects
- [Group of 2–3 · ≈ 30 h each] Distributed ADMM: a paper study. Reproduce the consensus and sharing formulations of Boyd et al. (2011) for \ell_1-regularized logistic regression, and compare them with decentralized methods.
- Implementation: several processes on one machine with
torch.distributed(gloo backend, CPU) ormultiprocessing; synthetic data split across 2 to 8 workers, homogeneous or heterogeneous. - Work split: one member writes consensus ADMM with a server (Algorithm 8.1); one writes DGD and gradient tracking on a ring (Algorithms 8.5 and 8.7); one builds the communication layer, the timings and the comparison with Amdahl’s law (Proposition 7.2).
- Success criterion: curves of accuracy against communication rounds and against wall-clock time, and the measured speedup for 1, 2, 4 and 8 workers, explained by the sequential fraction.
- Deliverables: code, a 6-page report, a 15-minute talk. Chapters 4, 7, 8.
- Implementation: several processes on one machine with
- [Group of 2–3 · ≈ 30 h each] Parallel proximal algorithms for image restoration. Solve deblurring with three terms (data fidelity, total variation, a box constraint) with PPXA (Combettes and Pesquet, 2008), Chambolle–Pock or Condat–Vũ, and ADMM.
- Data: images bundled with scikit-learn, blurred and corrupted with Gaussian noise.
- Work split: one algorithm per member, with the proxes of PPXA computed in parallel processes (
concurrent.futures), plus a shared harness for the objective, the PSNR and the timings. - Success criterion: all methods reach the same objective value to 10^{-6} relative accuracy; a study of the sensitivity to \gamma, \tau, \sigma and \rho; the time per iteration with 1 and 3 workers.
- Deliverables: code, report, talk. Chapters 2, 4, 7.
- [Group of 2–3 · ≈ 30 h each] Federated learning with heterogeneous clients: a paper study. Reproduce the qualitative findings of Karimireddy et al. (2020) comparing FedAvg (McMahan et al., 2017) and SCAFFOLD.
- Data: the 8×8 digits of scikit-learn split across 10 clients by label, so that each client sees only two classes, with multinomial logistic regression or a small PyTorch network.
- Work split: the simulation framework and FedAvg; SCAFFOLD; the experiments with the number of local steps K and the degree of heterogeneity, with the quadratic analysis of Exercise 14 as a sanity check.
- Success criterion: curves of test accuracy against communication rounds that show the drift of FedAvg as K grows and its correction by SCAFFOLD.
- Deliverables: code, report, talk. Chapters 6, 8.
Written exam (proposal)
Format: 2 hours, as announced on master-mva.com; one handwritten A4 sheet allowed, no electronic device; four independent questions.
Course question (5 points). Define the proximity operator of f \in \Gamma_0(\mathbb{R}^N) and prove that it is firmly nonexpansive. State the Moreau decomposition, and use it to compute the prox of \gamma \|\cdot\|_\infty in terms of a projection.
Expected: Definition 2.1 with Proposition 2.2; the monotonicity argument of Proposition 2.5; Theorem 2.6. The conjugate of \|\cdot\|_\infty is the indicator of the unit \ell_1 ball B_1, so the prox of \gamma\|\cdot\|_\infty at v is v - \gamma P_{B_1}(v/\gamma).
Computation (6 points). Consider the problem \min_{x \in \mathbb{R}^2} \; \tfrac12 \|x - y\|^2 + \lambda |x_1 - x_2|, \qquad y = (3, 0), \quad \lambda = 1 .
- Solve it with the optimality conditions. (b) Write its Fenchel dual (Proposition 0.10) and solve it. (c) Write the Chambolle–Pock iteration and the condition on \tau, \sigma.
Expected:
- With D = (1, -1), the guess x_1 > x_2 gives x - y + \lambda D^\top = 0, so x^\star = (2, 1), which is consistent. The optimal value is 1 + 1 = 2.
- The dual function is -u^2 + 3u on |u| \leq 1, maximized at u^\star = 1 with value 2: there is no duality gap, and x^\star = y - D^\top u^\star.
- Algorithm 4.9, with a clipping to [-1, 1] in the dual step and the prox of \frac12\|\cdot - y\|^2 in the primal one. Since \|D\|^2 = 2, the condition is \tau\sigma < 1/2.
Short proof (5 points). (a) Prove that decentralized gradient descent with a constant step is gradient descent on the penalized function J_\alpha of Proposition 8.6. (b) Deduce that its fixed point is not consensual on two agents with f_1(x) = \frac12(x - 1)^2 and f_2(x) = \frac12(x + 1)^2, and compute it for w = \alpha = 0.25.
Expected: (a) the gradient computation of Proposition 8.6. (b) A consensual fixed point would need \nabla f_1(x) = \nabla f_2(x) = 0, impossible; Exercise 11 gives s = \alpha/(2w + \alpha) = 1/3, so the fixed point is (1/3, -1/3).
Problem (4 points). An iteration of PPXA with m = 8 terms costs 8 proxes of 10 ms each and an average of 2 ms that is sequential. (a) Give the time per iteration on 1 and 8 cores, and the speedup. (b) Check it with Amdahl’s law. (c) On a cluster, each iteration also needs a ring all-reduce of N = 10^7 doubles over 8 workers, on links of 10 GB/s; give the new time and speedup.
Expected: (a) 82 ms and 12 ms, a speedup of 6.8. (b) s = 2/82 \approx 0.024 and 1/(s + (1 - s)/8) \approx 6.8. (c) By Proposition 7.3 each worker sends \frac{2 \times 7}{8} \times 10^7 doubles, that is 1.4 \times 10^8 bytes, about 14 ms; the iteration takes about 26 ms and the speedup falls to about 3.2.
Grading rubric (proposal)
| Criterion | Weight | What earns the marks |
|---|---|---|
| Correctness and rigour | 30 % | Correct derivations; assumptions of each theorem checked (convexity, Lipschitz constants, step-size conditions); proofs or precise references |
| Implementation | 25 % | Algorithms written from the definitions, checked against a reference solver, seeds fixed, code that runs end to end |
| Experimental method | 20 % | Fair comparisons (same budget in passes, rounds or seconds), several runs where randomness matters, sensitivity to the parameters |
| Analysis | 15 % | Results explained with the course: rates, conditioning, coupling, spectral gap, communication; negative results discussed |
| Communication | 10 % | Clear report within the page limit, readable log-scale figures, a talk that fits its time slot |
References
Official references (master-mva.com)
- H. H. Bauschke and P. L. Combettes. Convex Analysis and Monotone Operator Theory in Hilbert Spaces. Springer, New York, 2011 (second edition 2017).
- N. Parikh and S. Boyd. Proximal algorithms. Foundations and Trends in Optimization, 1(3):127–239, 2014.
Textbooks and surveys
- A. Beck. First-Order Methods in Optimization. MOS-SIAM Series on Optimization, SIAM, 2017.
- D. P. Bertsekas and J. N. Tsitsiklis. Parallel and Distributed Computation: Numerical Methods. Prentice Hall, 1989.
- L. Bottou, F. E. Curtis and J. Nocedal. Optimization methods for large-scale machine learning. SIAM Review, 60(2):223–311, 2018.
- S. Boyd, N. Parikh, E. Chu, B. Peleato and J. Eckstein. Distributed optimization and statistical learning via the alternating direction method of multipliers. Foundations and Trends in Machine Learning, 3(1):1–122, 2011.
- S. Boyd and L. Vandenberghe. Convex Optimization. Cambridge University Press, 2004.
- P. L. Combettes and J.-C. Pesquet. Proximal splitting methods in signal processing. In H. H. Bauschke et al. (eds.), Fixed-Point Algorithms for Inverse Problems in Science and Engineering, Springer, 185–212, 2011.
- L. Condat, D. Kitahara, A. Contreras and A. Hirabayashi. Proximal splitting algorithms for convex optimization: a tour of recent advances, with new twists. SIAM Review, 65(2):375–435, 2023.
- P. Kairouz, H. B. McMahan et al. Advances and open problems in federated learning. Foundations and Trends in Machine Learning, 14(1–2):1–210, 2021.
- N. Komodakis and J.-C. Pesquet. Playing with duality: an overview of recent primal–dual approaches for solving large-scale optimization problems. IEEE Signal Processing Magazine, 32(6):31–54, 2015.
- V. Monga, Y. Li and Y. C. Eldar. Algorithm unrolling: interpretable, efficient deep learning for signal and image processing. IEEE Signal Processing Magazine, 38(2):18–44, 2021.
- Y. Nesterov. Introductory Lectures on Convex Optimization: A Basic Course. Kluwer Academic Publishers, 2004.
- Y. Sun, P. Babu and D. P. Palomar. Majorization-minimization algorithms in signal processing, communications, and machine learning. IEEE Transactions on Signal Processing, 65(3):794–816, 2017.
Proximal and splitting algorithms (ch. 2–4)
- A. Beck and M. Teboulle. A fast iterative shrinkage-thresholding algorithm for linear inverse problems. SIAM Journal on Imaging Sciences, 2(1):183–202, 2009.
- A. Chambolle and C. Dossal. On the convergence of the iterates of the “fast iterative shrinkage/thresholding algorithm”. Journal of Optimization Theory and Applications, 166(3):968–982, 2015.
- A. Chambolle and T. Pock. A first-order primal-dual algorithm for convex problems with applications to imaging. Journal of Mathematical Imaging and Vision, 40(1):120–145, 2011.
- E. Chouzenoux, J.-C. Pesquet and A. Repetti. Variable metric forward–backward algorithm for minimizing the sum of a differentiable function and a convex function. Journal of Optimization Theory and Applications, 162(1):107–132, 2014.
- P. L. Combettes and V. R. Wajs. Signal recovery by proximal forward-backward splitting. Multiscale Modeling and Simulation, 4(4):1168–1200, 2005.
- L. Condat. A primal–dual splitting method for convex optimization involving Lipschitzian, proximable and linear composite terms. Journal of Optimization Theory and Applications, 158(2):460–479, 2013.
- I. Daubechies, M. Defrise and C. De Mol. An iterative thresholding algorithm for linear inverse problems with a sparsity constraint. Communications on Pure and Applied Mathematics, 57(11):1413–1457, 2004.
- D. Davis and W. Yin. A three-operator splitting scheme and its optimization applications. Set-Valued and Variational Analysis, 25(4):829–858, 2017.
- J. Eckstein and D. P. Bertsekas. On the Douglas–Rachford splitting method and the proximal point algorithm for maximal monotone operators. Mathematical Programming, 55:293–318, 1992.
- B. He and X. Yuan. Convergence analysis of primal-dual algorithms for a saddle-point problem: from contraction perspective. SIAM Journal on Imaging Sciences, 5(1):119–149, 2012.
- P.-L. Lions and B. Mercier. Splitting algorithms for the sum of two nonlinear operators. SIAM Journal on Numerical Analysis, 16(6):964–979, 1979.
- Y. Nesterov. A method for solving the convex programming problem with convergence rate O(1/k²). Soviet Mathematics Doklady, 27:372–376, 1983.
- R. T. Rockafellar. Monotone operators and the proximal point algorithm. SIAM Journal on Control and Optimization, 14(5):877–898, 1976.
- B. C. Vũ. A splitting algorithm for dual monotone inclusions involving cocoercive operators. Advances in Computational Mathematics, 38(3):667–681, 2013.
Majorization–Minimization (ch. 5)
- H. Attouch, J. Bolte and B. F. Svaiter. Convergence of descent methods for semi-algebraic and tame problems: proximal algorithms, forward–backward splitting, and regularized Gauss–Seidel methods. Mathematical Programming, 137(1–2):91–129, 2013.
- E. Chouzenoux, J. Idier and S. Moussaoui. A majorize–minimize strategy for subspace optimization applied to image restoration. IEEE Transactions on Image Processing, 20(6):1517–1528, 2011.
- D. Geman and G. Reynolds. Constrained restoration and the recovery of discontinuities. IEEE Transactions on Pattern Analysis and Machine Intelligence, 14(3):367–383, 1992.
- D. Geman and C. Yang. Nonlinear image recovery with half-quadratic regularization. IEEE Transactions on Image Processing, 4(7):932–946, 1995.
- D. D. Lee and H. S. Seung. Algorithms for non-negative matrix factorization. Advances in Neural Information Processing Systems 13, 2001.
- J. Mairal. Incremental majorization-minimization optimization with application to large-scale machine learning. SIAM Journal on Optimization, 25(2):829–855, 2015.
Stochastic, coordinate and parallel methods (ch. 6–7)
- P. L. Combettes and J.-C. Pesquet. A proximal decomposition method for solving convex variational inverse problems. Inverse Problems, 24(6):065014, 2008.
- A. Defazio, F. Bach and S. Lacoste-Julien. SAGA: a fast incremental gradient method with support for non-strongly convex composite objectives. Advances in Neural Information Processing Systems 27, 2014.
- R. Johnson and T. Zhang. Accelerating stochastic gradient descent using predictive variance reduction. Advances in Neural Information Processing Systems 26, 2013.
- Y. Nesterov. Efficiency of coordinate descent methods on huge-scale optimization problems. SIAM Journal on Optimization, 22(2):341–362, 2012.
- P. Patarasuk and X. Yuan. Bandwidth optimal all-reduce algorithms for clusters of workstations. Journal of Parallel and Distributed Computing, 69(2):117–124, 2009.
- Z. Peng, Y. Xu, M. Yan and W. Yin. ARock: an algorithmic framework for asynchronous parallel coordinate updates. SIAM Journal on Scientific Computing, 38(5):A2851–A2879, 2016.
- B. Recht, C. Ré, S. Wright and F. Niu. Hogwild!: a lock-free approach to parallelizing stochastic gradient descent. Advances in Neural Information Processing Systems 24, 2011.
- P. Richtárik and M. Takáč. Iteration complexity of randomized block-coordinate descent methods for minimizing a composite function. Mathematical Programming, 144(1–2):1–38, 2014.
- P. Richtárik and M. Takáč. Parallel coordinate descent methods for big data optimization. Mathematical Programming, 156(1–2):433–484, 2016.
Distributed and federated optimization (ch. 8)
- S. P. Karimireddy, S. Kale, M. Mohri, S. Reddi, S. Stich and A. T. Suresh. SCAFFOLD: stochastic controlled averaging for federated learning. Proceedings of ICML, 2020.
- B. McMahan, E. Moore, D. Ramage, S. Hampson and B. Agüera y Arcas. Communication-efficient learning of deep networks from decentralized data. Proceedings of AISTATS, 2017.
- A. Nedić and A. Ozdaglar. Distributed subgradient methods for multi-agent optimization. IEEE Transactions on Automatic Control, 54(1):48–61, 2009.
- A. Nedić, A. Olshevsky and W. Shi. Achieving geometric convergence for distributed optimization over time-varying graphs. SIAM Journal on Optimization, 27(4):2597–2633, 2017.
- G. Qu and N. Li. Harnessing smoothness to accelerate distributed optimization. IEEE Transactions on Control of Network Systems, 5(3):1245–1260, 2018.
- K. Scaman, F. Bach, S. Bubeck, Y. T. Lee and L. Massoulié. Optimal algorithms for smooth and strongly convex distributed optimization in networks. Proceedings of ICML, 2017.
- W. Shi, Q. Ling, G. Wu and W. Yin. EXTRA: an exact first-order algorithm for decentralized consensus optimization. SIAM Journal on Optimization, 25(2):944–966, 2015.
- K. Yuan, Q. Ling and W. Yin. On the convergence of decentralized gradient descent. SIAM Journal on Optimization, 26(3):1835–1854, 2016.
Research directions (ch. 9)
- D. Alistarh, D. Grubic, J. Li, R. Tomioka and M. Vojnovic. QSGD: communication-efficient SGD via gradient quantization and encoding. Advances in Neural Information Processing Systems 30, 2017.
- C. Bertocchi, E. Chouzenoux, M.-C. Corbineau, J.-C. Pesquet and M. Prato. Deep unfolding of a proximal interior point method for image restoration. Inverse Problems, 36(3):034005, 2020.
- P. Bianchi, W. Hachem and F. Iutzeler. A coordinate descent primal-dual algorithm and application to distributed asynchronous optimization. IEEE Transactions on Automatic Control, 61(10):2947–2957, 2016.
- J. Bolte, S. Sabach and M. Teboulle. Proximal alternating linearized minimization for nonconvex and nonsmooth problems. Mathematical Programming, 146(1–2):459–494, 2014.
- E. Chouzenoux, J.-C. Pesquet and A. Repetti. A block coordinate variable metric forward–backward algorithm. Journal of Global Optimization, 66(3):457–485, 2016.
- P. L. Combettes and J.-C. Pesquet. Stochastic quasi-Fejér block-coordinate fixed point iterations with random sweeping. SIAM Journal on Optimization, 25(2):1221–1248, 2015.
- K. Gregor and Y. LeCun. Learning fast approximations of sparse coding. Proceedings of ICML, 2010.
- A. Koloskova, N. Loizou, S. Boreiri, M. Jaggi and S. Stich. A unified theory of decentralized SGD with changing topology and local updates. Proceedings of ICML, 2020.
- X. Lian, C. Zhang, H. Zhang, C.-J. Hsieh, W. Zhang and J. Liu. Can decentralized algorithms outperform centralized algorithms? A case study for decentralized parallel stochastic gradient descent. Advances in Neural Information Processing Systems 30, 2017.
- K. Mishchenko, G. Malinovsky, S. Stich and P. Richtárik. ProxSkip: Yes! Local gradient steps provably lead to communication acceleration! Finally! Proceedings of ICML, 2022.
- J.-C. Pesquet and A. Repetti. A class of randomized primal-dual algorithms for distributed optimization. Journal of Nonlinear and Convex Analysis, 16(12):2453–2490, 2015.