软阈值算法解决的是如下优化模型:
min1/2||X−b||22+λ||X||1
其中X,b为向量。 λ>0 。
首先给出软阈值作用的图像:
其中左边的是原始信号,右边的是软阈值作用后的结果。
现在我们看一下这个优化模型怎么用软阈值算法来求解。
很显然上述问题的最优解其实就相当于阈值为 λ 的一个软阈值作用的结果。
%% soft threshold
%%
%% argmin 1/2||X-b||_{2}^2+\lambda||X||_{1}
%%
function [X]=soft_threshold(b,lambda)
X=sign(b).*max(abs(b) - lambda,0);
end
当然对于更一般的优化模型:
min1/2||AX−b||22+λ||X||1
不能适用此算法,因为此时对X做了个旋转变换。