日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

大家好,今天聊聊隨機梯度下降(SGD)
隨機梯度下降(Stochastic Gradient Descent,簡稱SGD)是機器學習和深度學習中的一個重要優化算法。
今天盡力以最簡單的方式解釋,幫助大家理解。

大白話解釋

SGD是一種用于訓練機器學習模型的方法,特別是神經網絡。
它的目標是找到使我們的模型在給定數據上表現得盡可能好的參數值。
想象一下,你要教一個機器學習模型來識別貓和狗的圖片。初始時,模型并不知道如何識別貓和狗。SGD的任務就是通過不斷調整模型參數,使它的預測結果更接近實際情況。

基本原理

SGD的基本原理非常簡單。它通過以下步驟進行工作:
  1. 初始化參數:首先,我們隨機初始化模型的參數,就像開始時我們不知道任何關于貓和狗的信息。

  2. 選擇一個樣本:然后,從我們的數據集中隨機選擇一個樣本(一張貓或狗的圖片)。

  3. 計算梯度:用選定的樣本來計算模型的梯度,這告訴我們如何調整參數以減小預測誤差。

  4. 更新參數:接下來,我們使用梯度信息來微調參數,以使模型更好地預測選定的樣本。

  5. 重復:然后,我們重復這個過程,不斷選擇不同的樣本并更新參數,直到我們認為模型已經足夠好地理解了數據。

詳細的公式解釋

SGD的核心數學公式如下:

 
θ' = θ - α * ∇J(θ, xi, yi)
  • θ是模型的參數。
  • α是學習率,它決定了參數更新的步長。
  • ∇J(θ, xi, yi)是損失函數關于參數θ的梯度,它告訴我們如何調整參數以減小損失函數J(θ, xi, yi)。xi和yi是選定的訓練樣本。

利用Python/ target=_blank class=infotextkey>Python繪制示意圖

讓我們使用Python來繪制一個簡單的示意圖,以幫助你更好地理解SGD的工作原理。首先,確保你已經安裝了Matplotlib庫,然后可以使用以下代碼:

 
import matplotlib.pyplot as plt
import numpy as np

# 模擬一個簡單的損失函數
def loss_function(theta):
    return theta**2 + 2*theta + 1

# 損失函數的梯度
def gradient(theta):
    return 2*theta + 2

# 初始化參數和學習率
theta = 3.0
learning_rate = 0.1
iterations = 10

# 繪制損失函數和參數更新過程
losses = []

for i in range(iterations):
    loss = loss_function(theta)
    losses.Append(loss)
    plt.plot(theta, loss, 'ro')  # 繪制當前參數和損失值
    gradient_value = gradient(theta)
    theta -= learning_rate * gradient_value  # 更新參數

# 繪制損失函數曲線
theta_values = np.linspace(-2, 4, 100)
loss_values = loss_function(theta_values)
plt.plot(theta_values, loss_values, label='Loss Function')
plt.xlabel('Parameter (theta)')
plt.ylabel('Loss')
plt.legend()
plt.show()
這段代碼將繪制一個簡單的損失函數曲線,并演示了參數如何隨著迭代次數的增加而更新。

一個強大的算法模型:SGD??!

再舉一個案例

要可視化隨機梯度下降(SGD)的三維工作示例,我們可以創建一個模擬的損失函數,并在不斷迭代的過程中更新參數以最小化損失。
這里我將使用Matplotlib來繪制三維圖形,并使用大量的數據點來可視化SGD的工作。請注意,這只是一個示例,用于直觀演示SGD的工作原理。
如果沒有安裝matplotlib,可以使用pip:

 
pip install matplotlib
使用Python代碼來創建可視化SGD圖像:

 
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 模擬損失函數
def loss_function(x, y):
    return x**2 + y**2

# 模擬梯度計算
def gradient(x, y):
    dx = 2 * x
    dy = 2 * y
    return dx, dy

# 隨機梯度下降
def stochastic_gradient_descent(learning_rate, num_iterations):
    history = []

    # 隨機初始值
    x, y = np.random.rand(2) * 10

    for _ in range(num_iterations):
        grad_x, grad_y = gradient(x, y)
        x -= learning_rate * grad_x
        y -= learning_rate * grad_y
        history.append((x, y))

    return np.array(history)

# 設置學習率和迭代次數
learning_rate = 0.1
num_iterations = 100

# 運行隨機梯度下降
sgd_history = stochastic_gradient_descent(learning_rate, num_iterations)

# 可視化損失函數
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
X, Y = np.meshgrid(x, y)
Z = loss_function(X, Y)

# 創建3D圖形
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 繪制損失函數表面
ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.8)

# 繪制隨機梯度下降路徑
sgd_x, sgd_y = zip(*sgd_history)
sgd_z = loss_function(np.array(sgd_x), np.array(sgd_y))
ax.plot(sgd_x, sgd_y, sgd_z, marker='o', color='r', linestyle='-')

# 設置圖形屬性
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Loss')
ax.set_title('Stochastic Gradient Descent')

plt.show()
這個代碼將創建一個三維圖形,其中損失函數的表面用虛線表示,并且隨機梯度下降的路徑用紅色線條表示。

一個強大的算法模型:SGD?。? _width=
可以根據需要調整學習率和迭代次數,以及損失函數和梯度的定義,以適應不同的示例和問題。

分享到:
標簽:算法 模型
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定