梯度下降演算法推導與Python實現

2022-09-13 22:12:25 字數 2246 閱讀 1711

在求解機器學習演算法的模型引數,即無約束優化問題時,梯度下降(gradient descent)是最常採用的方法之一,另一種常用的方法是最小二乘法。這裡就對梯度下降法做乙個完整的總結。

①梯度下降的演算法(矩陣式)推演

②梯度下降演算法的python實現

2.1 梯度下降演算法推演

(1)式為當前位置所要求的梯度函式,(2)式將其展開生成(3)式,(4)式根據跡的特質,實數的跡等於其本身。(5)(6)(7)進行簡化得到(8)式,根據公式產生式(9)(10),帶入(8)式,生成(11)式,得出梯度。

2.2 python實現

1

import

matplotlib.pyplot as plt

2from sklearn.datasets.samples_generator import

make_blobs

3import

numpy as np45

#這裡用的案例是邏輯回歸分類

6def

sigmoid(x):

7return 1.0/(1+np.exp(-x))

89 (x, y) = make_blobs(n_samples=250, n_features=2, centers=2,

10 cluster_std=1.05, random_state=20)

1112

#為所有的theta0,新增乙個值為1的變數x0

13 x =np.c_[np.ones((x.shape[0])), x]

1415

#初始化權重theta,這裡是w

16 w = np.random.uniform(size=(x.shape[1],))

1718 losshistory =

19 a = -0.01 #

步長20

21for i in np.arange(1,100):

22 preds =sigmoid(x.dot(w))

23 error = preds -y

24 loss = np.sum(error ** 2)

2526

print("

[info] epoch #{}, loss=

".format(epoch + 1, loss))

27 gradient = x.t.dot(error) /x.shape[0]

28 w += a *gradient

2930

for i in np.random.choice(250, 10):

31 activation =sigmoid_activation(x[i].dot(w))

32 label = 0 if activation < 0.5 else 1

33print("

activation=; predicted_label={}, true_label={}

".format(

34activation, label, y[i]))

3536

plt.figure()

37 plt.scatter(x[:, 1], x[:, 2], marker="

o", c=y)

38 plt.plot(x, y, "r-"

)3940#

construct a figure that plots the loss over time

41 fig =plt.figure()

42 plt.plot(np.arange(0, 100), losshistory)

43 fig.suptitle("

training loss")

44 plt.xlabel("

epoch #")

45 plt.ylabel("

loss")

46 plt.show()

最後生成影象

【參考資料】

1. 劉建平pinard梯度下降(gradient descent)小結

2. 梯度下降法數學推導

3. gradient descent with python

4. 簡單多元線性回歸

梯度下降演算法 梯度下降演算法公式推導

場景假設 梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人被困在山上,需要從山上下來 找到山的最低點 但此時山上的濃霧很大,導致可視度很低 因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以...

梯度下降演算法推導

x y 都表示 權重,f 表示損失函式。f x delta x,y delta y f x,y frac cdot delta x frac cdot delta y f x delta x,y delta y f x,y frac cdot delta x frac cdot delta y de...

梯度下降演算法公式推導

梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人被困在山上,需要從山上下來 找到山的最低點 但此時山上的濃霧很大,導致可視度很低 因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以他當前的所...