FISTA: some remarks


Fast Iterative Shrinkage/Thresholding algorithm (FISTA)

  • Initialization: $\alpha^{(0)}\in\mathbb{R}^N$, $z^{(0)}\in\mathbb{R}^N$, $L \leq ||A\Phi ||^2$, $t=0$
  • Do until convergence :
    • $\alpha^{(t+1)} = \mathcal{S}_{\lambda/L} \left( z^{(t)} + \frac{1}{L}\Phi^* A^* \left( y - A\Phi z^{(t)} \right) \right)$
    • $z^{(t+1)} = \alpha^{(t+1)} + \frac{t}{t+5} \left( \alpha^{(t+1)} - \alpha^{(t)} \right)$

Fast Iterative Shrinkage/Thresholding algorithm (FISTA) with warm restart

  • In practice, the algorithm must be run with various value of lambda.

  • When $\lambda\rightarrow 0$ we have $|y - A\Phi\alpha| \rightarrow 0$.

  • When $\lambda = ||\Phi^* A^*y||_\infty$, the solution is $\alpha = 0$

  • One can choose these value distributed on a log scale in $\in [ 10^{-4}||\Phi^* A^*y||_\infty, ||\Phi^* A^*y||_\infty)$, with a fixed number of $\lambda$, such as we have $\lambda_1 > \lambda_2 > \ldots > \lambda_I$

  • The idea is to initialize the algorithm for $\lambda_i$ with the results get from $\lambda_{i-1}

  • Set $L \leq ||A\Phi ||^2$ and $\alpha_{(0)} = z_{(0)} = 0$

  • for i = 1:I

    • Chose $\lambda = \lambda_i$
    • Initialization: $\alpha_{(i)}^{(0)} = z_{(i)}^{(0)} = \alpha_{(i-1)}$, $t=0$
    • Do until convergence :
      • $\alpha_{(i)}^{(t+1)} = \mathcal{S}_{\lambda/L} \left( z_{(i)}^{(t)} +\frac{1}{L} \Phi^* A^* \left( y - A\Phi z_{(i)}^{(t)} \right) \right)$
      • $z_{(i)}^{(t+1)} = \alpha_{(i)}^{(t+1)} + \frac{t}{t+5} \left( \alpha_{(i)}^{(t+1)} - \alpha_{(i)}^{(t)} \right)$

Thresholding rules

  • The Soft-thresholding can be replaces by any thresholding rules
  • Some examples:
    • Hard Thresholding : $\mathcal{H}_\lambda(\alpha) = \alpha \boldsymbol{1}_{| \alpha | > \lambda}$
    • Empirical Wiener: $\mathcal{S}^{EW}_\lambda(\alpha) = \alpha \left( 1 - \frac{\lambda^2}{|\alpha |^2}\right)^+$