pyproximal.optimization.palm.iPALM#
- pyproximal.optimization.palm.iPALM(H, proxf, proxg, x0, y0, gammaf=1.0, gammag=1.0, a=[1.0, 1.0], b=None, beta=0.5, niter=10, niterback=100, callback=None, show=False)[source]#
Inertial Proximal Alternating Linearized Minimization
Solves the following minimization problem using the Inertial Proximal Alternating Linearized Minimization (iPALM) algorithm:
\[\mathbf{x}\mathbf{,y} = \argmin_{\mathbf{x}, \mathbf{y}} f(\mathbf{x}) + g(\mathbf{y}) + H(\mathbf{x}, \mathbf{y})\]where \(f(\mathbf{x})\) and \(g(\mathbf{y})\) are any pair of convex functions that have known proximal operators, and \(H(\mathbf{x}, \mathbf{y})\) is a smooth function.
- Parameters
- H
pyproximal.utils.bilinear.Bilinear
Bilinear function
- proxf
pyproximal.ProxOperator
Proximal operator of f function
- proxg
pyproximal.ProxOperator
Proximal operator of g function
- x0
numpy.ndarray
Initial x vector
- y0
numpy.ndarray
Initial y vector
- gammaf
float
, optional Positive scalar weight for
f
function update. IfNone
, use backtracking- gammag
float
, optional Positive scalar weight for
g
function update. IfNone
, use backtracking- a
list
, optional Inertial parameters (\(a \in [0, 1]\))
- beta
float
, optional Backtracking parameter (must be between 0 and 1)
- niter
int
, optional Number of iterations of iterative scheme
- niterback
int
, optional Max number of iterations of backtracking
- callback
callable
, optional Function with signature (
callback(x)
) to call after each iteration wherex
andy
are the current model vectors- show
bool
, optional Display iterations log
- H
- Returns
- x
numpy.ndarray
Inverted x vector
- y
numpy.ndarray
Inverted y vector
- x
Notes
iPALM [1] can be expressed by the following recursion:
\[\begin{split}\mathbf{x}_z^k = \mathbf{x}^k + \alpha_x (\mathbf{x}^k - \mathbf{x}^{k-1})\\ \mathbf{x}^{k+1} = \prox_{c_k f}(\mathbf{x}_z^k - \frac{1}{c_k}\nabla_x H(\mathbf{x}_z^k, \mathbf{y}^{k}))\\ \mathbf{y}_z^k = \mathbf{y}^k + \alpha_y (\mathbf{y}^k - \mathbf{y}^{k-1})\\ \mathbf{y}^{k+1} = \prox_{d_k g}(\mathbf{y}_z^k - \frac{1}{d_k}\nabla_y H(\mathbf{x}^{k+1}, \mathbf{y}_z^k))\end{split}\]Here \(c_k=\gamma_f L_x\) and \(d_k=\gamma_g L_y\), where \(L_x\) and \(L_y\) are the Lipschitz constant of \(\nabla_x H\) and \(\nabla_y H\), respectively. When such constants cannot be easily computed, a back-tracking algorithm can be instead employed to find suitable \(c_k\) and \(d_k\) parameters.
Finally, note that we have implemented the version of iPALM where \(\beta_x=\alpha_x\) and \(\beta_y=\alpha_y\).
- 1
Pock, T., and Sabach, S. “Inertial Proximal Alternating Linearized Minimization (iPALM) for Nonconvex and Nonsmooth Problems”, SIAM Journal on Imaging Sciences, vol. 9. 2016.
Examples using pyproximal.optimization.palm.iPALM
#
Low-Rank completion via Matrix factorization