Deep greedy unfolding: Sorting out argsorting in greedy sparse recovery algorithms

Sina Mohammad-Taheri, Matthew J. Colbrook, Simone Brugiapaglia
5/21/2025
cs.LGcs.NEmath.NA

No official code found. Best implementation: sina-taheri/Deep_Greedy_Unfolding (4 stars, last commit 2025-05-26).

Abstract

Gradient-based learning imposes (deep) neural networks to be differentiable at all steps. This includes model-based architectures constructed by unrolling iterations of an iterative algorithm onto layers of a neural network, known as algorithm unrolling. However, greedy sparse recovery algorithms depend on the non-differentiable argsort operator, which hinders their integration into neural networks. In this paper, we address this challenge in Orthogonal Matching Pursuit (OMP) and Iterative Hard Thresholding (IHT), two popular representative algorithms in this class. We propose permutation-based variants of these algorithms and approximate permutation matrices using "soft" permutation matrices derived from softsort, a continuous relaxation of argsort. We demonstrate -- both theoretically and numerically -- that Soft-OMP and Soft-IHT, as differentiable counterparts of OMP and IHT and fully compatible with neural network training, effectively approximate these algorithms with a controllable degree of accuracy. This leads to the development of OMP- and IHT-Net, fully trainable network architectures based on Soft-OMP and Soft-IHT, respectively. Finally, by choosing weights as "structure-aware" trainable parameters, we connect our approach to structured sparse recovery and demonstrate its ability to extract latent sparsity patterns from data.

View on arXivView PDF

Code Implementations(1)

41PythonApr 11, 20251 years ago

Similar Papers

Cite this paper

@article{mohammadtaheri2025deep,
  title  = {Deep greedy unfolding: Sorting out argsorting in greedy sparse recovery algorithms},
  author = {Sina Mohammad-Taheri and Matthew J. Colbrook and Simone Brugiapaglia},
  year   = {2025},
  eprint = {2505.15661},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2505.15661v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2505.15661.svg)](https://codeofpaper.com/paper/2505.15661)

Discussion