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

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

發布時間: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。以上提到的幾種變種都能達到線性收斂速度。

閱讀全文

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

熱點內容
逆拓撲排序演算法描述 瀏覽:588
如何遠程鏈接到linux伺服器地址 瀏覽:630
抹茶app支付方式怎麼選 瀏覽:554
獵人寶寶攻擊命令 瀏覽:159
操作系統是編譯原理嗎 瀏覽:646
雲伺服器遷移後 瀏覽:260
excel格式轉換pdf 瀏覽:987
登錄器一般存在哪個文件夾 瀏覽:535
中興光貓機器碼演算法 瀏覽:330
android響應時間測試 瀏覽:940
java編程思想第四版答案 瀏覽:888
如何對nbt編程 瀏覽:885
mscpdf 瀏覽:948
文件夾d盤突然0位元組可用 瀏覽:272
吃火腿腸的解壓場面 瀏覽:339
衛星鍋加密教程 瀏覽:792
php7的特性是什麼 瀏覽:469
編譯類高級語言源代碼運行過程 瀏覽:177
科普中國app怎麼分享 瀏覽:87
51單片機與32單片機比較 瀏覽:422