機器學習「傻瓜式」理解(7)梯度下降法(第二部分)

2021-10-03 14:54:58 字數 992 閱讀 1048

事實上,我們在實際的生產活動中,最經常使用的便是小批量梯度下降法,這種方法綜合了隨機梯度下降法和批量梯度下降法兩種演算法,一定程度上避免了他們的缺點,這種演算法實現的思路便是每次計算優化的方向既不是檢視所有的樣本也不是檢視單一的樣本,而是每次抽取k個樣本,把這k個樣本的梯度作為優化方向。這樣有兩個優點:

(1)較之批量梯度下降法,小批量梯度下降法執行速度更快。

(2)較之隨機梯度下降法,比之更穩定,更能接近批量梯度下降演算法的優化方向。

實現**已更新到github中。

github

梯度下降法的其他思考

我們有幾個問題待解決,那便是我們在bgd和sgd中具體封裝實現的時候,計算梯度的方法是使用的推導公式,但是如何去確定梯度下降法的準確性這一問題需要解決,因為有時候我們推導出來的公式可能會有一些錯誤。

我們使用數學嚴格公式的方式推導的計算導數的公式為:

**封裝如下:

def

dj_debug

(theta,x_b,y,epsilon)

: res = np.empty(

len(theta)

)for i in

range

(res)

: theta_1 = theta.copy(

) theta_1[i]

+= epsilon

theta_2 = theta.copy(

) theta_2[i]

-= epsilon

res[i]

=(j(x_b,theta_1,y)

- j(x_b,theta_2,y))/

(2*epsilon)

return res

機器學習(三) 梯度下降法

本部落格大部分參考了這篇博文 在微積分裡面,對多元函式的引數求 偏導數,把求得的各個引數的偏導數以向量的形式寫出來,就是梯度。比如函式f x,y 分別對x,y求偏導數,求得的梯度向量就是 f x f y 簡稱gr adf x,y 或者 f x,y 如果是3個引數的向量梯度,就是 f x f y,f ...

機器學習(二) 梯度下降法

前言 在上篇博文機器學習 一 中,最後我們提到,通過計算代價函式j 是否收斂於最小值來確定假設函式的引數 進而訓練出機器學習中的線性回歸演算法,那麼如何來找到使得j 最小話的引數 呢,本篇博文將介紹一種常用的方法,梯度下降法來確定引數 值。一 對於單特徵線性回歸,梯度下降法的演算法如下 repeat...

機器學習「傻瓜式」理解(6)梯度下降法(第一部分)

看到梯度下降演算法,首先我們應該去了解幾個問題,這是什麼?幹什麼用的?為什麼會產生這個概念或者事物?實現的具體思路是什麼?為什麼這麼實現,其背後的原理是什麼?首先我們應該明確的一點是,所謂的梯度下降演算法並不是乙個機器學習演算法,而是乙個基於搜尋的最優化演算法。我們在上一節所講到的線性回歸演算法的目...