超分辨率重建——梯度下降、座標下降、牛頓迭代

在閱讀相關文獻的時候,經常會遇到梯度下降,座標下降,牛頓迭代這樣的術語,今天把他們的概念整理一下。


梯度下降 

整理自百度

梯度下降法是一個最優化算法,通常也稱爲最速下降法。

顧名思義,梯度下降法的計算過程就是沿梯度下降的方向求解極小值(也可以沿梯度上升方向求解極大值)。
其迭代公式爲
  
,其中
  
代表梯度負方向,
  
表示梯度方向上的搜索步長。梯度方向我們可以通過對函數求導得到,步長的確定比較麻煩,太大了的話可能會發散,太小收斂速度又太慢。一般確定步長的方法是由線性搜索算法來確定,即把下一個點的座標看做是ak+1的函數,然後求滿足f(ak+1)的最小值的 即可。
因爲一般情況下,梯度向量爲0的話說明是到了一個極值點,此時梯度的幅值也爲0.而採用梯度下降算法進行最優化求解時,算法迭代的終止條件是梯度向量的幅值接近0即可,可以設置個非常小的常數閾值。
舉一個非常簡單的例子,如求函數
  
的最小值。
利用梯度下降的方法解題步驟如下:
1、求梯度,
 
2、向梯度相反的方向移動
  
,如下
 
,其中,
  
爲步長。如果步長足夠小,則可以保證每一次迭代都在減小,但可能導致收斂太慢,如果步長太大,則不能保證每一次迭代都減少,也不能保證收斂。
3、循環迭代步驟2,直到
  
的值變化到使得
  
在兩次迭代之間的差值足夠小,比如0.00000001,也就是說,直到兩次迭代計算出來的
  
基本沒有變化,則說明此時
  
已經達到局部最小值了。
4、此時,輸出
  
,這個
  
就是使得函數
  
最小時的
  
的取值 。

%% 最速下降法圖示
% 設置步長爲0.1,f_change爲改變前後的y值變化,僅設置了一個退出條件。
syms x;f=x^2;
step=0.1;x=2;k=0;         %設置步長,初始值,迭代記錄數
f_change=x^2;             %初始化差值
f_current=x^2;            %計算當前函數值
ezplot(@(x,f)f-x.^2)       %畫出函數圖像
axis([-2,2,-0.2,3])       %固定座標軸
hold on
while f_change>0.000000001                %設置條件,兩次計算的值之差小於某個數,跳出循環
    x=x-step*2*x;                         %-2*x爲梯度反方向,step爲步長,!最速下降法!
    f_change = f_current - x^2;           %計算兩次函數值之差
    f_current = x^2 ;                     %重新計算當前的函數值
    plot(x,f_current,'ro','markersize',7) %標記當前的位置
    drawnow;pause(0.2);
    k=k+1;
end
hold off
fprintf('在迭代%d次後找到函數最小值爲%e,對應的x值爲%e\n',k,x^2,x)
缺點:
  • 靠近極小值時收斂速度減慢。
  • 直線搜索時可能會產生一些問題。
  • 可能會“之字形”地下降。
    容易陷入局部最優解


座標下降
轉自http://blog.csdn.net/u013802188/article/details/40476989

問題的描述:給定一個可微的凸函數,如果在某一點x,使得f(x)在每一個座標軸上都是最小值,那麼f(x)是不是一個全局的最小值。

形式化的描述爲:是不是對於所有的d,i都有

這裏的代表第i個標準基向量。

答案爲成立。


這是因爲:


但是問題來了,如果對於凸函數f,若不可微該會怎樣呢?


答案爲不成立,上面的圖片就給出了一個反例。

那麼同樣的問題,現在,其中g是可微的凸函數,每一個hi都是凸的?

答案爲成立。


證明如下,對每一個y



座標下降(Coordinate descent):

這就意味着,對所有的,其中g是可微的凸函數,每一個hi都是凸的,我們可以使用座標下降尋求一個最小值,我們從一個最初的猜想開始,對k進行循環:


每一次我們解決了,我們都會使用新的值。

Tseng (2001)的開創性工作證明:對這種f(f在緊集上連續,且f到達了其最小值),的極限值,k=1,2,3….是f的一個最小元(minimizer)。

在實分析領域:

隨後收斂與x*( Bolzano-Weierstrass)

收斂於f*( monotoneconvergence)

其中:

座標下降的順序是任意的,可以是從1到n的任意排列。

可以在任何地方將單個的座標替代成座標塊

關鍵在於一次一個地更新,所有的一起更新有可能會導致不收斂


我們現在討論一下座標下降的應用:


線性迴歸:

,A有p列:

最小化xi,對所有的xj,j不等於i:


解得:


座標下降重複這個更新對所有的

對比座標下降與梯度下降在線性迴歸中的表現(100個實例,n=100,p=20)


將座標下降的一圈與梯度下降的一次迭代對比是不是公平呢?是的。


其中r=y-Ax。每一次的座標更新需要O(n)個操作,其中O(n)去更新r,O(n)去計算,所以一圈就需要O(np),跟梯度下降是一樣的。


我們用相同的例子,用梯度下降進行比較,似乎是與計算梯度下降的最優性相違背。

那麼座標下降是一個一階的方法嗎?事實上不是,它使用了比一階更多的信息。


現在我們再關注一下支持向量機:

SVM對偶中的座標下降策略:


SMO(Sequentialminimal optimization)算法是兩塊的座標下降,使用貪心法選擇下一塊,而不是用循環。

回調互補鬆弛條件(complementaryslackness conditions):


v,d,s是原始的係數,截距和鬆弛,其中,使用任何的(1)中i使得來計算d,利用(1)(2)來計算2.

SMO重複下面兩步:

選出不滿足互補鬆弛的αi,αj

最小化αi,αj使所有的變量滿足條件


第一步使用啓發式的方法貪心得尋找αi,αj,第二步使用等式約束。


牛頓迭代法
轉自http://blog.csdn.net/zkq_1986/article/details/52317258

牛頓迭代法(Newton’s method)又稱爲牛頓-拉夫遜方法(Newton-Raphson method),它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。 
把f(x)在x0點附近展開成泰勒級數 f(x) = f(x0)+(x-x0)f’(x0)+(x-x0)^2*f”(x0)/2! +… 取其線性部分,作爲非線性方程f(x) = 0的近似方程,即泰勒展開的前兩項,則有f(x0)+f’(x0)(x-x0)=0 設f’(x0)≠0則其解爲x1=x0-f(x0)/f’(x0) 這樣,得到牛頓法的一個迭代序列:x(n+1)=x(n)-f(x(n))/f’(x(n))。





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