pylops.optimization.sparsity.ISTA

pylops.optimization.sparsity.ISTA(Op, data, niter, eps=0.1, alpha=None, eigsiter=None, eigstol=0, tol=1e-10, monitorres=False, returninfo=False, show=False)[source]

Iterative Soft Thresholding Algorithm (ISTA).

Solve an optimization problem with \(L1\) regularization function given the operator Op and data y. The operator can be real or complex, and should ideally be either square \(N=M\) or underdetermined \(N<M\).

Parameters:
Op : pylops.LinearOperator

Operator to invert

data : numpy.ndarray

Data

niter : int

Number of iterations

eps : float, optional

Sparsity damping

alpha : float, optional

Step size (\(\alpha \le 1/\lambda_{max}(\mathbf{Op}^H\mathbf{Op})\) guarantees convergence. If None, estimated to satisfy the condition, otherwise the condition will not be checked)

eigsiter : float, optional

Number of iterations for eigenvalue estimation if alpha=None

eigstol : float, optional

Tolerance for eigenvalue estimation if alpha=None

tol : float, optional

Tolerance. Stop iterations if difference between inverted model at subsequent iterations is smaller than tol

monitorres : bool, optional

Monitor that residual is decreasing

returninfo : bool, optional

Return info of CG solver

show : bool, optional

Display iterations log

Returns:
xinv : numpy.ndarray

Inverted model

niter : int

Number of effective iterations

cost : numpy.ndarray, optional

History of cost function

Raises:
ValueError

If monitorres=True and residual increases

See also

FISTA
Fast Iterative Soft Thresholding Algorithm (FISTA).

Notes

Solves the following optimization problem for the operator \(\mathbf{Op}\) and the data \(\mathbf{d}\):

\[J = ||\mathbf{d} - \mathbf{Op} \mathbf{x}||_2^2 + \epsilon ||\mathbf{x}||_1\]

using the Iterative Soft Thresholding Algorithm (ISTA) [1]. This is a very simple iterative algorithm which applies the following step:

\[\mathbf{x}^{(i+1)} = soft (\mathbf{x}^{(i)} + \alpha \mathbf{Op}^H (\mathbf{d} - \mathbf{Op} \mathbf{x}^{(i)})), \epsilon \alpha /2)\]

where \(\epsilon \alpha /2\) is the threshold and \(soft()\) is the so-called soft-thresholding rule.

[1]Beck, A., and Teboulle, M., “A Fast Iterative Shrinkage-Thresholding Algorithm for Linear Inverse Problems”, SIAM Journal on Imaging Sciences, vol. 2, pp. 183-202. 2009.

Examples using pylops.optimization.sparsity.ISTA