軟閾值 (Soft Thresholding)函數解讀

原文鏈接:https://blog.csdn.net/jbb0523/article/details/52103257

題目:軟閾值(Soft Thresholding) 函數解讀

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]:

        當然,如果不習慣這種形式,也可以寫成常見的函數形式:

  1. function [ soft_thresh ] = softthresholding( b,lambda )
  2. soft_thresh = sign(b).*max(abs(b) - lambda/2,0);
  3. end

        一定要注意:這種寫法是針對最開始的優化問題:

        但我個人感覺更應該寫成這種通用形式:

  1. function [ x ] = soft( b,T )
  2. x = sign(b).*max(abs(b) - T,0);
  3. 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時,實際上就是觀測矩陣爲單位陣時的一種特殊情況:

  1. clear all;close all;clc;
  2. b = [-0.8487 -0.3349 0.5528 1.0391 -1.1176]';
  3. lambda = 1;
  4. x1=soft(b,lambda)
  5. x2=BPDN_quadprog(b,eye(length(b)),lambda)
  6. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章