日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

FISTA浅析

發(fā)布時(shí)間:2025/3/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FISTA浅析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:

FISTA(A fast iterative shrinkage-thresholding algorithm)是一種快速的迭代閾值收縮算法(ISTA)。FISTA和ISTA都是基于梯度下降的思想,在迭代過程中進(jìn)行了更為聰明(smarter)的選擇,從而達(dá)到更快的迭代速度。理論證明:FISTA和ISTA的迭代收斂速度分別為O(1/k2)和O(1/k)。

  本篇博文先從解決優(yōu)化問題的傳統(tǒng)方法“梯度下降”開始,然后引入ISTA,再上升為FISTA,最后在到其應(yīng)用(主要在圖像的去模糊方面和特征匹配)。文章主要參考資料如下:
  [1] A Fast Iterative Shrinkage-Thresholding Algorithm for Linear Inverse Problems。

  [2] Proximal Gradient Descent for L1 Regularization

  [3] 線性回歸及梯度下

-------------------------------------------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------我是分割線--------------------------------------------------------

1.梯度下降法

考慮以下線性轉(zhuǎn)換問題:b = Ax + w  (1)

  例如在圖像模糊問題中,A為模糊模板(由未模糊圖像通過轉(zhuǎn)換而來),b為模糊圖像,w為噪聲。并且,A和b已知,x為待求的系數(shù)。

  求解該問題的的傳統(tǒng)方法為最小二乘法,思想很簡(jiǎn)單粗暴:使得重構(gòu)誤差||Ax-b||2最小。即:

對(duì)f(x) = ||Ax-b||2求導(dǎo),可得其導(dǎo)數(shù)為:f'(x) = 2AT(Ax-b)。對(duì)于該問題,令導(dǎo)數(shù)為零即可以取得最小值(函數(shù)f(x)為凸函數(shù),其極小值即為最小值)。

  1)如果A為非奇異矩陣,即A可逆的話,那么可得該問題的精確解為x=A-1b。

 2)如果A為奇異矩陣,即A不可逆,則該問題沒有精確解。退而求其次,我們求一個(gè)近似解就好,||Ax-b||2<=?。


其中,||x||_1為懲罰項(xiàng),用以規(guī)范化參數(shù)x。該例子使用L1范數(shù)作為懲罰項(xiàng),是希望x盡量稀疏(非零元素個(gè)數(shù)盡可能少),即b是A的一個(gè)稀疏表示。||Ax-b||2<=?則為約束條件,即重構(gòu)誤差最小。問題(3)也可以描述為:


式子(4)即為一般稀疏表示的優(yōu)化問題。希望重構(gòu)誤差盡可能小,同時(shí)參數(shù)的個(gè)數(shù)盡可能少。

注:懲罰項(xiàng)也可以是L2或其他范數(shù)。


1.1 梯度下降法的缺陷

考慮更為一般的情況,我們來討論梯度下降法。有無約束的優(yōu)化問題如下:


梯度下降法基于這樣的觀察:如果實(shí)值函數(shù)F(x)在點(diǎn)a處可微且有定義,那么函數(shù)F(x)在點(diǎn)a沿著梯度相反的方向-?F(a)下降最快。

  基于此,我們假設(shè)f(x)連續(xù)可微(continuously differentiable)。如果存在一個(gè)足夠小的數(shù)值t>0使得x2 = x1 - t?F(a),那么:

  F(x1) >= F(x2)

  梯度下降法的核心就是通過式子(6)找到序列{xk},使得F(xk) >= F(xk-1)。


下圖詳細(xì)說明了梯度下降的過程:

從上圖可以看出:初始點(diǎn)不同,獲得的最小值也不同。因?yàn)樘荻认陆捣ㄇ蠼獾氖蔷植孔钚≈?#xff0c;受初值的影響較大。如果函數(shù)f(x)為凸函數(shù)的話,則局部最小值亦為全局最小值。這時(shí),初始點(diǎn)只對(duì)迭代速度有影響。

  再回頭看一下式子(6),我們使用步長(zhǎng)tk和導(dǎo)數(shù)?F(xk)來控制每一次迭代時(shí)x的變化量。再看一下上面那張圖,彩色繽紛那張。對(duì)于每一次迭代,我們當(dāng)然希望F(x)的值降得越快越好,這樣我們就能更快速得獲得函數(shù)的最小值。因此,步長(zhǎng)tk的選擇很重要。

  如果步長(zhǎng)tk太小,則找到最小值的迭代次數(shù)非常多,即迭代速度非常慢,或者說迭代的收斂速度很慢;而步長(zhǎng)太大的話,則會(huì)出現(xiàn)overshoot the minimum的現(xiàn)象,即不斷在最小值左右徘徊,跳來跳去的,如下圖所示:

然而,tk最后還是作用在xk-1上,得到xk。因此,更為樸素的思想應(yīng)該是:序列{xk}的個(gè)數(shù)盡可能小,即每一次迭代步伐盡可能大,函數(shù)值減少得盡可能多。那么就是關(guān)于序列{xk}的選擇了,如何更好的選擇每一個(gè)點(diǎn)xk,使得函數(shù)值更快的趨近其最小值。


-----------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------我是分割線--------------------------------------------------------

ISTA和FISTA求解最小化問題的思想就是基于梯度下降法的,它們的優(yōu)化在于對(duì){xk}的選擇上。這里我們不講證明,只講思想。想看證明的話,請(qǐng)看參考資料[1]。


2.ISTA算法

ISTA(Iterative shrinkage-thresholding algorithm),即迭代閾值收縮算法。

先從無約束的優(yōu)化問題開始,即上面的式子(5):


這時(shí)候,我們還假設(shè)了f(x)滿足Lipschitz連續(xù)條件,即f(x)的導(dǎo)數(shù)有下界,其最小下界稱為L(zhǎng)ipschitz常數(shù)L(f)。這時(shí),對(duì)于任意的L>=L(f),有:


基于此,在點(diǎn)xk附近可以把函數(shù)值近似為:


在梯度下降的每一步迭代中,將點(diǎn)xk-1處的近似函數(shù)取得最小值的點(diǎn)作為下一次迭代的起始點(diǎn)xk,這就是所謂的proximal regularization算法(其中,tk=1/L)。


上面的方法只適合解決非約束問題。而ISTA要解決的可是帶懲罰項(xiàng)的優(yōu)化問題,引入范數(shù)規(guī)范化函數(shù)g(x)對(duì)參數(shù)x進(jìn)行約束,如下:


使用更為一般的二次近似模型來求解上述的優(yōu)化問題,在點(diǎn)y,F(x) := f(x) + g(x)的二次近似函數(shù)為:


該函數(shù)的最小值表示為,P_L是proximal(近端算子)的簡(jiǎn)寫形式:


忽略其常數(shù)項(xiàng)f(y)和?F(y),這些有和沒有對(duì)結(jié)果沒有影響。再結(jié)合式子(11)和(12),PL(y)可以寫成:


顯然,使用ISTA解決帶約束的優(yōu)化問題時(shí)的基本迭代步驟為:


固定步長(zhǎng)的ISTA的基本迭代步驟如下(步長(zhǎng)t = 1/L(f)):


然而,固定步長(zhǎng)的ISTA的缺點(diǎn)是:Lipschitz常數(shù)L(f)不一定可知或者可計(jì)算。例如,L1范數(shù)約束的優(yōu)化問題,其Lipschitz常數(shù)依賴于ATA的最大特征值。而對(duì)于大規(guī)模的問題,非常難計(jì)算。因此,使用以下帶回溯(backtracking)的ISTA:


理論證明:ISTA的收斂速度為O(1/k);而FISTA的收斂速度為O(1/k2)。實(shí)際應(yīng)用中,FISTA亦明顯快于ISTA。其證明過程還是看這篇文章:[1]。


3.FISTA

FISTA(A fast iterative shrinkage-thresholding algorithm)是一種快速的迭代閾值收縮算法(ISTA)。

FISTA與ISTA的區(qū)別在于迭代步驟中近似函數(shù)起始點(diǎn)y的選擇。ISTA使用前一次迭代求得的近似函數(shù)最小值點(diǎn)xk-1,而FISTA則使用另一種方法來計(jì)算y的位置。理論證明,其收斂速度能夠達(dá)到O(1/k2)。固定步長(zhǎng)的FISTA的基本迭代步驟如下:


當(dāng)然,考慮到與ISTA同樣的問題:問題規(guī)模大的時(shí)候,決定步長(zhǎng)的Lipschitz常數(shù)計(jì)算復(fù)雜。FISTA與ISTA一樣,亦有其回溯算法。在這個(gè)問題上,FISTA與ISTA并沒有區(qū)別,上面也說了,FISTA與ISTA的區(qū)別僅僅在于每一步迭代時(shí)近似函數(shù)起始點(diǎn)的選擇。更加簡(jiǎn)明的說:FISTA用一種更為聰明的辦法選擇序列{xk},使得其基于梯度下降思想的迭代過程更加快速地趨近問題函數(shù)F(x)的最小值。

  帶回溯的FISTA算法基本迭代步驟如下:


值得注意的是,在每一步迭代中,計(jì)算近似函數(shù)的起止點(diǎn)時(shí),FISTA使用前兩次迭代過程的結(jié)果xk-1,xk-1,對(duì)其進(jìn)行簡(jiǎn)單的線性組合生成下一次迭代的近似函數(shù)起始點(diǎn)yk。方法很簡(jiǎn)單,但效果卻非常好。當(dāng)然,這也是有理論支持的。

-----------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------我是分割線--------------------------------------------------------

4.ISTA&FISTA的應(yīng)用(去模糊)

LASSO是一個(gè)圖像處理中經(jīng)典的目標(biāo)方程

第二項(xiàng)的1范數(shù)限制了x的稀疏性,前文已說過,在此不再敘述。


比如在圖像去模糊的問題中,已知模糊的圖像b,和模糊函數(shù)R,我們想恢復(fù)去模糊的圖像I。這些變量的關(guān)系可以表達(dá)成I*R=b,其中*為卷積。在理想狀態(tài)下,b沒有任何噪音,那么這個(gè)問題就很簡(jiǎn)單。基于卷積定理,兩個(gè)函數(shù)在時(shí)域的卷積相當(dāng)于頻域的相乘,那么我們只需要求出b和R的傅里葉變換,然后相除得到I的傅里葉變換,再將其恢復(fù)到時(shí)域。但是一般來說模糊圖像b含有噪聲,這使得頻域中的操作異常不穩(wěn)定,所以更多時(shí)候,我們希望通過以下方程求得I

其中模糊算子R表現(xiàn)成矩陣形式,I和b表示為1維向量,函數(shù)p作為規(guī)范項(xiàng)。我們將I小波分解,I=Wx,其中W為小波基,x為小波基系數(shù)。我們知道圖像的小波表示是稀疏的,那么目標(biāo)方程就變成了LASSO的形式

其中A=RW。現(xiàn)在的問題是,這個(gè)方程由于L1范數(shù)的存在,不是處處可微的,如果用subgradient的方法,收斂的速度會(huì)很慢。


4.1 LASSO問題用ISTA求解

因此我們用ISTA(Iterative Shrinkage-Thresholding Algorithm)。這個(gè)算法可以解決以上f+g形式的最小化問題,但I(xiàn)STA適用于以下形式問題的求解:

1.目標(biāo)方程是f+g的形式

2.f和g是凸的,f是可導(dǎo)的,g無所謂

3.g需要足夠簡(jiǎn)單(可拆分的,可以做坐標(biāo)下降的coordinate descent)

于是,我們首先看對(duì)f做一般的遞歸下降。我們可以參照(13)式,便可以得到:

這時(shí)我們可以看到,假如g是一個(gè)開拆分的函數(shù)(比如L1范數(shù)),我們就可以對(duì)每一維分別進(jìn)行坐標(biāo)下降,也就是將N維的最小值問題,轉(zhuǎn)化成N個(gè)1D的最小值問題。我們發(fā)現(xiàn),如果的話,那么這個(gè)問題有解析解,即每步的迭代可以寫成:


其中稱作shrinkage operator。


4.2 LASSO問題用FISTA求解

FISTA其實(shí)就是對(duì)ISTA應(yīng)用Nestrerov加速。一個(gè)普通的Nestrerov加速遞歸下降的迭代步驟是:


應(yīng)用到FISTA上的話,就是把第3步換成ISTA的迭代步驟。可以證明FISTA可以達(dá)到1/(t^2)的收斂速度。(t是迭代次數(shù))通過下面的實(shí)驗(yàn)可以看到,同樣迭代了300次,左圖(ISTA)仍未收斂,圖像仍然模糊。而右圖(FISTA)已經(jīng)基本還原了去模糊的原圖。



-----------------------------------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------我是分割線--------------------------------------------------------


5.ISTA&FISTA的應(yīng)用(特征匹配)



f is the transformation function between U and V. Then we can see that:

through the above function. We can get:


=========================

參考自:

1、Junhao_wu: http://www.cnblogs.com/JunhaoWu/p/Fista.html

2、Beyond Algorithm is Math : http://blog.csdn.net/iverson_49/article/details/38354961

https://blog.csdn.net/huang1024rui/article/details/51534524

總結(jié)

以上是生活随笔為你收集整理的FISTA浅析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。