1、軟閾值(Soft Thresholding)函數的符號
軟閾值(Soft Thresholding)目前非常常見,文獻【1】【2】最早提出了這個概念。軟閾值公式的表達方式歸納起來常見的有三種,以下是各文獻中的軟閾值定義符號:
文獻【1】式(12):
文獻【2】:
文獻【3】:
文獻【4】式(8):
文獻【5】式(1.5):
文獻【6】式(12)注釋:
文獻【7】:
其中文獻【1】【2】【3】【5】是第一種,也是最常見的一種;文獻【4】【6】是第二種,個人認為可讀性比第一種要好;文獻【7】是第三種,個人認為可讀性最好。當然,它們表達的意思是一樣的(無論是sgn(x)還是sign(x)都是符號函數,即當x>0時為1,當x<0時為-1):
以文獻【1】符號為例解釋第一種表示方式。這里w是變量,λ是閾值(非負值),符號(|w|-λ)+表示當(|w|-λ)>0時則等於|w|-λ,當(|w|-λ)<0時則等於0。那么分三種情況來討論:第一種情況是w>λ>0,則sgn(w)=1,|w|=w,(|w|-λ)一定大於0,(|w|-λ)+=|w|-λ,所以ηS(w,λ)=w-λ;第二種情況是w<-λ<0,則sgn(w)=-1,|w|=-w,(|w|-λ)也一定大於0,(|w|-λ)+=|w|-λ,所以ηS(w,λ)=-1*(-w-λ)= w+λ;第三種情況是|w|<λ,此時(|w|-λ)一定小於0,則(|w|-λ)+=0,所以ηS(w,λ)=0。因此

以文獻【6】符號為例解釋第二種表示方式。這種表示方式中符號max{|u|-a,0}的作用與第一種表示方式中的符號(|w|-λ)+的作用一樣,即當(|u|-a)>0時max{|u|-a,0}=(|u|-a),當(|u|-a)<0時max{|u|-a,0}=0,知道了這一點剩下的分析與第一種表示方式相同。
綜上,三種表示方式均是一致的。
2、軟閾值(Soft Thresholding)函數的作用
弄清楚了軟閾值(Soft Thresholding)的符號表示以后,接下來說一說它的作用。以下內容主要參考了文獻【7】,這是一個非常棒的PPT!!!
軟閾值(SoftThresholding)可以求解如下優化問題:

其中:
根據范數的定義,可以將上面優化問題的目標函數拆開:
也就是說,我們可以通過求解N個獨立的形如函數
的優化問題,來求解這個問題。由中學時代學過的求極值方法知道,可以求函數f(x)導數:
這里要解釋一下變量x絕對值的導數,當x>0時,|x|=x,因此其導數等於1;當x<0時,|x|=-x,因此其導數等於-1;綜合起來,x絕對值的導數等於sgn(x)。令函數f(x)導數等於0,得:
這個結果等號兩端都有變量x,需要再化簡一下。下面分三種情況討論:
(1)當b>λ/2時
假設x<0,則sgn(x)=-1,所以x=b+λ/2>0,與假設x<0矛盾;
假設x>0,則sgn(x)=1,所以x=b-λ/2>0,成立;
所以此時在x=b-λ/2>0處取得極小值:

即此時極小值小於f(0),而當x<0時
即當x<0時函數f(x)為單調降函數(對任意△x<0,f(0)<f(△x))。因此,函數在x=b-λ/2>0處取得最小值。
(2)當b<-λ/2時
假設x<0,則sgn(x)=-1,所以x=b+λ/2<0,成立;
假設x>0,則sgn(x)=1,所以x=b-λ/2<0,與假設x<0矛盾;
所以此時在x=b+λ/2<0處取得極小值:
即此時極小值小於f(0),而當x>0時
即當x>0時函數f(x)為單調升函數(對任意△x>0,f(△x)>f(0))。因此,函數在x=b+λ/2<0處取得最小值。
(3)當-λ/2<b<λ/2時(即|b|<λ/2時)
假設x<0,則sgn(x)=-1,所以x=b+λ/2>0,與假設x<0矛盾;
假設x>0,則sgn(x)=1,所以x=b-λ/2<0,與假設x<0矛盾;
即無論x為大於0還是小於0均沒有極值點,那么x=0是否為函數f(x)的極值點呢?
對於△x≠0,
當△x >0時,利用條件b<λ/2可得
當△x <0時,利用條件b<λ/2可得(注:此時|△x |=-△x)
因此,函數在x=0處取得極小值,也是最小值。
綜合以上三種情況,f(x)的最小值在以下位置取得:
與前面的軟閾值(Soft Thresholding)對比一下,發現了么?若將上式中的b視為變量,λ/2視為閾值,上式即為軟閾值(SoftThresholding)的公式。
至此,我們可以得到優化問題
的解為
注:該式為軟閾值(Soft Thresholding)的矩陣形式。
3、軟閾值(Soft Thresholding)的變形
當優化問題變為
因為對目標函數乘一個常系數不影響極值點的獲得,所以可等價為優化問題
此時的解為soft(B, λ)。
4、軟閾值(Soft Thresholding)的MATLAB代碼
軟閾值(Soft Thresholding)的函數代碼可以寫成專門針對優化問題
軟閾值(Soft Thresholding)是如此簡單以至於可以用一句代碼去實現它[8]:
當然,如果不習慣這種形式,也可以寫成常見的函數形式:
function [ soft_thresh ] = softthresholding( b,lambda ) soft_thresh = sign(b).*max(abs(b) - lambda/2,0); end
一定要注意:這種寫法是針對最開始的優化問題:
但我個人感覺更應該寫成這種通用形式:
function [ x ] = soft( b,T ) x = sign(b).*max(abs(b) - T,0); end
如此之后,若要解決優化問題
只需調用soft(B, λ/2)即可;若要解決優化問題
只需調用soft(B, λ)即可。
5、軟閾值(Soft Thresholding)測試代碼
用以下一小段代碼測試一下軟閾值,用來求解優化問題:
這里用的對比函數是基追蹤降噪(BPDN_quadprog.m),參見壓縮感知重構算法之基追蹤降噪(Basis PursuitDe-Noising, BPDN)(http://blog.csdn.net/jbb0523/article/details/52013669),使用BPDN時,實際上就是觀測矩陣為單位陣時的一種特殊情況:
clear all;close all;clc; b = [-0.8487 -0.3349 0.5528 1.0391 -1.1176]'; lambda = 1; x1=soft(b,lambda) x2=BPDN_quadprog(b,eye(length(b)),lambda) fprintf('\nError between soft and BPDN = %f\n',norm(x1-x2))
這里就不給出輸出結果了。運行后,觀察輸出結果可知,soft函數與BPDN_quadprog函數的輸結果相同。
另外,可以在matlab里輸入以下命令看一個軟閾值的圖像:
x=-5:0.1:5;T=1;y=soft(x,T);plot(x,y);grid;
6、總結
可以發現,軟閾值解決的優化問題和基追蹤降噪問題很像,但並不一樣,而且需要格外說明的是,軟閾值並能不解決基追蹤降噪問題,文獻【8】在最后明確說明了這一點:

近來學習研究各種算法,發現給自己挖的坑有點深,有點跳不出來了,各種問題接踵而來,各種新概念一個接着一個,而軟閾值(Soft Thresholding)就是其中之一,根本沒法子繞過去。在文獻【6】中,作者描述軟閾值(Soft Thresholding)時用的是“the well-known soft-threshold function”,好吧,還well-kown。在學習過程中文獻【9】對我幫助也挺大的,但從作者的語氣來看,也沒有多么well-kown啊……
最后,非常感謝文獻【7】的PPT,看了之后讓我有一種醍醐灌頂的感覺……
7、參考文獻
【1】Donoho D L, JohnstoneJ M. Ideal spatial adaptation by wavelet shrinkage[J]. Biometrika, 1994, 81(3):425-455.
【2】Donoho D L.De-noising by soft-thresholding[J]. IEEE transactions on information theory,1995, 41(3): 613-627.
【3】Bredies K, Lorenz D.Iterative soft-thresholding converges linearly[R]. Zentrum fürTechnomathematik, 2007.
【4】Bioucas-Dias J M,Figueiredo M A T. A new TwIST: two-step iterative shrinkage/thresholdingalgorithms for image restoration[J]. IEEE Transactions on Image processing,2007, 16(12): 2992-3004.
【5】Beck A, Teboulle M. Afast iterative shrinkage-thresholding algorithm for linear inverse problems[J].SIAM journal on imaging sciences, 2009, 2(1): 183-202.
【6】Wright S J, Nowak RD, Figueiredo M A T. Sparse reconstruction by separable approximation[J]. IEEETransactions on Signal Processing, 2009, 57(7): 2479-2493.
【7】谷鵠翔.IteratedSoft-Thresholding Algorithm[Report,slides]. http://www.sigvc.org/bbs/thread-41-1-2.html
【8】http://www.simonlucey.com/soft-thresholding/
【9】http://blog.sina.com.cn/s/blog_6d0e97bb01015vq3.html