小批量梯度下降演算法步驟 梯度下降演算法原理及推導

2021-10-14 10:29:41 字數 1878 閱讀 1494

今天我們就來介紹用來優化代價函式的梯度下降演算法(gradient descent algorithm)。

1 原理

那梯度下降究竟為何方神聖?我來用最通俗的語言來介紹下:

假設你站在華山之巔,你現在想以最快速度下山,那你肯定是找一條最陡峭的路走。你環顧四周,找到了一條路線,恩,這個方向是最陡的。於是你就出發了,走了一會發現,這個方向不是最陡的路了。你就停下來,換了個最陡的方向,繼續往下走。重複這個步驟,你最終到達了山腳下。

那麼,你從山頂到山腳的整個下山的過程,就是梯度下降。

其中,f(x)為

注意,我們變數的上標是指樣本數量,從1到m;下標指特徵數量,從0到n。

我們的目標是

即在j(w)取最小值時,所對應的w值。這時,梯度下降法就上場了,用公式表示為:

其中,「:=」為賦值的含義;α為學習速率,又叫步長,可以理解為我們下山時每走一步的距離;α右邊的是j(w)對w求的偏導(偏導就是對w向量中的每個元素分別求導)。

這個公式的含義就是,先初始確定乙個w的值,然後用(1)式計算新的w值,反覆迭代。我們不斷更新引數w的值,直到j(w)取得最小值時,停止迭代。

我們先把(1)式中j(w)對w的偏導求出來,會容易理解些:

將(2)式代入(1)式,可得

這就是線性回歸中的梯度下降演算法。最後,我手畫一張圖來把梯度下降的原理大概表示下:

如上圖,我們先確定乙個w,然後按步長α一步一步減小w的值。最後當w取某一值時,j(w)取得最小值,任務就完成了。

說到這裡,可能大家就有疑問了,梯度下降的公式(1)到底是怎麼來的呢?別急,我們馬上就來推導。

2 推導

首先,我們需要泰勒近似定理的一階展開式:

上邊那個倒三角符號表示梯度,就是對w求偏導的意思。從上式不難看出:

也就是說:

上式說明了什麼呢?注意到w和▽j(w)均為向量,也就是說,引數w變化的方向與梯度方向之間的夾角大於90°。我們希望j(w)每次迭代的變化量越大越好,那什麼時候達到最大呢,就是引數w的變化量與梯度方向正好相反的時候,也就是二者的夾角達到180°的時候。我們用公式來說明下:

也就是說,兩個向量的點積等於它們的模相乘,再乘以兩個向量的夾角α。不難看出,當cosα=-1時,也就是α為180°時,兩個向量的點積取到負值最大。

因為兩個向量方向相反,故我們可推出:

其中α右邊的為單位向量,可將梯度的模與阿爾法合併,簡化為:

移項,可得:

下篇我會介紹有關模型擬合資料時產生的不利情況,以及如何避免這種情況發生,敬請期待。

批量梯度下降,隨機梯度下降,小批量梯度下降

在機器學習領域中,梯度下降的方式有三種,分別是 批量梯度下降法bgd 隨機梯度下降法sgd 小批量梯度下降法mbgd,並且都有不同的優缺點。下面我們以線性回歸演算法 也可以是別的演算法,只是損失函式 目標函式 不同而已,它們的導數的不同,做法是一模一樣的 為例子來對三種梯度下降法進行比較。假設 特徵...

小批量梯度下降演算法步驟 優化演算法之梯度下降演算法

在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。1.批量梯度下降法bgd 現在下面以lr演算法為例對這三種演算法從原理到 進行講解 由lr演算法可知lr演算法的損失函式為 損失函式j 最小值時的 則...

小批量梯度下降演算法 python

coding utf 8 created on tue mar 13 20 49 03 2018 author import numpy as np from scipy import stats import matplotlib.pyplot as plt 產生訓練資料,生成模型為2 x 5 r...