梯度下降(Gradient descent)


梯度下降(Gradient descent

    在有監督學習中,我們通常會構造一個損失函數來衡量實際輸出和訓練標簽間的差異。通過不斷更新參數,來使損失函數的值盡可能的小。梯度下降就是用來計算如何更新參數使得損失函數的值達到最小值(可能是局部最小或者全局最小)。

梯度下降計算流程

 假設我們模型中的參數為,損失函數為,則計算過程為

         

 其中為學習率。通過不斷求參數的偏導數來更新函數,直到(1)中的參數不在發生變化,就達到收斂狀態。由於(1)的表達形式比較繁雜,因此可以簡化如(3);其中(2)稱作梯度

        

梯度下降數學解釋

  梯度下降的目的就是為了更新參數使達到極小值。這個的過程如圖1-1所示,①我們先隨機初始化參數,就相當於在圖1-1上任意取一點;②如果我們想要更新參數取到極小值的話,對於這一點可以尋找該點附近下降最快的方向,並沿着該方向移動一定距離;③移動距離后到達另外一個點,重復步驟②,直到該點沒有可下降的方向,就取到極小值;

 

圖1-1 梯度下降直觀圖

方向導數

 上述的步驟②中,我們需要在某個點找到其附近下降最快的方向,這就需要先討論方向導數;偏導數反應的是函數沿坐標軸變化率。但是,有時候我們考慮函數沿某個方向的變化率。便於討論,以方向向量代替方向。而向量的本質就是其在各個坐標軸(更嚴格點可以稱作標准正交基)上的投影的值。因此,計算方向導數,可以轉化為求解該方向向量在各個坐標軸上的投影的偏導數的總和。因此,對於函數f(x,y)在點p(x0,y0)可微分,那么函數在該點的任意方向的方向導數為

           

  其中為方向x軸的余弦值,為方向y軸的余弦值。

梯度

  方向導數是函數f(x,y)在點p(x0,y0)任意方向的變化率,而當在點的變化率取到最大值的方向就稱為梯度,記作

            

  其中i=(1,0),j=(0,1);f(x,y)在梯度方向上取得變化率最大值的證明如下:

 對於(4)可以拆解成為兩個向量的內積,設,則

         

 

  其中都為定值;a就是梯度(5),b為方向的單位向量,即b方向相同;當a,b方向相同時,,(6)取到最大值。因此,當方向向量與梯度相同時,f(x,y)在點p(x0,y0)的方向導數最大。

學習率

  學習率控制着梯度下降收斂的速度,甚至影響到你的函數能否取到極小值。假設學習率跟損失函數值的關系如圖1-2所示,當學習率設置的剛剛好(紅色線段),那么剛好能夠取到極小值,而且迭代次數也不多;當學習率設置太小的話(藍色線段),也能夠取到極小值,只是迭代的次數就增加;而但你的學習率設置過大的話(綠色線段),由於步長太大,無論如何都取不到極小值。

 

圖1-2 學習率跟損失函數值的關系 

當損失函數的參數為一維或者二維才能夠可視化出圖1-2,如果有多維的參數的話,是無法可視化。因此,可以可視化迭代次數跟損失函數值之間的關系圖,如圖1-3所示。

 

圖1-3 迭代次數跟損失函數值

自適應學習率   

    在迭代的過程中,學習率不應該是一成不變的。因為在剛開始迭代的時候,初始點跟最終的極小值之間是有較遠的距離,因此此時可以學習率可以設置的大一些。但是當快接近極小值時,就應該減小學習率,以避免步長過大,錯過極小值;

    一種簡單的學習率設置如(7),隨着迭代次數增加,的值就越來越小

     

    雖然(7)可以使得學習率隨着迭代次數增加而減少,但是更理想的情況應該是,對不同的參數,應該設置不同的學習率。

Adagrad

     Adagrad是將學習率的取值跟之前所有偏微分值的均方值的根號有關系。以單個參數為例,具體的計算如下

           

 

  其中,為(7);表示對的偏導數;表示將先前所有對參數的偏導數的平方進行累加,並求均值,最后再取根號;

隨機梯度下降(Stochastic Gradient Descent

  在進行梯度下降時,我們構造的損失函數為(10),此時我們是將所有的樣本都考慮進來,在進行參數更新。

    

  而隨機梯度下降則是每次隨機選擇一個樣本x,就對參數進行更新。對應的損失函數為

     

  采用隨機梯度下降的話,參數的更新速度會更快一些。假設我們有20個樣本,那么對於隨機梯度下降則是選擇一個樣本就更新一次參數,選擇完20個樣本也就更新20次;對於梯度下降的話,構造(10)就是構造20個(11),並將20個(11)進行累加,再進行參數更新,選擇20個樣本只完成一次更新。   

特征縮放(Feature Scaling

    不同的特征的取值范圍往往是不同的,因此特征的取值變化對最終的輸出結果也有不一樣的效果。以(12)為例,若,顯然y的取值受x2的影響更多;但如果實際中x1才是最重要的特征,就會導致最終的擬合效果不佳。

   

 不同的特征變化范圍也會影響梯度下降的收斂速度,如圖1-4。由於不同特征的取值范圍就導致不同的參數應該采用不同的參數,否則收斂就會有難度;而將特征進行相同特征處理后,這個損失函數等高線呈圓形,采用相同的參數也可以完成收斂。

 

圖1-4 特征縮放對收斂的影響

均值歸一化

  對於單個特征來說,計算如下

   

 其中為的X均值,s為X的標准差(Standard Deviation 

參考資料

[1]機器學習-李宏毅

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM