[轉]軟閾值(Soft Thresholding)函數解讀

一、軟閾值(Soft Thresholding)函數的符號

        軟閾值(Soft Thresholding)目前很是常見,文獻【1】【2】最先提出了這個概念。軟閾值公式的表達方式概括起來常見的有三種,如下是各文獻中的軟閾值定義符號:html

文獻【1】式(12):算法

 

文獻【2】:app

文獻【3】:ide

文獻【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):ui

        以文獻【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。所以spa

 

        以文獻【6】符號爲例解釋第二種表示方式。這種表示方式中符號max{|u|-a,0}的做用與第一種表示方式中的符號(|w|-λ)+的做用同樣,即當(|u|-a)>0時max{|u|-a,0}=(|u|-a),當(|u|-a)<0時max{|u|-a,0}=0,知道了這一點剩下的分析與第一種表示方式相同。

        綜上,三種表示方式均是一致的。

二、軟閾值(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)的矩陣形式。

三、軟閾值(Soft Thresholding)的變形

        當優化問題變爲

        由於對目標函數乘一個常係數不影響極值點的得到,因此可等價爲優化問題

此時的解爲soft(Bλ)。

四、軟閾值(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, λ)便可。

五、軟閾值(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;  

  

 

六、總結

 

        能夠發現,軟閾值解決的優化問題和基追蹤降噪問題很像,但並不同,並且須要格外說明的是,軟閾值並能不解決基追蹤降噪問題,文獻【8】在最後明確說明了這一點:

 

        近來學習研究各類算法,發現給本身挖的坑有點深,有點跳不出來了,各類問題接踵而來,各類新概念一個接着一個,而軟閾值(Soft Thresholding)就是其中之一,根本無法子繞過去。在文獻【6】中,做者描述軟閾值(Soft Thresholding)時用的是「the well-known soft-threshold function」,好吧,還well-kown。在學習過程當中文獻【9】對我幫助也挺大的,但從做者的語氣來看,也沒有多麼well-kown啊……

        最後,很是感謝文獻【7】的PPT,看了以後讓我有一種醍醐灌頂的感受……

七、參考文獻

【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

相關文章
相關標籤/搜索