ModelArts自動學習實現中秋月餅分類
998
2025-04-01
梯度下降(Gradient Descent)算法是一個一階最優化算法,通常也稱為最速下降算法。為了找到一個損失函數(或目標函數)的局部最小值,必須向函數前點對應梯度(或者近似梯度)的反方向移動適當的距離,從而實現迭代搜索。如果相反地向梯度正方向迭代進行搜索,則會接近函數的局部最大值點,這個相反的過程被稱為梯度上升算法。本節以梯度下降算法為例進行探討。梯度下降算法基于以下觀察:如果實數函數J(w)在w處可微且有定義,那么函數J(w)在w點沿著梯度相反的方向-▽J(w)下降最快。如圖2.2所示,沿中間路線的梯度的相反方向下山,要遠比左側和右側路線所走的路程要短。
基于此,梯度下降算法的思想包括以下部分。(1)選定一個初始點w0。(2)沿梯度反方向逐步更新參數,即wt=wt-1-α▽J(wt-1)直至收斂。這里α>0,α為步長(Step Size),又稱為學習率(Learning Rate),它的值可以在訓練之前設為定值,也可以根據訓練情況調整。基于梯度的定義,對于足夠小的α值,有J(wt)≤J(wt-1)。那么從w0出發,如果給定合適的步長,會逐步得到更小的損失函數J(w0)≥J(w1)≥J(w2)≥…。如果順利,序列wt將逐漸收斂到損失函數的極小值,這一過程如圖2.3所示。
假設損失函數J定義在平面上,并且函數圖像類似于一個碗形容器。橢圓形的曲線代表等高線,即函數J為常數的集合構成的曲線,越往中間值越小。任意選擇一個初始點w0,箭頭指向該點梯度的反方向(梯度方向與該點為等高線垂直),逐步沿著梯度下降方向更新參數w,將最終到達碗底,即函數J的極小值點。2.1節把求解線性回歸問題轉換為求最小化損失函數J(w)問題,那么就可以用梯度下降算法來求解。對于一組給定的數據集{(x(i),y(i))},根據x的屬性個數定義參數w,線性方程h(x(i))與損失函數的關系如下:
隨機選取一個初始點w0及合適的步長α,計算梯度公式為:
式中,,在原屬性向量上添加了一個常數1的維度,用于更新偏置參數w0。
基于梯度▽J(w),可以逐步更新wt,通過wt=wt-1-α▽J(wt-1)得到最優的參數值。梯度下降算法不僅用于線性回歸,機器學習中很多問題都可以通過梯度下降算法最小化損失函數來解決。梯度下降算法又稱批量梯度下降(Batch Gradient Descent)算法,這里的批量是指用到了所有的訓練樣本個數m。在實際問題中,往往有相當多的樣本數,例如一個學校的學生人數、銀行里的客戶數目、硬盤里的圖片等。尤其對于復雜的學習模型,如深度神經網絡,其參數本身就很龐大,如果每次計算梯度都用到所有的數據樣本,那么計算量將是相當大的,甚至是不可計算的。事實上可以將該算法想象成一個隨機的過程,也就是每次僅隨機抽取一個點,在期望上與所有點加起來的平均大體相似。這樣就可以用單個點的梯度代替平均的梯度,該單個點的梯度叫隨機的梯度,整體的梯度可以看成是隨機梯度的期望值。基于隨機梯度下降的線性規劃問題迭代算法涉及公式如下:
式中,x(i)——第t次迭代時,從m個數據樣本中隨機采樣到的樣本。由于每次更新只用到一個樣本,而不用遍歷所有數據集,迭代速度就會很快,但是迭代次數以及收斂的極小值可能不是最優的,因為隨機采樣的偏差會導致每次選取的梯度方向不一定是最優的。
在實際應用中,使用更廣泛的是一種被稱為小批量(Mini-batch)梯度下降的算法,這是介于批量梯度下降算法和隨機梯度下降算法之間的折中算法。每次隨機選取樣本數量為b(b 算法2.1 小批量梯度下降算法 輸入:數據集,步長為α,小批量訓練樣本的大小為b,迭代次數為T 輸出:收斂的參數wT (1) 初始化參數w0 (2) for t∈{1,2,…,T} (3) 從m個樣本中均勻隨機選取b個樣本 (4) 計算梯度并更新參數: 算法2.1概括了小批量梯度下降算法的主要流程,其中mb為從m個樣本中隨機采樣的b個樣本的索引集合,Ji(w)為第i個樣本上的損失函數。步長的選擇、收斂的條件等問題將在以后部分介紹。 機器學習 AI
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。