多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > FISTA的由來:從梯度下降法到ISTA & FISTA

FISTA的由來:從梯度下降法到ISTA & FISTA

來源:程序員人生   發(fā)布時間:2016-06-01 17:23:31 閱讀次數(shù):14322次

前言:

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

  本篇博文先從解決優(yōu)化問題的傳統(tǒng)方法“梯度降落”開始,然后引入ISTA,再上升為FISTA,最后在到其利用(主要在圖象的去模糊方面和特點匹配)。文章主要參考資料以下:
  [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)方法為最小2乘法,思想很簡單粗魯:使得重構(gòu)誤差||Ax-b||2最小。即:

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

  1)如果A為非奇特矩陣,即A可逆的話,那末可得該問題的精確解為x=Ab。

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


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


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

注:懲罰項也能夠是L2或其他范數(shù)。


1.1 梯度降落法的缺點

斟酌更加1般的情況,我們來討論梯度降落法。有沒有束縛的優(yōu)化問題以下:


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

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

  F(x1) >= F(x2)

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


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

從上圖可以看出:初始點不同,取得的最小值也不同。由于梯度降落法求解的是局部最小值,受初值的影響較大。如果函數(shù)f(x)為凸函數(shù)的話,則局部最小值亦為全局最小值。這時候,初始點只對迭代速度有影響。

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

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

但是,tk最后還是作用在xk⑴上,得到xk。因此,更加樸素的思想應(yīng)當(dāng)是:序列{xk}的個數(shù)盡量小,即每次迭代步伐盡量大,函數(shù)值減少得盡量多。那末就是關(guān)于序列{xk}的選擇了,如何更好的選擇每個點xk,使得函數(shù)值更快的趨近其最小值。


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

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

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


2.ISTA算法

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

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


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


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


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


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


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


該函數(shù)的最小值表示為,P_L是proximal(近端算子)的簡寫情勢


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


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


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


但是,固定步長的ISTA的缺點是:Lipschitz常數(shù)L(f)不1定可知或可計算。例如,L1范數(shù)束縛的優(yōu)化問題,其Lipschitz常數(shù)依賴于ATA的最大特點值。而對大范圍的問題,非常難計算。因此,使用以下帶回溯(backtracking)的ISTA:


理論證明:ISTA的收斂速度為O(1/k);而FISTA的收斂速度為O(1/k2)。實際利用中,F(xiàn)ISTA亦明顯快于ISTA。其證明進程還是看這篇文章:[1]。


3.FISTA

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

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


固然,斟酌到與ISTA一樣的問題:問題范圍大的時候,決定步長的Lipschitz常數(shù)計算復(fù)雜。FISTA與ISTA1樣,亦有其回溯算法。在這個問題上,F(xiàn)ISTA與ISTA并沒有區(qū)分,上面也說了,F(xiàn)ISTA與ISTA的區(qū)分僅僅在于每步迭代時近似函數(shù)起始點的選擇。更加簡明的說:FISTA用1種更加聰明的辦法選擇序列{xk},使得其基于梯度降落思想的迭代進程更加快速地趨近問題函數(shù)F(x)的最小值。

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


值得注意的是,在每步迭代中,計算近似函數(shù)的起止點時,F(xiàn)ISTA使用前兩次迭代進程的結(jié)果xk⑴,xk⑴,對其進行簡單的線性組合生成下1次迭代的近似函數(shù)起始點yk。方法很簡單,但效果卻非常好。固然,這也是有理論支持的。

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

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

4.ISTA&FISTA的利用(去模糊)

LASSO是1個圖象處理中經(jīng)典的目標(biāo)方程

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


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

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

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


4.1 LASSO問題用ISTA求解

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

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

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

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

因而,我們首先看對f做1般的遞歸降落。我們可以參照(13)式,即可以得到:

這時候我們可以看到,假設(shè)g是1個開拆分的函數(shù)(比如L1范數(shù)),我們就能夠?qū)γ烤S分別進行坐標(biāo)降落,也就是將N維的最小值問題,轉(zhuǎn)化成N個1D的最小值問題。我們發(fā)現(xiàn),如果的話,那末這個問題有解析解,即每步的迭代可以寫成:


其中稱作shrinkage operator。


4.2 LASSO問題用FISTA求解

FISTA其實就是對ISTA利用Nestrerov加速。1個普通的Nestrerov加速遞歸降落的迭代步驟是:


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



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

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


5.ISTA&FISTA的利用(特點匹配)


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

轉(zhuǎn)載請注明:Pual-Huang+地址




生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 天天在线天天综合网色 | 亚洲成a人在线观看 | 女人18毛片a级毛片一区二区 | 激情啪啪精品一区二区 | 1区2区3区| 另类zoofilia杂交videos| 欧美视频一区二区三区在线观看 | 久久免费视频观看 | 老师邪恶影院a啦啦啦影院 老司机av | 亚洲三级中文字幕 | 国产精品福利一区二区 | 亚洲最大在线观看 | 热久久国产欧美一区二区精品 | 久久精品在这里 | 日本一区二区网站 | 久久久久国产精品免费免费 | 亚洲人成影院在线高清 | 亚洲看看 | 久久精品伊人 | ww在线观视频免费观看 | 亚洲欧美日韩高清一区二区三区 | 国产亚洲精品午夜高清影院 | 亚洲国产精品高清在线一区 | 国产精品高清全国免费观看 | www.精品| 操操操操网 | 国产日本欧美在线观看乱码 | 视频www | 18欧美同性videos可播放 | 欧美视频xxxx | 亚洲人成伊人成综合网久久久 | 中国毛片网 | 亚洲春色在线观看 | 亚洲资源站| 操操网址 | 久久国产精品老人性 | 国产精品欧美韩国日本久久 | 国产日本韩国不卡在线视频 | 国产小网站 | 亚洲视屏在线 | 性猛交xxxxx按摩 |