软阈值函数
Author: SignalProc8848 Date: 2020/7
Introduction
软阈值(soft thresholding)函数是由斯坦福大学统计系教授 David Donoho 首
先提出[1,2],后被应用于小波降噪。近 10 年来,软阈值函数广泛应用于稀疏表示
和压缩感知领域优化问题的求解算法中。图 1 给出了一维软阈值函数。
图 1 一维软阈值函数
理论推导
如下两种形式的无约束优化问题:
1 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
()2=
(1)
(2)
式中,
—n 维优化变量,
;
—给定的 n 维向量,
;
—罚参数,
;
—向量 的 范数,
;
—向量 的 范数,
;
式(1)—(2)是等价的,下面的推导都采用式(2),这是因为式(2)是 范数
的近邻映射[3]。
式(2)中优化变量
,因此这是一个 N 维无约束优化问题。巧妙利用
范数和 范数平方和的分离特性,可将 N 维优化问题转化为 N 个一维优化问
题,从而显著降低原问题的难度。
依照上述分析,式(2)可作如下变形
(3)
2 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
2211argmin2n−+xxyx2121argmin2n+−xxxyxnxyny01xx1l11niix==x2xx2l()12221niix==x1lnx1l2l()()()()()12122122,,112,,1211argmin21argmin21argmin21argmin2nninniiixxxiiniiixxxiniiixixxyxxyxxy=====+−=+−=+−=+−xxxxy
(4)
式(3)中,极小值与求和作了交换,简化了问题,相对于问题(2),问题(4)
是 N 个独立的一维优化问题,处理起来简单的多。此处蕴含着一个重要的数学思
想:运算次序交换,如极限与微分交换次序、极限与积分交换次序、积分与微分
交换次序、积分交换次序等。
不失一般性,我们首先讨论如下一维优化问题
式中,
(5)
—优化变量,
,是向量 的一个分量;
—给定的常数,
,是向量 的一个分量;
—罚参数,
,与式(2)中的罚参数一样;
在 上连续,且严格凸,仅在
处不可导。这意味着问题(5)有且
仅有一个最小值点。由极值存在的必要条件,对目标函数
求导,并令导数
等于 0,得到极值点
(6a)
(6b)
3 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
()()()122111222221argmin21argmin21argmin2nxxnnnxxxyxxyxxy+−+−=+−x()()21argmin2xfxxxy=+−xxxyyy0()fx0x=()fxx()()()1sgndfxxxydx=+−()()()1sgn0sgnxxyxyx+−==−
(6c)
式(6b)的等号右边仍含有变量 ,需要分情况讨论。
时,
,则
1)当
①若
即
,
,则
在
取得极小值,
(7)
②若
,则
,
,矛盾。通过导数观察
在区
上的单调性,即
间
(8)
则
在
上单调递减,再由
的连续性可知,
在
处取得极
小值,即
比较
和
当
(9)
( 10 )
时,综合①和②,
在
上的最小值点为
。
2)当
时
①若
,则
,
,矛盾。通过导数观察
在区间
上的单调性,即
(11)
4 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
()1,0sgn1,0xxx=−x0y()0,x+()sgn1x=0xy=−()fxxy=−()21122fxyy=−+=−(),0x−()sgn1x=−0xy=+()fx(),0−()()110dfxxydx=−+−()fx(),0−()fx()fx0x=()2102fy=()fx()0f()()()()222211110202222fxfyyyyy−=−−=−+−=−−0y()fxxxy=−y−()0,x+()sgn1x=20xy=−−()fx()0,+()()110dfxxydx=+−
则
在
上单调递增,再由
的连续性可知,
在
处取得极
小值,即
(12)
②若
,则
,
,则
在
取得极小值,
(13)
(14)
即
比较
和
当
3)当
①若
时,综合①和②,
在
上的最小值点为
。
时,
,则
,
,矛盾。通过导数观察
在区间
上的单调性,即
(15)
则
在
上单调递增,再由
的连续性可知,
在
处取得
极小值,即
(16)
②若
,则
,
,矛盾。通过导数观察
在区
上的单调性,即
间
(17)
则
在
上单调递减,再由
的连续性可知,
在
处取得极
5 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
()fx()0,+()fx()fx0x=()2102fy=(),0x−()sgn1x=−0xy=+()fxxy=+()21122fxyy=++=−−()fx()0f()()()()222211110202222fxfyyyyy−=−−−=−++=−+y−()fxxxy=+y−()0,x+()sgn1x=0xy=−()fx()0,+()()()11110dfxxyxydx=+−=+−()fx()0,+()fx()fx0x=()2102fy=(),0x−()sgn1x=−0xy=+()fx()0,+()()()11110dfxxyxydx=−+−=+−−()fx(),0−()fx()fx0x=
小值,即
(18)
综合①和②,当
时,
在
上的最小值点为
综合 1)、2)和 3)三种情形,可得
(19)
若将式(19)中的 视为变量, 视为阈值,上式即为一维软阈值(soft thresholding)
公式。
案例
1、若
,
,那么优化问题(2)的解 为多少?
解析: 的任意分量都大于阈值
,即所有分量均落入
内。由式
(19)可知,所以
,同理可得
,
,
,
综上所述,优化问题(2)的解 为
2、若
,
,那么优化问题(2)的解 为多少?
解析: 的任意分量都小于
,即所有分量均落入
这区间内。由式
(19)可知,
,同理可得
,
,
。
综上所述,优化问题(2)的解 为
6 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
()2102fy=y−()fxx0x=()()2,1argmin0,2,xyyfxxxyyyy−=+−=+−y1234Ty= 0.5=xy0.5=()2.5,+110.510.50.5=−=−=xy21.5=x32.5=x43.5=xx0.51.52.53.5=x1234T−−−−y= 0.5=xy0.5−(),0.5−−110.510.50.5=+=−+=−xy21.5=−x32.5=−x43.5=−xx
.
3、若
,
,那么优化问题(2)的解 为多少?
解析: 的第 1 分量和第 2 分量落入
内,由式(19)可知,
;
的第 3 分量落入
,则
; 的第 4 分量落入
,则
。
综上所述,优化问题(2)的解 为
。
Matlab 代码
软阈值冗长的推导过程使人心很累,但软阈值的 Matlab 代码却如此简单,
以至于可以用一句代码去实现问题(2)
function [ soft_thresh ] = softThreshold(y,lambda)
soft_thresh = sign(y).*max(abs(y) - lambda,0);
end
代码中 是 n 维向量, 是标量,
表示向量与标量作差,线性代数老师
可从没教过啊,令人费解。Matlab 软件中约定
表示向量 的每个分量都与
作差,结果是与 同维度的向量。读者可在 Matlab 中作简单试验,予以验证。
为了便于读者理解软阈值的 Matlab 代码,我将式(19)作如下变形
(20)
7 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
0.51.52.53.5−−=−−x1234T−y= 2.5=xy()2.5,2.5−120==xxy()2.5,+30.5=xy(),2.5−−41.5=−xx000.51.5=−xy−y−yyy()2(),1argmin0,2(),xyabsyyxxyyyabsyy−=−+−=+=−−−
式(20)中,
和
这两种情况仅相差一个负号,对应 Matlab 代
码中的 sign(y)函数,sign(y)表示对向量 y 中各分量符号的判断。
总结
1)软阈值函数
其实就是 的 Moreau 包络,而
是 近邻算子。关于 Moreau 包括和近邻
算子的详细内容参考文献[3]。
2)优化问题(2)与基追踪降噪问题(21)非常相似,却不解决基追踪降噪
问题
式中,
(21)
—
矩阵;稀疏表示中称作过完备词典,通常要求
;
—稀疏表示系数,
;
文献[4]对此作了说明:由于矩阵 的存在,破坏了 范数的分离的特性,其实就是
的各分量经过 的线性组合后,再平方会出现分量间的交叉项,造成变量不能
像式(3)那样可分离。
3)软阈值函数是分裂增广拉格朗收缩算法(split augmented Lagrangian
shrinkage algorithm)[5]变量更新的关键一步,深入理解软阈值函数是学习后续稀
疏优化算法的基础。
8 For feedback/corrections, email 3173922044@qq.com. (Last edit: July 17, 2020)
0y0y−()21212fx=+−xxy1x()12,121argmin2nproy=+−xxxxy1x2211argmin2nD−+xxDnmmnmD2lD