導航:首頁 > 源碼編譯 > 隨機梯度下降演算法求函數極值

隨機梯度下降演算法求函數極值

發布時間:2023-12-16 13:52:11

❶ 梯度下降法是什麼

梯度下降是通過迭代搜索一個函數極小值的優化演算法。使用梯度下降,尋找一個函數的局部極小值的過程起始於一個隨機點,並向該函數在當前點梯度(或近似梯度)的反方向移動。梯度下降演算法是一種非常經典的求極小值的演算法。

比如邏輯回歸可以用梯度下降進行優化,因為這兩個演算法的損失函數都是嚴格意義上的凸函數,即存在全局唯一極小值,較小的學習率和足夠的迭代次數,一定可以達到最小值附近,滿足精度要求是完全沒有問題的。並且隨著特徵數目的增多,梯度下降的效率將遠高於去解析標准方程的逆矩陣。

常用的梯度下降法有3種不同的形式:

(1)批量梯度下降法,簡稱BGD,使用所有樣本,比較耗時。

(2)隨機梯度下降法,簡稱SGD,隨機選擇一個樣本,簡單高效。

(3)小批量梯度下降法,簡稱MBGD,使用少量的樣本,這是一個折中的辦法。

機梯度下降法優點:

1、更容易跳出局部最優解。

2、具有更快的運行速度。

❷ 隨機梯度下降演算法

以線性回歸為例:
預測函數為:

代價函數:

重復:{

}

當數據量過大時,梯度下降的演算法會變得很慢,因為要對所有的數據進行求和。因為每次重復梯度下降都是所有數據全部求和,所以梯度下降演算法又稱之為 批量梯度下降(Batch Gradient Descent)

隨機梯度下降在每一次迭代中,不用考慮全部的樣本,只需要考慮一個訓練樣本。

針對一個樣本,它的代價函數:

而針對所有樣本的代價函數可以看作是對每個樣本代價函數的平均:

隨機梯度下降演算法如下:
第一步,先隨機打亂訓練集樣本。
第二步,進行梯度下降:
重復 {
循環所有樣本 for i=1,2,3,...,m {

}
}

一開始隨機打亂數據是為了對樣本集的訪問是隨機的,會讓梯度下降的速度快一點。

該演算法一次訓練一個樣本,對它的代價函數進行一小步梯度下降,修改參數 ,使得它對該樣本的擬合會好一點;然後再對下一個樣本進行運算,直到掃描完所有的訓練樣本,最後外部在迭代這個過程。

跟批量梯度下降演算法不同的是,隨機梯度下降不需要等到所有樣本求和來得到梯度項,而是在對每個樣本就可以求出梯度項,在對每個樣本掃描的過程中就已經在優化參數了。

在梯度下降過程中,批量梯度下降的過程趨向於一條直線,直接收斂到全局最小值;而隨機梯度下降不太可能收斂到全局最小值,而是隨機地在其周圍震盪,但通常會很接近最小值。

隨機梯度下降通常需要經過1-10次外部循環才能接近全局最小值。

在批量梯度下降中,要判斷是否收斂,需要在每一次迭代演算法後計算 的值,根據值的變化來判斷收斂。
在執行隨機梯度下降時,不需要計算所有的樣本的代價函數,只用在對某個樣本進行梯度下降前計算該樣本的代價函數 ,為了判斷是否收斂,可以計算多次迭代後 的平均值,例如1000次迭代,在每次更新 前,計算最後1000次的的cost的平均值。

選擇每隔多少次計算成本函數對梯度下降的過程也有影響:

上圖中藍色曲線是每1000次迭代,紅色的是每隔5000次迭代。
因為隨機梯度下降時會出現震盪,當迭代次數少時發現下降的曲線起伏很多,而迭代次數變大時,曲線就會變得平滑許多。缺點是每隔5000個計算,會增加計算成本。

增加迭代次數可以判斷演算法是否正確:

上圖藍色的是1000個迭代次數,通過這條曲線,不能很好的判斷成本函數是否在下降,這時就需要添加迭代次數,當增加到5000次,則可以通過平滑的曲線判斷,當下滑曲線是紅色的時,說明演算法是有效的,代價函數值在下降;當是紫色的曲線時,可以看到是一個平坦的線,這時判斷演算法可能出現問題了。

在隨機梯度下降中,學習率 也會影響演算法,當學習率減小時,下降曲線的震盪就會變小,而且會收斂到一個更好的解:

當看到曲線是上升的時候,可以嘗試減小學習率看看效果。

在隨機梯度下降中,如果想要收斂到全劇最小值,需要隨著時間的變化減小學習率 的值:

學習率等於一個常數除以迭代次數加另一個常數,隨著迭代次數增大,學習率會減小;但這會造成常數1和常數2的選擇問題。

❸ 隨機梯度下降法原理和步驟

隨機梯度下降主要用來求解類似於如下求和形式的優化問題:
[公式]
梯度下降法:
[公式]
當[公式]很大時,每次迭代計算所有的[公式]會非常耗時。
隨機梯度下降的想法就是每次在[公式]中random選取一個計算代替如上的[公式],以這個隨機選取的方向作為下降的方向。
[公式][公式]
由於[公式], 當選取step size [公式]時,演算法在期望的意義下收斂。
注意到在[公式] 靠近極小值點[公式]時,[公式],這導致隨機梯度下降法精度低。由於方差的存在,要使得演算法收斂,就需要[公式]隨[公式]逐漸減小。因此導致函數即使在強凸且光滑的條件下,收斂速度也只有[公式]. 後來提出的變種SAG,SVRG,SDCA都是在降方差,為了保證在[公式]時,方差趨於0。以上提到的幾種變種都能達到線性收斂速度。

閱讀全文

與隨機梯度下降演算法求函數極值相關的資料

熱點內容
如何登錄伺服器看源碼 瀏覽:522
如何做伺服器端 瀏覽:154
注冊伺服器地址指什麼 瀏覽:433
文本命令行 瀏覽:97
撲克牌睡眠解壓 瀏覽:193
rc4演算法流程圖 瀏覽:159
胡蘿卜解壓方法 瀏覽:35
掃描pdf格式軟體 瀏覽:876
程序員在銀行開賬戶 瀏覽:516
android資料庫下載 瀏覽:749
中午伺服器崩潰怎麼辦 瀏覽:425
產品經理和程序員待遇 瀏覽:442
解憂程序員免費閱讀 瀏覽:109
錄像免壓縮 瀏覽:508
總結所學過的簡便演算法 瀏覽:362
南昌哪些地方需要程序員 瀏覽:761
三台伺服器配置IP地址 瀏覽:175
如何用命令方塊連續對話 瀏覽:280
win7linux共享文件夾 瀏覽:305
命令符打開本地服務 瀏覽:601