cost函式形式:
簡單回顧一下幾個變數的含義:
表1 cost函式解釋
x(i)
每個樣本資料點在某乙個特徵上的值,即特徵向量x的某個值
y(i)
每個樣本資料的所屬類別標籤
m樣本資料點的個數
hθ(x)
樣本資料的概率密度函式,即某個資料屬於1類(二分類問題)的概率
j(θ)
代價函式,估計樣本屬於某類的風險程度,越小代表越有可能屬於這類
我們的目標是求出θ,使得這個代價函式j(θ)的值最小,這裡就需要用到梯度下降演算法。
梯度下降演算法
對於乙個函式,我們要找它的最小值,有多種演算法,這裡我們選擇比較容易用**實現和符合機器學習步驟的梯度下降演算法。
先來看看梯度下降演算法中,自變數的迭代過程。表示如下
可以看到,這是乙個θ值不斷迭代的過程,其中α是學習速率,就是θ的移動「步幅」,後面的偏導數數就是梯度,可以理解為cost函式在θ當前位置,對於j位置特徵的下降速度。
對於二維空間,梯度可以理解為函式影象的切線斜率。即:特徵是一維的
對於多維特徵,cost函式的影象就應該是這樣的,下面舉個例子:
圖1 cost函式舉例
這是乙個二維特徵的cost函式的影象,這個時候,梯度有無限多個,我們不能只說cost函式的梯度,應該說,cost函式在某個方向上的梯度。例如,cost函式在θ0方向上,在(θ0=m,θ1=n)上的梯度就是cost函式與θ1=n這個平面的交線在(m,n)處的斜率。
上面的描述比較抽象,簡單說來,假設影象就是乙個小山坡(有點像吧),你站在影象的(m,n)點處,朝θ0的方向看過去,看到的「山坡」的「坡度」就是上面所說的梯度了。
這個迭代過程,用形象化的語言描述,就是:
我站在山坡上,找到乙個初始點θj,每次我沿著某乙個方向走α這麼長的路,由於總是朝著梯度的方向走,我總會走到山坡底(也就是cost函式的極小值)。
然而,這樣的「盆地」可能有多個,我們不同的走法,可能會走到不同的山底,如圖:
圖2 多「山谷」cost函式
這裡的兩條路線分別走向不同的山谷,這就說明:梯度下降演算法只能求出乙個區域性最小值,不一定是全域性最小值,但這不影響它是乙個好的方法。
這樣,θ
的迭代過程就講清楚了。接下來說一下迭代的終止條件。
迭代肯定不是無限下去的,我們不妨想一下:當我們走到了山谷,再想往某個方向走的時候,發現都不能再往下走了,那麼我們的旅行就終止了。
同樣,當θ
迭代了n次後(就如圖2的黑線一樣),發現接下來走α這麼長的路,下降的高度很小很小(臨界值),或者不再下降,甚至反而往上走了,所以我們的迭代終止條件就是cost函式的減少值小於某個值。
我們再來回顧一下迭代公式(1):其中α
是經驗設定,稱之為learning rate,初始值也是隨機選定,那麼後面的那個梯度呢?
梯度就是cost函式對於特徵向量某一維的偏導數。我們來看看這個怎麼推導和簡化。
【梯度的求解】
先來寫一下大致的推導過程:
稍微解釋一下推導流程,便於理解。
(1)--->(2):使用sigmoid函式的形式g(z)替換hθ(x)、提出公因子,放在式子尾
(2)--->(3):這一步具體推導如下(使用了復合函式的求導公式)
後面的幾步較為簡單,就不另作說明了。
【演算法執行】
到了這裡,我們推出了迭代公式的最終形式:
更一般的形式就是把j去掉,表示對特徵的每一維都如此迭代
注意,在迭代過程中,θ的所有特徵是同步更新的,所以根據給定的資料集,就能使用梯度下降演算法來求解θ了,迭代終止條件即是將當前θ帶入cost函式,求出代價值,與上乙個代價值相減,結果小於閾值,立即停止迭代。
結語公式推導用的也就是偏導數的求解等少量數學公式,關鍵是體會區域性最優的思想
求解函式梯度(Python,numpy
求函式的梯度,也就是所有偏導的組合 import numpy as np defnumberical grandient f,x h 1e 4 定義乙個微小量,不能太小,太小計算機沒法正確表示 grad np.zeros like x 生成和x形狀相同的陣列 for idx in range x.s...
Pytorch自動求解梯度
要理解pytorch求解梯度,首先需要理解pytorch當中的計算圖的概念,在計算圖當中每乙個variable都代表的乙個節點,每乙個節點就可以代表乙個神經元,我們只有將變數放入節點當中才可以對節點當中的變數求解梯度,假設我們有乙個矩陣 1.2.3.4.5.6.我們將這個矩陣 二維張量 首先在pyt...
python 梯度法求解函式極值的例項
如下所示 coding utf 8 a 0.001 定義收斂步長 xd 1 定義尋找步長 x 0 定義乙個種子x0 i 0 迴圈迭代次數 y 0dic import math def f x y math.sin x 定義函式f x sinx return y def fd x y math.cos...