带非负约束的L¹范数邻近算子求解思路问询
标准变分问题(例如在成像领域中常见)形式如下:
$$ \operatorname{argmin}_x \frac{1}{2}\Vert Ax - y\Vert ^2 + \Vert x\Vert_1 $$
这里L¹范数作为稀疏正则项。这种情况下,保真项是光滑的,正则项是可邻近的,所以我可以直接用前向后向算法。我的问题是:如果目标函数变成
$$ \operatorname{argmin}x \frac{1}{2}\Vert Ax - y\Vert ^2 + \Vert x\Vert_1 + \iota{\ge0}(x)$$
也就是对变量的每个元素加上非负约束(比如x是图像,像素值必须为正)该怎么办?如果我想继续用前向后向算法,就需要明确求出 $\Vert x\Vert_1 + \iota_{\ge0}(x)$ 的邻近算子,这等价于求解如下约束优化问题:
$$ \operatorname{argmin}_{x \ge 0} \Vert x \Vert_1 + \frac{1}{2\tau}\Vert x - \bar{x} \Vert^2 $$有没有人能给点求解的思路?
这个问题其实很好解决,核心在于L¹范数和非负约束都是逐元素可分的——整个向量的优化问题可以拆成每个分量独立求解,不用考虑分量之间的耦合,大大简化了计算。
我们把目光聚焦到向量$x$的任意一个分量$x_i$上,对应的子问题是:
$$ \operatorname{argmin}_{x_i \ge 0} |x_i| + \frac{1}{2\tau}(x_i - \bar{x}_i)^2 $$
接下来分三种情况推导最优解:
- 当$\bar{x}_i \ge \tau$时:
先看无约束下的软阈值解是$\bar{x}_i - \tau$,这个值本身是非负的,完全满足$x_i \ge 0$的约束,所以直接取这个结果就行。 - 当$0 < \bar{x}_i < \tau$时:
无约束解会是$\bar{x}_i - \tau$,这是个负数,违反了非负约束。我们可以对比$x_i=0$和任意正数$x_i$的目标函数值:$x_i=0$时目标值是$\frac{1}{2\tau}\bar{x}_i^2$;而取正数$x_i$的话,目标值是$x_i + \frac{1}{2\tau}(x_i - \bar{x}_i)^2$,这个值肯定比$x_i=0$时大,所以最优解就是0。 - 当$\bar{x}_i \le 0$时:
不管无约束解是什么(要么是负数,要么是0),我们都要满足$x_i \ge 0$。此时取$x_i=0$的目标值是$\frac{1}{2\tau}\bar{x}_i^2$,而取任何正数$x_i$都会让$|x_i|=x_i$,加上平方项后总和必然更大,所以最优解也是0。
把这三种情况整合起来,每个分量的最优解可以用一个简洁的表达式写出来:
$$ x_i^* = \max\left{ \bar{x}_i - \tau, 0 \right} $$
简单来说,这个带非负约束的L¹范数邻近算子,就是对输入$\bar{x}$的每个分量做“正方向的软阈值”——超过$\tau$的正分量保留$\bar{x}_i - \tau$,其余情况直接截断为0。你可以代入几个数值验证,比如$\tau=2$,$\bar{x}_i=5$时解为3;$\bar{x}_i=1$时解为0;$\bar{x}_i=-3$时解为0,完全符合推导结果。
备注:内容来源于stack exchange,提问作者rod

