學習隨機梯度下降(1)

2021-10-09 07:38:47 字數 2658 閱讀 3413

一元方程y=theta*x,通過梯度下降求theta

如果有常數項怎麼辦?

如:y=theta*x + b

下個部落格進行學習。

資料集根據y = 3x構造,並加一定的隨機數構造出資料集

import numpy as np

import matplotlib.pyplot as plt

len =

50x = np.arange(

0, len)

# 生成0,1,2...len-1整數

# rand從-5到+5

np.random.seed(1)

rand =

(np.random.random(len)*2

-1)*

5y = x *

3+ rand

# x、y分布如下圖所示

plt.scatter(x, y)

#plt.show() # 展示散點圖

# x、y 連線

劃分訓練集、測試集

# 隨機打亂資料集

np.random.shuffle(alldata)

# 劃分訓練集、測試集

ratio =

0.8index =

(int

)(alldata.shape[0]

* ratio)

traindata = alldata[

:index]

# 訓練集資料

testdata = alldata[index:

]# 測試集資料

超引數設定

# 超引數設定

# 學習率

lr =

0.0005

# 訓練集大小(每個batch隨機梯度下降迭代次數)

n = traindata.shape[0]

# 誤差大小

epsilon =

200

模型訓練

# 待估及引數(theta)

theta = np.random.rand(

)# 隨機初始化乙個值

# 迭代次數標識

iter=1

# 引數記錄列表,包括loss、迭代次數以及theta

loss_list =

iter_list =

theta_list =

loss = np.inf

while

true

:# 打亂訓練集順序

np.random.shuffle(traindata)

for i in

range

(n):

# 隨機樣本

x = traindata[i,0]

y = traindata[i,1]

# 計算梯度

grad =

(theta * x - y)

* x # 更新引數

theta = theta - lr * grad

#print("x: %.2f\t\t y:%.2f\t\t\tgrad: %.4f\t\t\ttheta: %.4f" % (x, y, grad, theta))

# 乙個batch結束後,對所有測試樣本進行loss求和

print

("current theta:%.3f"

% theta)

loss = np.

sum(

0.5*

(traindata[:,

0]* theta - traindata[:,

1])**

2)# ( (y_predict - y_true)^2 ) /2

iter

)print

("no.%d:\t grad = %f\t theta: %f\tloss: %f"%(

iter

, grad, theta, loss)

)iter+=1

# 達到允許的誤差,結束訓練

if loss < epsilon:

print

("traing completed!"

)break

訓練結果

結果展示

注:sgd演算法實現流程

參考:

梯度下降 隨機梯度下降 批梯度下降

下面的h x 是要擬合的函式,j 損失函式,theta是引數,要迭代求解的值,theta求解出來了那最終要擬合的函式h 就出來了。其中m是訓練集的記錄條數,j是引數的個數。梯度下降法流程 1 先對 隨機賦值,可以是乙個全零的向量。2 改變 的值,使j 按梯度下降的方向減少。以上式為例 1 對於我們的...

stanford 梯度 梯度下降,隨機梯度下降

一 梯度gradient 在標量場f中的一點處存在乙個向量g,該向量方向為f在該點處變化率最大的方向,其模也等於這個最大變化率的數值,則向量g稱為標量場f的梯度。在向量微積分中,標量場的梯度是乙個向量場。標量場中某一點上的梯度指向標量場增長最快的方向,梯度的長度是這個最大的變化率。更嚴格的說,從歐氏...

梯度下降 隨機梯度下降和批量梯度下降

對比梯度下降和隨機梯度下降和批量梯度下降 之前看的知識比較零散,沒有乙個系統的解釋說明,看了一些網上的博主的分析,總結了一下自己的理解。例子這裡我參照其他博主的例子做了一些修改,首先是梯度下降 coding utf 8 import random this is a sample to simula...