pyproximal.optimization.sr3.SR3#
- pyproximal.optimization.sr3.SR3(Op, Reg, data, kappa, eps, x0=None, adaptive=True, iter_lim_outer=100, iter_lim_inner=100)[source]#
Sparse Relaxed Regularized Regression
Applies the Sparse Relaxed Regularized Regression (SR3) algorithm to an inverse problem with a sparsity constraint of the form
\[\min_x \dfrac{1}{2}\Vert \mathbf{Ax} - \mathbf{b}\Vert_2^2 + \lambda\Vert \mathbf{Lx}\Vert_1\]SR3 introduces an auxiliary variable \(\mathbf{z} = \mathbf{Lx}\), and instead solves
\[\min_{\mathbf{x},\mathbf{z}} \dfrac{1}{2}\Vert \mathbf{Ax} - \mathbf{b}\Vert_2^2 + \lambda\Vert \mathbf{z}\Vert_1 + \dfrac{\kappa}{2}\Vert \mathbf{Lx} - \mathbf{z}\Vert_2^2\]- Parameters
- Op
pylops.LinearOperator
Forward operator
- Reg
numpy.ndarray
Regularization operator
- data
numpy.ndarray
Data
- kappa
float
Parameter controlling the difference between \(\mathbf{z}\) and \(\mathbf{Lx}\)
- eps
float
Regularization parameter
- x0
numpy.ndarray
, optional Initial guess
- adaptive
bool
, optional Use adaptive SR3 with a stopping criterion for the inner iterations or not
- iter_lim_outer
int
, optional Maximum number of iterations for the outer iteration
- iter_lim_inner
int
, optional Maximum number of iterations for the inner iteration
- Op
- Returns
- x:
numpy.ndarray
Approximate solution.
- x:
Notes
SR3 uses the following algorithm:
\[\begin{split}\mathbf{x}_{k+1} = (\mathbf{A}^T\mathbf{A} + \kappa \mathbf{L}^T\mathbf{L})^{-1}(\mathbf{A}^T\mathbf{b} + \kappa \mathbf{L}^T\mathbf{y}_k) \\ \mathbf{y}_{k+1} = \prox_{\lambda/\kappa\mathcal{R}} (\mathbf{Lx}_{k+1})\end{split}\]