在求解機器學習演算法的模型引數,即無約束優化問題時,梯度下降(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...
梯度下降演算法公式推導
梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人被困在山上,需要從山上下來 找到山的最低點 但此時山上的濃霧很大,導致可視度很低 因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以他當前的所...