Coordinate Descent Algorithms

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].

../../_images/coord_sweep_ana_dark.png

Figure 1: Convergence rate of coordinate descent algorithm v.s. number of blocks#

../../_images/coord_sweep_ana_light.png

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