Coordinate Descent Algorithms#
This example continues the coordinate-descent simulation demonstration.
A function \(f \in S_{m, L}\) is optimized using a \(c\)-block cyclic coordinate descent algorithm with gradient steps.
Analysis is performed for this gradient descent scheme
\[\begin{align}
\beta^{i(k)}_{k+1} = \beta^{i(k)}_{k} - \gamma \ [\nabla f(\beta_k)]^i
\end{align}\]
with stepsize \(\gamma := \frac{2}{c(m+L)}\). The coordinate block size \(c\) is increased from 1 to 6, and the parameter \(L\) is swept from 1 to 100 while \(m\) is kept to 1. Figure 1 plots the \(\rho\) upper bounds computed at order [1, 0].
Figure 1: Convergence rate of coordinate descent algorithm v.s. number of blocks#
Figure 1: Convergence rate of coordinate descent algorithm v.s. number of blocks.#
The specific analysis code at \(m=1, L=5, c=4\) is
Code for coordinate descent analysis#
1c=4; %blocksize
2
3%symmetry generator/permutation matrix
4M = circshift(eye(c), 1);
5
6%operator definition
7m = 1; L = 5;
8op1 = op_sml(m, L);
9
10%gradient descent rule
11%coordinate updates
12gamma = 2/(L +m) * (1/c);
13K = ss(eye(c), blkdiag(-gamma , zeros(c-1)), ...
14 eye(c), zeros(c), 1);
15
16%form the system
17sys = opt_system_periodic_orbit(op1, [], K, M);
18
19% %simulate and plot
20man = opt_analysis(sys);
21
22order = [2, 1];
23sol = man.bisect(order); %0.8942