Thresholding
For a real or complex scalar \(x\), the hard thresholding operator can be defined as:
(1)\[\begin{split}\mathbf{HT}_{\gamma}(x) = \begin{cases}
x & \text{for} & |x| \gt \gamma\\
0 & \text{for} & |x| \le \gamma
\end{cases}\end{split}\]
For a multi-dimensional array, we apply the same operator on each entry in the array.
The soft thresholding operator for real and complex scalars can be defined as:
(2)\[\begin{split}\mathbf{ST}_{\gamma}(x) = \begin{cases}
x\left ( 1 - \frac{\gamma}{|x|} \right ) & \text{for} & |x| \gt \gamma\\
0 & \text{for} & |x| \le \gamma
\end{cases}\end{split}\]
For real numbers, this reduces to:
(3)\[\begin{split}\mathbf{ST}_{\gamma}(x) = \begin{cases}
x - \gamma & \text{for} & x \gt \gamma \\
x + \gamma & \text{for} & x \lt -\gamma \\
0 & \text{for} & |x| \le \gamma
\end{cases}\end{split}\]
[CCSW14] consider the general minimization problem:
(4)\[\widehat{x} = \text{arg} \min_{x} \| b - A x \|_2^2 + \mathbf{R}(x)\]
where \(x\) is a vector in the model space, \(b\) is a vector in the data space,
\(A\) is a linear operator from model space to data space, and
\(\mathbf{R}(x)\) is the regularization term on the model vector.
They specifically consider the regularizations
(5)\[\mathbf{R}(x) = \tau \|x\|_p^p\]
for \(p\)-norms where \(0 \leq p \leq 1\).
This can be solved by the IST (Iterative Shrinkage and Thresholding)
algorithm where the thresholding operator depends on the selection of \(p\)-norm and the
regularization parameter \(\tau\).
They describe the IST iterations in terms of a more general thresholding operator \(\mathbf{T}_{\gamma(\tau, p)}(x)\):
(6)\[x_{n+1} = \mathbf{T}_{\gamma(\tau, p)}\left [x_n + A^H (b - A x_n) \right ]\]
They provide the definition of the thresholding operator for:
\(p=0\) hard thresholding
\(p=1\) soft thresholding
\(p=1/2\) half thresholding
Hard thresholding
Whe \(p=0\), we have:
(7)\[\mathbf{R}(x) = \| x \|_0\]
(8)\[\gamma(\tau, 0) = \sqrt{2 \tau}\]
The hard thresholding operator reduces to:
(9)\[\begin{split}\mathbf{T}_{\gamma(\tau, 0)}(x) = \begin{cases}
x & \text{for} & |x| \gt \gamma (\tau, 0)\\
0 & \text{for} & |x| \le \gamma (\tau, 0)
\end{cases}\end{split}\]
Soft thresholding
Whe \(p=1\), we have:
(10)\[\mathbf{R}(x) = \| x \|_1\]
(11)\[\gamma(\tau, 1) = \tau\]
The soft thresholding operator reduces to:
(12)\[\begin{split}\mathbf{T}_{\gamma(\tau, 1)}(x) = \begin{cases}
x\left ( 1 - \frac{\gamma}{|x|} \right ) & \text{for} & |x| \gt \gamma (\tau, 1)\\
0 & \text{for} & |x| \le \gamma (\tau, 1)
\end{cases}\end{split}\]
Half thresholding
Whe \(p=\frac{1}{2}\), we have:
(13)\[\mathbf{R}(x) = \| x \|_{\frac{1}{2}}^{\frac{1}{2}}\]
(14)\[\gamma(\tau, \frac{1}{2}) = \frac{3}{2} \tau^{\frac{2}{3}}\]
The half thresholding operator is more complicated:
(15)\[\begin{split}\mathbf{T}_{\gamma(\tau, 1)}(x) = \begin{cases}
\frac{2}{3} x\left ( 1 + \cos \left ( \frac{2}{3} \pi - \frac{2}{3} \arccos \left ( \frac{\tau}{8} \left (\frac{|x|}{3} \right)^{\frac{3}{2}}
\right ) \right ) \right )
& \text{for} & |x| \gt \gamma (\tau, \frac{1}{2})\\
0 & \text{for} & |x| \le \gamma (\tau, \frac{1}{2})
\end{cases}\end{split}\]