從數學角度探究梯度下降算法的本質

以數據驅動的AI,根本任務有兩個:①建立系統的評價準則或者規則;②尋找最優的歸納偏置。找到最優的歸納偏置關鍵在於參數的優化算法。目前機器學習的參數優化算法集中在遺傳算法,模擬退火,SGD等。1996年非常具有代表性的論文lasso在損失函數的多準則構建上做出了傑出貢獻。這篇論文屬於基礎學科研究領域,對後來的AI理論發展起到了非常大的推進作用。在衆多的AI公開課中,很少有從數學角度深入研究這個課題的,基本都是直接結論的講解。比如碼農們比較關心深度學習參數的調優,可能認爲基礎理論研究不務實。而事實上只有基礎理論研究的突破纔是人工智能向前推動的源動力。本文從最底層的數學角度探究梯度下降的本質,從中可以給出很多工程改進的啓示。本文結構安排如下:

一、預備數學知識;

二、參數搜索算法;

三、最速梯度下降算法;

四、梯度下降算法改進。

第一部分:預備數學知識

1.1 強凸性

這部分的知識是總綱,統領後面的理論推導。本部分屬於《凸優化》算法部分,基礎是微積分和凸函數的一階條件。當機器學習的損失函數滿足強凸性時,對於下水平集s,有以下關係:

根據強凸性的一階條件,設y是x附近的點,有以下關係:

這個很好理解,根據微分的性質就可以搞定。如果一個函數是凸的,還具有以下性質:

,這個代表參數搜索方向與正梯度的夾角總是銳角,如果小於0表示參數搜索方向與負梯度的夾角是銳角,其中y - x表示搜索方向向量。

設z是線段xy之間的一點,有:

根據前面的Hessian矩陣的上下界,得到以下不等式關係:

上述不等式對於屬於下水平集的任意x都成立!接下來的處理很關鍵了,先處理左半部分。把左半部分的不等式看成是關於y的函數,我們可以先求出它的下界,即讓關於y的偏導數=0,得出,帶入不等式中得出它的下界:。因此有以下關係:

 ⑤

由於對於任意的x成立,設函數的最優解滿足下列關係:

那麼就有下列不等式關係了:

設參數經過每次迭代後與理論最優解間的誤差爲,那麼可以推導出以下關係:

1.2 下水平級的條件數

梯度下降算法的迭代次數嚴重依賴下水平集的條件數,或者最優解的Hessian矩陣的條件數,稍後將會看到結論。這部分補充條件數的求解方法。先求解下水平集合的寬度,然後才能求出條件數。設有一個單位方向向量q,z屬於下水平集的元素,那麼下水平集的寬度按照以下方法求解:

那麼條件數爲:

。稍後將會講述條件數的數學意義,先引入一個案例:

從上面的例子可以看出,條件數更大的意義是定義了各向異性或者離心率。比如上述橢球的條件數就是橢球特徵矩陣的條件數,如果條件數很小接近1的話,他就趨近於圓球了。

第二部分:兩個參數搜索算法

有了第一部分的鋪墊,接下來該進入正題了。這部分主要講述兩個參數搜索算法,尤其是回溯直線搜索算法,在工程中具有非常大的意義。在進行參數搜索時,首先要定義參數搜索方向,這部分需要方向導數與梯度以及微分的基本功(可以參考我的“導數與黎曼積分”博客,保證切入點和課本不同)。方向定義好了後才能定義步長,然後探討影響迭代次數的主要因素,最後從影響因素中尋找改進方案。這是尋找最優參數的基本方法論指導。根據這個研究方法,在接下來的兩小節裏,我們先固定搜索方向,即按照梯度下降迭代,然後我們主要討論下降步長問題,在第三部分再討論最速下降方向問題。

2.1 精確直線搜索

看到這個名字,你就該想到它的下降步長是固定的。之所以成爲直線搜索,是因爲每次迭代後數據基本呈現直線關係下降(大致)。先引入幾個符號:

t表示步長,表示參數搜索方向,比如X1 - X0表示從初始點經過一次迭代後的方向向量。在迭代過程中我們用如下公式來表達參數更新:

,它等同於,即。在討論精確直線搜索時,我們要用到第一部分的預備知識,強凸性的不等式部分。設,根據第一部分的不等式④我們得到如下關係(把它看成關於t的函數):

這個不等式恆成立的條件是最後一部分的最小值大於等於f(t)。對t求導數 = 0得到t = 1 / M,帶入進入得到

我們繼續推導

這個過程反應了每步迭代的誤差變化,我們看到誤差收縮係數是 C = 1 - m / M,它是一個<1的係數。我們的要求是當迭代次數達到k後的誤差達到,我們最終得到如下重要結論:

進一步整理得到

≈式成立的條件是當m / M很小時,也就是下水平集或者最優解的Hessian矩陣的條件數很糟糕。我們看到此時的迭代次數幾乎與條件數成正比,K的影響因素包括初始值的選擇,誤差精度以及條件數。

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