泛統計理論初探——梯度下降方法簡要比較

數據挖掘-簡要比較梯度下降方法

梯度下降方法初探
   本文的內容主要是介紹幾種簡單的梯度下降方法,比如隨機梯度下降方法、小批量梯度下降方法,並對它們的優缺點進行比較,梯度下降方法是一種求解凸函數的常見學習方法。我們都知道在機器學習中的損失函數一般是凸函數,當然隨着深度學習的發展,很多損失函數都不是凸函數,這個時候使用梯度下降方法可能效果就不好,會陷入局部最優點而停止下降。本文討論的梯度下降方法假設針對的是損失函數爲凸函數的情況,其他的下降方法會在後續文章中介紹。
   首先我們來回顧損失函數,比如之前的文章討論的常見的損失函數,線性迴歸的損失函數是(y-f(x))*(y-f(x)) ,即是真實值與預測值的差值的平方,顯然該損失函數是一個常見的凸函數,當我們求解線性迴歸的參數時,可以對損失函數按照參數求導,當我們有m個樣本的時候,就有對參數如下的迭代逼近公式:
在這裏插入圖片描述
    可以發現梯度下降公式就是損失函數求導後乘以特徵x向量的求和,並對m個樣本做同樣的操作後取平均值,這樣的形式就可以統稱爲梯度下降法。但是顯然受到m的值的影響,如果數據量較大的時候m會很大,這個時候計算會比較慢,因爲每一次下降的計算都需要計算m個樣本的值,比如m=100萬的時候,那麼假設從初始值到最終穩定值總共走了10步,每次都需要計算100萬個樣本的值,那麼這個計算量是非常大的。
   在這個基礎上,我們引出SGD方法,即Stochastic Gradient Descent,也就是隨機梯度下降方法,該方法本質上的形式是和上面的梯度下降方法是一樣的,因爲函數的形式幾乎一樣,但是不需要對m個樣本做操作,每次只需要隨機選擇1個樣本進行計算即可,並以那個樣本計算的值作爲梯度下降的方向和下降的距離。公式如下:
在這裏插入圖片描述
   而相對於這種SGD方法,其實有一些偶然性的因素影響,比如選擇的樣本剛好是異常點,那麼最後可能無法找到參數的最優解,因爲樣本選擇是隨機的。那麼我們又可以選擇稍微多一點的樣本進行計算,也就是小批量梯度下降方法MBGD,英文是Mini-Batch Gradient Descent,公式的形式也和上面的一樣,就是體現在這個Mini上面,即計算的時候不是隨機選擇1個樣本也不是所有m個樣本,而是使用K個樣本進行求解,公式形式如第一個隨機梯度下降方法的公式,只是將m改爲K即可。
   其實還有動量梯度下降方法,英文名是Gradient descent with Momentum,該方法是避免在最後的幾步下降的時候的震盪現象而提出的,在之前的參數迭代的公式里加入動量v,目的是在參數向量中,衡量各個參數的收斂情況,即收斂幾乎不變的參數加快其收斂速度,收斂較快的參數減慢其收斂速度。公式如下:
在這裏插入圖片描述
   顯然可以發現上述的公式是加入了動量,第一個公式右邊部分除了梯度下降的裏的形式,還有上一步的動量v(t-1),一般來說y是超參數可以取0.8到0.9,另一個超參數η可以取0.1到0.2,因爲η=1-y,具體取值視作實際問題而決定,通過加入動量的形式就可以綜合考慮上一步的梯度下降情況,其實就是一種把當前步的梯度和上一步的梯度進行加權的思路。
   上面幾種梯度下降方法其實都是從BGD批量梯度下降方法延伸而來,只是針對數據量或是收斂情況進行方法的優化,從而可以更好地、更快地進行參數的收斂到全局最優點。從優缺點來說,對於數據量較大的情況,使用SGD可以較快的迭代,但是可能容易陷入局部最優點,並且由於每次選擇的樣本都不一樣,因此有一定可能是震盪較強的,即容易“一步小、一步大”,一般認爲規避方法是選擇不同的初始值進行多次SGD方法的梯度下降,這樣可以減小由於隨機選擇樣本帶來的偶然性。對於數據量不大的情況,可以直接使用MBGD方法進行求解,但是也可以選擇不同的初始值進行迭代計算,因爲MGBD雖然不會大幅震盪,但也是存在陷於局部最優點的情況。而如果使用MBGD方法的效果不理想,那麼可以使用動量梯度下降方法Momentum,該方法可以規避一些震盪的情況,但是需要的計算量稍大,使用者需要權衡。
   總的來說,梯度下降方法是一種利用1階偏導數的下降方法,本質上是容易陷入局部最優點的,因爲在1階偏導數裏的信息是不完全的,丟失的較多的。後面的文章會講到利用2階導數來進行下降的方法。但是梯度下降方法是計算量較小並且下降較快的方法,初學者需要對不同情況進行考慮,認識不同下降方法的優缺點併合理利用。

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