3種型別的梯度下降演算法總結

2022-01-29 21:14:18 字數 2936 閱讀 3166

參考資料:梯度下降優化演算法總結(必看!!!!!!!)

梯度下降法(gradient descent)推導和示例(必看!!!)

梯度下降法 (gradient descent algorithm,gd) 是為目標函式j(θ),如代價函式(cost function), 求解全域性最小值(global minimum)的一種迭代演算法。(其可由泰勒一階展開式推出!)

我們使用梯度下降法最小化目標函式j(θ

)。在使用梯度下降法時,首先初始化引數值,然後一直改變這些值,直到得到全域性最小值。其中,我們計算在每次迭代時計算代價函式的導數,然後使用如下公式同時更新引數值:

α表示學習速率(learning rate)。

下面的偽**能夠解釋其詳細原理:

基於如何使用資料計算代價函式的導數,梯度下降法可以被定義為不同的形式(various variants)。確切地說,根據使用資料量的大小(the amount of data),時間複雜度(time complexity)和演算法的準確率(accuracy of the algorithm),梯度下降法可分為:

1.       批量梯度下降法(batch gradient descent, bgd);

2.       隨機梯度下降法(stochastic gradient descent, sgd);

3.       小批量梯度下降法(mini-batch gradient descent, mbgd)。

這是梯度下降法的基本型別,這種方法使用整個資料集(the complete dataset)去計算代價函式的梯度。每次使用全部資料計算梯度去更新引數,批量梯度下降法會很慢,並且很難處理不能載入記憶體(don』t fit in memory)的資料集。在隨機初始化引數後,按如下方式計算代價函式的梯度:

其中,m是訓練樣本(training examples)的數量。

note:

1. 如果訓練集有3億條資料,你需要從硬碟讀取全部資料到記憶體中;

2. 每次一次計算完求和後,就進行引數更新;

3.  然後重複上面每一步;

4. 這意味著需要較長的時間才能收斂;

5. 特別是因為磁碟輸入/輸出(disk i/o)是系統典型瓶頸,所以這種方法會不可避免地需要大量的讀取。

上圖是每次迭代後的等高線圖,每個不同顏色的線表示代價函式不同的值。運用梯度下降會快速收斂到圓心,即唯一的乙個全域性最小值。批量梯度下降法不適合大資料集。

批量梯度下降法被證明是乙個較慢的演算法,所以,我們可以選擇隨機梯度下降法達到更快的計算。隨機梯度下降法的第一步是隨機化整個資料集。在每次迭代僅選擇乙個訓練樣本去計算代價函式的梯度,然後更新引數。即使是大規模資料集,隨機梯度下降法也會很快收斂。隨機梯度下降法得到結果的準確性可能不會是最好的,但是計算結果的速度很快。在隨機化初始引數之後,使用如下方法計算代價函式的梯度:

這裡m表示訓練樣本的數量。

如下為隨機梯度下降法的偽碼:

1. 進入內迴圈(inner loop);

2. 第一步:挑選第乙個訓練樣本並更新引數,然後使用第二個例項;

3. 第二步:選第二個訓練樣本,繼續更新引數;

4. 然後進行第三步…直到第n步;

5. 直到達到全域性最小值

如下圖所示,隨機梯度下降法不像批量梯度下降法那樣收斂,而是遊走到接近全域性最小值的區域終止。

小批量梯度下降法是最廣泛使用的一種演算法,該演算法每次使用m個訓練樣本(稱之為一批)進行訓練,能夠更快得出準確的答案。小批量梯度下降法不是使用完整資料集,在每次迭代中僅使用m個訓練樣本去計算代價函式的梯度。一般小批量梯度下降法所選取的樣本數量在50到256個之間,視具體應用而定。

1.這種方法減少了引數更新時的變化,能夠更加穩定地收斂。

2.同時,也能利用高度優化的矩陣,進行高效的梯度計算。

隨機初始化引數後,按如下偽碼計算代價函式的梯度:

這裡b表示一批訓練樣本的個數,m是訓練樣本的總數。

notes:

1. 實現該演算法時,同時更新引數。

2. 學習速率

α(也稱之為步長)。如果

α過大,演算法可能不會收斂;如果α比較小,就會很容易收斂。

3. 檢查梯度下降法的工作過程。畫出迭代次數與每次迭代後代價函式值的關係圖,這能夠幫助你了解梯度下降法是否取得了好的效果。每次迭代後j(

θ)應該降低,多次迭代後應該趨於收斂。

4. 不同的學習速率在梯度下降法中的效果

本文詳細介紹了不同型別的梯度下降法。這些演算法已經被廣泛應用於神經網路。下面的圖詳細展示了3種梯度下降法的比較。

梯度下降演算法理解(梯度的含義)

梯度 梯度的本意是乙個向量 向量 表示某一函式在該點處的方向導數沿著該方向取得最大值,即函式在該點處沿著該方向 此梯度的方向 變化最快,變化率最大 為該梯度的模 參考這個部落格 1 梯度下降 gradient descent 3 梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人...

梯度下降法 3 實現線性回歸中的梯度下降法

構造資料集 import numpy import matplotlib.pyplot as plt 設定隨機數種子 numpy.random.seed 666 x 2 numpy.random.random size 100 y x 3.4.numpy.random.normal size 100...

梯度下降演算法的python實現

import sys training data set each element in x represents x0,x1,x2 x 1,0.3 1,1.3 1,2.3 1,3.2 1,4.4 y i is the output of y theta0 x 0 theta1 x 1 theta2...