點滴- 機器學習中的優化問題
本文是李宏毅老師機器學習教學視頻觀看筆記,文中所用材料如無額外標記,都取自李宏毅老師的視頻。
在機器學習,尤其是深度學習問題中,我們有一系列樣本 ,其中 可以代表樣本的屬性,而 則可代表某個與屬性相關的目標值。我們通過這些樣本調整模型參數,使得給定輸入屬性後,其輸出與真實目標值儘可能接近。為此,我們需要定義一個loss function:
這個loss function描述了模型輸出與實際目標的偏差,是關於模型參數的函數,我們需要找到一套使loss function最小的參數: ,這樣模型能最好地反映樣本信息。但要指出的是,能很貼切反映樣本信息的模型並不一定是最好的模型,因為該模型在訓練樣本中表現出色不代表它具有較強的泛化能力。換句話說,單純一味追求loss function在樣本集最小是一個優化問題,它不等價於「學習」,它不關注模型是否過擬合、是否可以遷移到其他未參與訓練樣本。即認為學習是有條件的優化。
現在我們先放下「學習」,專註於「優化」。如果loss function不是一個凸函數,那麼優化loss function的這個過程實際上是在進行非凸優化,這是NP-hard的一個問題。
怎麼優化這個loss function?
為了簡便,我們把用 表示loss function,藉助泰勒展開,loss function在參數等於 的鄰域 可以表示為:
設 是一個 維參數向量,因此上述展開是高維的泰勒展開,對於這個展開式,當展開階數較低時,雖然在 處與原函數最接近,但隨著參數(即函數自變數)取值離鄰域越遠,展開式與原函數的偏差會越大,而如果階數無窮延伸的話,展開式就無窮接近原函數了。因為這樣的多項式在求導、運算方面都具有明顯優勢,因此我們以這個多項式為研究優化問題的基礎。在上式中, 是loss function在 的偏導,可以寫為 ,同樣是一個向量,其中的某個元素 ,易得 是一個標量; 表示黑塞矩陣(Hessian Matrix),其每個元素 ,顯然我們有 ,即黑塞矩陣是一個對稱矩陣。 此外, 表示向量和矩陣相乘,其結果也是一個標量。
當 多項式 只展開到一階時,即 ,它是關於參數的一次函數,即我們在鄰域附近用一條直線(下圖綠線)近似原函數(下圖黑線)(為了簡便,忽略高維的參數空間,用一維代替):
為了找loss function的最小值,在這個當前參數所在的鄰域中,把原函數的求導近似為多項式求導,並令導數為0,求取極小點,即 ,其中,右邊第一項為常數,求導為0,即梯度 。但是因為現在是用一條直線近似原函數,梯度是一個定值,所以不能一步就令梯度為0,而只能用一個學習率來控制參數的調整:,一步步調整參數,這就是我們常見的梯度下降方法。
而如果我們更進一步,將多項式展開至二階,則有 ,顯然它是一個二次函數,也是一個凸函數,如下圖表示(紅線表示展開式,黑線表示原函數):
我們要找的是loss function的最小值,那麼在這個鄰域中,我們把原函數的求導近似為多項式求導,並令導數0,求取極小點:
同理,可化簡為:
令上式等於0,可得 ,注意這個前提是 可逆。在這裡我們很容易想到,常用的梯度下降: ,兩者都是基於現在所處的位置,找下一個位置,使得loss function變小,不同的是,後者是通過學習率控制步幅,一步步試探走下去,而前者是一步到位,即更新一次就找到當前所處位置所在鄰域中使loss function最小的參數,在這裡 既調整了梯度方向,又調整了更新步幅。
上面這個過程就是Newtons Method。再通過一幅圖加深理解:
如上圖所示,紅線代表原函數在對應參數鄰域的二階泰勒展開,是二次函數。假設剛開始參數是在 的位置,可以看到展開的多項式在 處與原函數重合,隨著取值離 越遠,兩者偏差越大。我們在 處用展開式近似原函數,通過求取展開式的極(小)值點更新參數位置到 ,接下來在 處重新進行泰勒展開,再次求取此時展開式的極值點,以此類推,就可以接近原函數的極值點了。
在調整參數的過程中,我們有可能到達原函數的極大值點、極小值點、鞍點,在這三個地方梯度 為0,此時我們有:
由上式所示,當取值落在上述的三個地方時,一階展開為0,二階項變成了多項式的關鍵。
如何根據二階項來判斷現在的真實處境呢?
關鍵在於對稱矩陣 。在這裡首先明確兩個定義:
- 若 是正定矩陣(positive definite),那麼對於任意 ,都有 ,這也意味著 的所有特徵值取值為正;
- 若 是半正定矩陣(semi-positive definite),那麼對於任意 ,都有 ,這也意味著 的所有特徵值取值非負;
- 若 是負定矩陣(negative definite),那麼對於任意 ,都有 ,這也意味著 的所有特徵值取值為負;
- 若 是半負定矩陣(semi-negative definite),那麼對於任意 ,都有 ,這也意味著 的所有特徵值取值非正。
現在把 看做是上面的 :
- 若 是正定矩陣,則表示二階項大於0恆成立,即 恆成立,說明 是其所在鄰域內的最低點,表示當前到達了局部最小值的位置;
- 若 是負定矩陣,則表示二階項小於0恆成立,即 恆成立,說明在 是其所在鄰域內的最高點,表示當前到達了局部最大值的位置;
- 若在當前鄰域時既有 ,也有 ,那麼說明現在處於鞍點。(一種方法是通過判斷 行列式大小,若小於0則表示處於鞍點)。
那麼如果 呢?此時我們就不能簡單判斷了,就如前面所說的一階展開項為0的情況,此時其後面更高階的項是多項式的關鍵,我們需要展開至更高階來分析。
下面再以矩陣特徵向量的視角分析一下。
設 的特徵向量為 ,特徵值為 ,即 。
現在我們可以令 : ,可以看到:
- 當 與特徵向量方向一致時,參數更新後的loss function的變化值近似為 。
- 若 與特徵向量方向並不一致,那麼我們可以把看做是多個特徵向量的組合:
由於 是對稱矩陣,它的所有特徵向量正交( ),易推得:
由以上兩種情況我們可以得到結論:當 的特徵值都為正時,loss function的變化值必然為正,此時同樣可得: 是其所在鄰域內的最低點,表示當前到達了局部最小值的位置;當 的特徵值都為負時,loss function的變化值必然為負,此時同樣可得: 是其所在鄰域內的最低高點,表示當前到達了局部最大值的位置;若特徵值取值正負不定時,則表示loss function變化方向不定,表示到達鞍點。
推薦閱讀:
※機器學習中的過擬合
※【5】如何理解CNN中的池化?
※機器學習的範式擴展
※讓機器「讀懂」放射學報告
※一維搜索方法總結
TAG:機器學習 |