圖片無法顯示wordpress網(wǎng)站seo優(yōu)化8888
引言
梯度下降法(Gradient Descent)是一種廣泛應用于機器學習領域的基本優(yōu)化算法,它通過迭代地調整模型參數(shù),最小化損失函數(shù)以求得到模型最優(yōu)解。
通過閱讀本篇博客,你可以:
1.知曉梯度下降法的具體流程
2.掌握不同梯度下降法的區(qū)別
一、梯度下降法的流程
梯度下降法的流程通常分為以下四個步驟。
1.初始化模型參數(shù)
初始化模型參數(shù)其實就是random隨機一個初始的??(一組
)。這樣我們就可以得到上圖中的 Starting Point(開始點)。
2.計算當下參數(shù)的梯度
計算模型參數(shù)的梯度,其實就是對于當前損失函數(shù)所在位置進行求偏導,公式:
公式推導??是損失函數(shù),
?是樣本中某個特征維度?
?對應的權值系數(shù),也可以寫成?
?。對于多元線性回歸來說,損失函數(shù)?
?(推導過程在9.深入線性回歸推導出MSE——不容小覷的線性回歸算法-CSDN博客中),因為我們的MSE中?
、
?是已知的,
?是未知的,而?
?不是一個變量而是許多向量組成的矩陣,所以我們只能對含有一堆變量的函數(shù)MSE中的一個變量求導,即偏導,下面就是對?
?求偏導。
由于鏈式求導法則,我們可以推出:
在多元線性回歸中,?就是?
,也就是?
,我們通常把它寫成
?,所以繼續(xù)推導公式:
由于我們是對??求偏導,那么和?
?無關的可以忽略不計,所以公式變?yōu)?#xff1a;
所以,我們可以得到結論:?對應的梯度(gradient)與預測值?
?和真實值?
?有關,同時還與每個特征維度?
?有關。如果我們分別對每個維度求偏導,即可得到所有維度對應的梯度值。
3.根據(jù)梯度和學習率更新參數(shù)
通過11.梯度下降法的思想——舉足輕重的模型優(yōu)化算法-CSDN博客的學習,我們已經(jīng)知道了梯度下降法的公式:
在獲得了梯度之后,我們可以將公式表示為:
通過這個公式我們就可以去更新參數(shù)逼近最優(yōu)解。
4.判斷是否收斂
在如何判斷收斂問題上,我相信大多數(shù)的人都會認為直接判斷梯度(gradient)是否為0。其實這樣的方法是錯誤的,由于非凸損失函數(shù)的存在,?的情況可能是極大值!所以我們使用了另外一種方法,設置合理的閾值(Threshold)來界定函數(shù)是否收斂。即判斷不等式:
如果前一次的損失函數(shù)??減去這次迭代后的損失函數(shù)?
小于我們設定的閾值
?,那我們認為函數(shù)收斂,當前的參數(shù)就是我們尋求的最優(yōu)解。反之,我們重復第二步與第三步,一直達到最優(yōu)解為止。其實我們是在判斷?
?的下降收益是否更合理,隨著迭代次數(shù)的增多,
?減小的幅度不再變化就可以認為停止在最低點。
二、梯度下降法的分類
我們根據(jù)梯度下降法流程中求取梯度的步驟樣本數(shù)量的不同,將梯度下降法分為三個基本的類別。它們每次學習(更新模型參數(shù))使用的樣本個數(shù),每次更新使用不同的樣本會導致每次學習的準確性和學習時間不同。
1.全量梯度下降(Batch Gradient Descent)
全量梯度下降(Batch Gradient Descent)通過使用整個數(shù)據(jù)集在每次迭代中計算損失函數(shù)的梯度,以此更新模型參數(shù)(也稱批量梯度下降)。由于我們使用整個數(shù)據(jù)集的樣本,所以全量梯度下降的公式為:
在全量梯度下降中,對于??的更新,所有的樣本都有貢獻,也就是參與調整?
?。所以從理論上來說一次更新的幅度是比較大的。
全量梯度下降法的優(yōu)點在于收斂穩(wěn)定,每次更新都朝著全局最優(yōu)的方向移動。并且能夠凈化噪聲,由于使用整個數(shù)據(jù)集計算梯度,隨機噪聲對更新的影響較小,使得損失函數(shù)的路徑相對平滑。
缺點也是相當明顯,當數(shù)據(jù)集非常大時,全量梯度下降法每個迭代計算數(shù)據(jù)集的梯度是非常耗時且占用內存的。所以不適合處理實時數(shù)據(jù),比如在線學習和實時更新數(shù)據(jù)場景。
上圖表示的梯度下降法中兩個維度參數(shù)的關系,我們可以將圓圈看成一個碗的俯視圖,碗底就是我們要找的最優(yōu)解。我們不難發(fā)現(xiàn),全量梯度下降法每次迭代都直接向碗底行進,目標明確。
2.隨機梯度下降(Stochastic Gradient Descent)
隨機梯度下降(Stochastic Gradient Descent)通過使用數(shù)據(jù)集中的一個隨機樣本在每次迭代中計算損失函數(shù)的梯度,以此更新模型參數(shù)。由于使用隨機的一個樣本,所以隨機梯度下降的公式就是:
隨機梯度下降的優(yōu)點在于計算速度快,由于每次迭代只對一個樣本計算梯度,因此更新速度快,適合大規(guī)模數(shù)據(jù)集。它還擁有更強的泛化能力,由于引入了隨機性,SGD能更好地跳出局部最優(yōu),避免過擬合(過擬合相關內容會在專欄后續(xù)文章中更新)。并且能夠處理實時數(shù)據(jù),可以在線學習,所以適用于動態(tài)更新的場景。
同樣地,由于每次更新只基于一個樣本,SGD的收斂并不穩(wěn)定,梯度波動較大,會導致?lián)p失函數(shù)的收斂路徑不平穩(wěn)。并且由于隨機性的存在,SGD通常需要更多的迭代次數(shù)才能收斂到最優(yōu)解,即收斂速度變慢。
從上圖我們可以看出,相比較全量梯度下降,SGD需要迭代更多的次數(shù)才能找到最優(yōu)解。
3.小批量梯度下降(Mini-batch Gradient Descent)
小批量梯度下降(Mini-batch Gradient Descent)通過使用數(shù)據(jù)集的一部分樣本在每次迭代中計算損失函數(shù)的梯度,以此更新模型參數(shù)。由于使用了數(shù)據(jù)集的部分樣本,所以小批量梯度下降的公式為:
小批量梯度下降綜合了全量梯度下降與隨機梯度下降,在更新速度與更新次數(shù)中取得一個平衡。其每次更新從數(shù)據(jù)集中隨機選擇??個樣本進行學習。相對于隨機梯度下降法,小批量梯度下降法降低了收斂的波動性(降低了參數(shù)更新的方差),使得更新更加穩(wěn)定。相對于全量梯度下降法,其提高了每次學習的速度。
小批量梯度下降的優(yōu)點在于平衡了計算效率和收斂穩(wěn)定性。并且不用擔心內存瓶頸而使用向量化計算,還能利用GPU的并行計算能力提高計算速度。在每個小批量中,我們可以設置不同的學習率,提高模型的訓練表現(xiàn)。
小批量梯度下降的缺點則在于樣本的大小會影響訓練效果,所以我們要人為地選擇合適的樣本大小。
從下圖中我們就能看到隨機梯度下降與小批量梯度下降的區(qū)別。
總結
本篇博客講解了梯度下降法的流程和大致的分類。希望可以對大家起到作用,謝謝。
關注我,內容持續(xù)更新(后續(xù)內容在作者專欄《從零基礎到AI算法工程師》)!!!