先介绍下软阈值(Soft Thresholding)的概念:
求解如下优化问题:
将上述目标函数展开即为
即转化为了求解N个如下的独立函数的优化问题:
对上述函数求导
令导数等于0
等号两边都有x,需要进一步分情况讨论,推导过程见https://www.cnblogs.com/wlzy/p/7966525.html
讨论之后综合多种情况,f(x)的最小值为:
即当参数b小于\lambda/2 时,x=b+\lambda/2 时,f(x)取到最小值,当|b| 小于\lambda/2时,x=0取到最小值,b大于\lambda/2时,x=b-\lambda/2取到最小。
个人理解,之所以称之为软阈值,因为\lambda为参数而非固定的常值,取值范围随着\lambda的变动而变动。
将上式中的b视为变量,λ/2视为阈值,上式即为软阈值(Soft Thresholding)的公式。
即若要解决优化问题
只需要调用soft(B, λ/2)即可