硬閾值(Hard Thresholding)函數解讀

題目:硬閾值(Hard Thresholding)函數解讀

1、硬閾值(Hard Thresholding)函數的符號

        硬閾值(Hard Thresholding)並沒有軟閾值(Soft Thresholding)那麼常見,這可能是因爲硬閾值解決的問題是非凸的原因吧。硬閾值與軟閾值由同一篇文獻提出,硬閾值公式參見文獻【1】的式( 11):

        第一次邂逅硬閾值(HardThresholding)是在文獻【2】中:

        在查詢軟閾值(Soft Thresholding)的過程中,搜到了文獻【3】,進而看到了提到了文獻【4】:

        文獻【4】中提到的Fig 1如圖所示:

        硬閾值的符號到底表示什麼意思呢?以文獻【1】符號爲例,清晰一點來說就是這樣的:

這裏w是變量,λ是閾值。

2、硬閾值(HardThresholding)函數的作用

        弄清楚了硬閾值(HardThresholding)的符號表示以後,接下來說一說它的作用。這裏主要是參考了軟閾值的推導過程,然後自己經過一番琢磨和推導而得。

        硬閾值(HardThresholding)可以求解如下優化問題:

其中:

||X||0是求向是向量X的零範數,即向量X中非零元素的個數。根據範數的定義,可以將上面優化問題的目標函數拆開:

其中拆分項中符號|x|0的意思是

        現在,我們可以通過求解N個獨立的形如函數

的優化問題,來求解這個問題。將f(x)進一步寫爲:

        對於x≠0部分,我們知道它的最小值在x=b處取得,最小值爲λ。現在的問題是λ與b2到底誰更小?最小者將是函數f(x)的最小值。求解不等式b2>λ可得

此時最小值在x=0處取得;

        求解不等式b2<λ可得

此時最小值在x=b處取得;

        因此


與前面的硬閾值(Hard Thresholding)對比一下,發現了麼?若將上式中的b視爲變量,sqrt(λ)視爲閾值,上式即爲硬閾值(Hard Thresholding)的公式。

        至此,我們可以得到優化問題

的解爲


注:該式爲硬閾值(Hard Thresholding)的矩陣形式,這裏的B是一個向量,應該是逐個元素分別執行硬閾值函數;。

3、硬閾值(HardThresholding)的變形

        當優化問題變爲

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

此時的解爲

4、硬閾值(Hard Thresholding)的MATLAB代碼

        硬閾值(Hard Thresholding)的函數代碼可以寫成專門針對優化問題

        MATLAB函數代碼如下(參考了文獻【5】倒數第2頁):

  1. function [ hard_thresh ] = hardthresholding( b,lambda )
  2. sel = (abs(b)>sqrt(lambda));
  3. hard_thresh = b.*sel;
  4. end

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

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

  1. function [ x ] = hard( b,T )
  2. sel = (abs(b)>T);
  3. x = b.*sel;
  4. end

如此之後,若要解決優化問題


只需調用hard(B, sqrt(λ))即可;若要解決優化問題

只需調用hard(B, sqrt(2*λ))即可。

5、硬閾值(HardThresholding)測試代碼

        硬閾值(Hard Thresholding)要解決的優化問題目標函數是非凸的,不太常見,手邊目前沒有其它函數求解這個問題,因此測試代碼只能測一下這個函數編寫的正確與否了:

  1. clear all;close all;clc;
  2. b = [-0.8487 -0.3349 0.5528 1.0391 -1.1176]';
  3. lambda = 0.5;
  4. x1=hardthresholding(b,lambda)
  5. x2=hard(b,sqrt(lambda))
  6. fprintf('\nError between hardthresholding and hard = %f\n',norm(x1-x2))

這裏就不給出輸出結果了。可以運行一下,從輸出結果來看,函數的功能是正確的。

        另外,可以在matlab裏輸入以下命令看一個軟閾值的圖像:

x=-5:0.01:5;T=1;y=hard(x,T);plot(x,y);grid;

6、結束語

        終於搞明白了硬閾值和軟閾值,在文獻【3】最後作者提到“哎,數學不好害死人啊,什麼時候才能達到大牛們的高度啊”,相信很多人會有同樣的感覺吧。但轉念一想,我們不可能把矩陣分析、數值分析、泛函分析、最優化、組合數學等(腦子裏就想到了這麼多)所有的數學基礎課內容都學完再去搞研究的,邊研究邊學習,哪兒不會了補哪兒纔是最正常的模式吧……

        再說了,如果讓你單純的學數學基礎,你可能會感覺非常無聊,可能還會經常抱怨一句:學這些枯燥的數學有什麼用呢?

        還是繼續前進吧,想信自己,路會越走越寬的……

7、參考文獻

【1】Donoho D L, JohnstoneJ M. Ideal spatial adaptation by wavelet shrinkage[J]. Biometrika, 1994, 81(3):425-455.

2Wright SJ, Nowak R D, Figueiredo M A T. Sparse reconstruction by separableapproximation[J]. IEEE Transactions on Signal Processing, 2009, 57(7):2479-2493.

3http://blog.sina.com.cn/s/blog_6d0e97bb01015vq3.html

4Elad M,Figueiredo M A T, Ma Y. On the Role of Sparse and Redundant Representations inImage Processing[J]. Proceedings of the IEEE, 2010, 98(6):972-982.

【5】http://www.docin.com/p-553314466.html

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