1. 程式人生 > >硬閾值(Hard Threshoding)函式和軟閾值(Soft Thresholding)函式的區別

硬閾值(Hard Threshoding)函式和軟閾值(Soft Thresholding)函式的區別

一點小插曲:之前一直把“閾yuˋy\grave{u}值“唸作“閥faˊf\acute{a}值”。希望點進來的你沒有讀錯。

說明: 如果要深入理解,建議還是以前兩篇參考資料為主,是同一個作者寫的,有詳細的例子和解釋,通俗易懂。

以下只提一下重點,列舉硬閾值和軟閾值的兩個自認為最簡單易懂的公式。

參考資料:

硬閾值函式和軟閾值函式的區別

公式

公式中,xx為變數,λ\lambda是閾值  

  • 硬閾值(Hard Thresholding)函式

hard(xλ)={x,x>λ0,x<λ hard(x,\lambda)=\begin{cases} x, & |x|>\lambda \\ 0, & |x|<\lambda \end{cases}

  • 軟閾值(Soft Thresholding)函式 soft(xλ)={xλ,xλ0,x=λx+λ,xλ soft(x,\lambda)=\begin{cases} x - \lambda, && x\geq \lambda\\ 0, && |x|=\lambda \\ x + \lambda, && x\leq - \lambda \end{cases}

此處,軟閾值函式有一個更加簡潔明瞭的形式,需要配合符號函式sgn(x)sgn(x)或者sign(x)sign(x)使用。   首先,符號函式sign(x)sign(x)的定義如下: sign(x)={1,x>00,x<0 sign(x) =\begin{cases} 1, & x>0 \\ 0, & x<0 \end{cases} 軟閾值函式可以被表示為: soft(xλ)=sign(x)

max{xλ,0}soft(x,\lambda)=sign(x)max\{|x|-\lambda,0\}

影象

更直觀一點的對比。紅色的線是硬閾值藍色的線是軟閾值

在這裡插入圖片描述

硬閾值(紅色的線)a-aaa處有明顯的階梯式突變,形成斷裂,也就是被“一刀切”。 軟閾值(藍色的線)a-aaa處雖有明顯的轉折,但是仍然連線在一起,實現了一個過渡。

作用

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

minXXB22+λX0 \min\limits_{X}||X-B||^2_2+\lambda||X||_0

  • 軟閾值(Soft Thresholding)可以求解如下優化問題:

minXXB22+λX1 \min\limits_{X}||X-B||^2_2+\lambda||X||_1

其中,X0||X||_0是L0正規化,X1||X||_1是L1正規化,不瞭解的可以看參考資料(3)