【機器學習深度學習】典型的模型訓練過程

目錄

一、模型訓練直觀圖

二、核心目標?

三、訓練過程詳解

3.1 訓練階段

1、準備起點:輸入數據 + 初始參數權重

2、模型嘗試預測:變換計算 (前向傳播)

3、檢查錯誤:計算損失值

4、學習的關鍵:反向傳播 + 梯度下降法 (調整權重)

5、循環迭代:模型訓練迭代過程

6、停止條件:損失值達標

3.2 訓練完成

7、模型測試

8、模型應用

四、圖解流程總結?

4.1 流程圖說明

4.2 關鍵特點

4.3 關鍵點記住

五、訓練模型代碼示例

5.1 執行代碼

5.2 運行結果

5.3 圖示結果

5.4 關鍵點對應關系


一、模型訓練直觀圖


二、核心目標?

讓模型學會從“輸入數據”準確預測“輸出結果”。


三、訓練過程詳解

3.1 訓練階段

1、準備起點:輸入數據 + 初始參數權重
  • 輸入數據:?這是模型學習的“教材”。例如:一堆貓和狗的圖片(特征:像素值、顏色等)。

  • 參數權重:?模型內部的“調節旋鈕”。訓練開始時,這些權重是隨機初始化的(就像給模型一個隨機的猜測起點)。這些權重決定了輸入數據如何被組合、轉換。

2、模型嘗試預測:變換計算 (前向傳播)
  • 模型使用當前的權重參數,對輸入的一批數據進行計算。

  • 這個計算過程(可能是復雜的數學公式或神經網絡層)將輸入數據“變換”成一個預測輸出

  • 例子:?模型看到一張圖片(輸入),經過當前權重計算后,輸出一個預測:“這張圖有70%概率是貓,30%概率是狗”。

3、檢查錯誤:計算損失值
  • 真實標簽:?每個輸入數據對應的正確答案(Ground Truth)。例子:?剛才那張圖其實是一只貓(標簽是“貓”)。

  • 損失值:?一個衡量預測輸出真實標簽之間差距(錯誤程度)的數值。常見的損失函數如均方誤差(回歸)、交叉熵(分類)。

  • 例子:?模型預測“貓70%,狗30%”,真實是“貓100%”。損失函數會計算出一個值(比如0.36),表示這個預測的“錯誤成本”。目標就是讓這個損失值盡可能小!

4、學習的關鍵:反向傳播 + 梯度下降法 (調整權重)
  • 反向傳播:?這是模型“反思錯誤”的過程。算法會從輸出層向輸入層反向計算,精確地找出每一個權重參數對最終的損失值應該負多大責任。它計算的是損失值相對于每個權重的梯度

  • 梯度下降法:?利用計算出的梯度信息來更新權重參數

    • 梯度:?指向損失值增加最快的方向。

    • 下降:?我們要讓損失值減小,所以更新權重時,要沿著梯度的反方向移動一小步。

    • 學習率:?一個超參數,控制每次更新權重時移動的“步長”有多大。太小學習慢,太大可能跳過最優解。

  • 核心動作:?新權重 = 舊權重 - 學習率 * 梯度

  • 結果:?經過這次更新,模型在下一次遇到類似輸入時,預測結果應該更接近真實標簽(損失值應該更小)。

5、循環迭代:模型訓練迭代過程
  • 步驟 2 -> 3 -> 4 會在一批又一批的數據上反復進行

  • 每一次完整的循環(遍歷完所有訓練數據一次)稱為一個?Epoch

  • 在一個 Epoch 中,數據通常被分成更小的批次(Batch)?進行訓練(步驟2-4在Batch上進行)。

  • 隨著迭代的進行,模型的權重參數被不斷調整優化,損失值總體趨勢是逐漸下降的。

6、停止條件:損失值達標
  • 訓練不會無限進行下去。停止條件通常包括:

    • 損失值降低到某個可接受的閾值以下。

    • 損失值在連續幾個 Epoch 內不再顯著下降(收斂)。

    • 達到預設的最大 Epoch 數。

  • 此時,我們認為模型在訓練數據上已經“學得差不多了”,權重參數基本穩定。


3.2 訓練完成

7、模型測試
  • 使用訓練階段從未見過的新數據(測試集)來評估訓練好的模型的真實泛化能力

  • 計算模型在測試集上的損失值或準確率等指標。這才是模型性能的真實反映,避免模型只是“死記硬背”了訓練數據(過擬合)。

8、模型應用
  • 當模型通過測試,性能滿足要求后,就可以投入實際使用。

  • 輸入新的、未知的數據,模型利用訓練好的權重參數進行計算,輸出預測結果。


四、圖解流程總結?

4.1 流程圖說明


1、訓練初始化

  • 輸入數據(特征)

  • 隨機初始化權重參數

2、前向傳播(Forward Propagation)

  • 數據通過模型計算

  • 生成預測輸出

# 偽代碼示例
predictions = model(input_data, weights)

3、損失計算

  • 比較預測輸出與真實標簽

  • 計算損失值(如均方誤差、交叉熵等)

loss = loss_function(predictions, true_labels)

4、停止條件判斷

  • 檢查損失是否達標(足夠小)

  • 或達到最大迭代次數

5、反向傳播(Backpropagation)

  • 計算損失對每個權重的梯度

  • 確定權重調整方向和幅度

gradients = calculate_gradients(loss, weights)

6、權重更新

  • 使用梯度下降法更新權重

  • 學習率控制更新步長

weights = weights - learning_rate * gradients

7、迭代循環

  • 重復前向傳播→損失計算→反向傳播→權重更新

  • 直到損失達標

8、模型部署

  • 使用測試集評估模型性能

  • 部署模型進行實際預測


4.2 關鍵特點

  1. 循環結構:核心訓練過程形成閉環,持續迭代優化

  2. 雙向箭頭:前向傳播(數據流動)與反向傳播(梯度流動)方向相反

  3. 停止條件:當損失足夠小時跳出循環

  4. 分離階段:訓練/測試/應用三個階段清晰區分

這個流程圖展示了機器學習"通過數據自動調整參數"的本質:模型通過反復試錯(前向計算),評估錯誤(損失計算),然后修正錯誤(反向傳播更新權重),最終獲得預測能力。

4.3 關鍵點記住

  • 前向傳播:?輸入 -> 權重計算 -> 輸出預測。

  • 損失函數:?量化預測與真實的差距。

  • 反向傳播:?找出每個權重對損失應負的責任(計算梯度)。

  • 梯度下降:?沿著減少損失的方向更新權重(梯度反方向)。

  • 迭代:?反復進行前向、計算損失、反向傳播、更新權重。

  • 測試與應用分離:?訓練好的模型必須用新數據測試和應用,確保學到的知識是通用的。

這個過程就像教一個學生:給他題目(輸入)和初始思路(權重),他嘗試解題(預測),老師批改對錯(計算損失),分析錯誤原因(反向傳播),學生根據反饋修正思路(梯度下降更新權重),不斷練習(迭代),直到考試合格(損失達標),然后參加真正的考試(模型測試)并最終工作(模型應用)。


五、訓練模型代碼示例

5.1 執行代碼

這個示例完整展示了機器學習模型訓練的整個生命周期,從數據準備到模型應用,每一步都有清晰的代碼實現和可視化展示。

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np# ==== 解決中文顯示問題 ====
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑體
plt.rcParams['axes.unicode_minus'] = False    # 顯示負號# =====================
# 1. 準備數據(輸入數據 + 真實標簽)
# =====================
# 創建 y = 2x + 1 的線性數據,加入隨機噪聲
np.random.seed(42)
x = np.linspace(0, 5, 100)
y = 2 * x + 1 + np.random.normal(0, 0.5, 100)# 轉換為PyTorch張量
inputs = torch.tensor(x, dtype=torch.float32).unsqueeze(1)
labels = torch.tensor(y, dtype=torch.float32).unsqueeze(1)# =====================
# 2. 初始化模型參數(權重和偏置)
# =====================
class LinearRegression(nn.Module):def __init__(self):super().__init__()# 隨機初始化權重參數 (類似 y = wx + b)self.weights = nn.Parameter(torch.randn(1))self.bias = nn.Parameter(torch.randn(1))def forward(self, x):# 前向傳播計算:變換計算return self.weights * x + self.biasmodel = LinearRegression()
print(f"初始參數: w={model.weights.item():.3f}, b={model.bias.item():.3f}")# =====================
# 3. 設置訓練參數
# =====================
learning_rate = 0.01  # 學習率
epochs = 100          # 訓練輪數
loss_function = nn.MSELoss()  # 均方誤差損失函數
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)  # 梯度下降優化器# 記錄訓練過程
loss_history = []# =====================
# 4. 訓練迭代過程
# =====================
for epoch in range(epochs):# 前向傳播:計算預測輸出predictions = model(inputs)# 計算損失值loss = loss_function(predictions, labels)loss_history.append(loss.item())# 反向傳播:計算梯度loss.backward()# 梯度下降法:調整權重optimizer.step()# 清空梯度optimizer.zero_grad()# 每10輪打印進度if (epoch+1) % 10 == 0:print(f'Epoch [{epoch+1}/{epochs}], Loss: {loss.item():.4f}')# =====================
# 5. 檢查訓練結果
# =====================
print(f"\n訓練后參數: w={model.weights.item():.3f}, b={model.bias.item():.3f}")
print(f"真實參數: w=2.0, b=1.0")# 可視化訓練過程
plt.figure(figsize=(12, 4))# 損失曲線
plt.subplot(1, 2, 1)
plt.plot(loss_history)
plt.title('訓練損失變化')
plt.xlabel('迭代次數')
plt.ylabel('損失值')
plt.grid(True)# 擬合結果
plt.subplot(1, 2, 2)
plt.scatter(x, y, label='原始數據', alpha=0.6)
plt.plot(x, model(inputs).detach().numpy(), 'r-', lw=2, label='擬合直線')
plt.title('線性回歸擬合結果')
plt.legend()
plt.grid(True)plt.tight_layout()
plt.show()# =====================
# 6. 模型測試與應用
# =====================
# 測試新數據
test_x = torch.tensor([1.5, 3.5, 4.8], dtype=torch.float32).unsqueeze(1)
predictions = model(test_x)print("\n模型測試:")
for i in range(len(test_x)):true_y = 2 * test_x[i].item() + 1pred_y = predictions[i].item()print(f"輸入 x={test_x[i].item():.1f}, 預測值={pred_y:.2f}, 真實值={true_y:.2f}")

5.2 運行結果

輸出效果

初始參數: w=-0.205, b=0.783
Epoch [10/100], Loss: 1.3883
Epoch [20/100], Loss: 0.2775
Epoch [30/100], Loss: 0.2533
Epoch [40/100], Loss: 0.2485
Epoch [50/100], Loss: 0.2445
Epoch [60/100], Loss: 0.2409
Epoch [70/100], Loss: 0.2376
Epoch [80/100], Loss: 0.2346
Epoch [90/100], Loss: 0.2318
Epoch [100/100], Loss: 0.2293

訓練后參數: w=1.917, b=1.229
真實參數: w=2.0, b=1.0

模型測試:
輸入 x=1.5, 預測值=4.10, 真實值=4.00
輸入 x=3.5, 預測值=7.94, 真實值=8.00
輸入 x=4.8, 預測值=10.43, 真實值=10.60

5.3 圖示結果


?

5.4 關鍵點對應關系

代碼部分流程圖步驟
model(inputs)變換計算(前向傳播)
loss_function()計算損失值
loss.backward()反向傳播(計算梯度)
optimizer.step()梯度下降(更新權重)
訓練循環模型訓練迭代過程
損失值監測損失值達標判斷
新數據預測模型測試與應用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88415.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88415.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88415.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql8.0版本未卸載干凈如何重新下載

Mysql8.0版本未卸載干凈如何重新下載 安裝前準備 清理現有安裝(確保干凈環境) :: 停止并卸載現有MySQL服務 net stop MySQL >nul 2>&1 sc delete MySQL >nul 2>&1:: 刪除舊數據目錄 rd /s /q "C:\ProgramData\MySQL" &…

垃圾收集器G1ZGC詳解

G1收集器(-XX:UseG1GC) G1 把堆劃分為許多大小相同的 Region(默認 1~32 MB,一個堆通常包含上千個 Region,JVM目標是不超過2048個Region(JVM源碼里TARGET_REGION_NUMBER 定義)) 不再是傳統的 Eden、Survivor、Old 靜態分代模型&…

Bootstrap 5學習教程,從入門到精通,Bootstrap 5 彈出框(Popovers) 語法知識點及案例(22)

Bootstrap 5 彈出框(Popovers) 語法知識點及案例 一、彈出框基本概念 彈出框(Popovers)是Bootstrap提供的一個小型覆蓋層組件,用于顯示額外的信息,當用戶點擊某個元素時出現,再次點擊時消失。 二、彈出框基本語法知識點 1. 必需屬性 dat…

輕巧靈動,智啟未來 ——Kinova Gen3 Lite 機器人輕松解鎖各行業自動化新姿勢

近年來,Kinova Gen3 Lite 機器人憑借其卓越的性能、靈活的應用能力以及出色的性價比,在全球范圍內掀起了一股熱銷狂潮。無論是科研機構、高校實驗室,還是工業制造企業,都對它青睞有加。其銷量持續攀升,市場占有率不斷擴…

STM32 實現PID

&#x1f9f1; 一、PID核心模塊&#xff08;模塊化設計&#xff09; 頭文件 pid_controller.h #pragma once #include <stdint.h>typedef struct {// 可調參數float Kp, Ki, Kd; // PID系數float output_min; // 輸出下限float output_max; // 輸出上…

基于MATLAB的BP神經網絡回歸模型在空氣質量預測中的應用

說明&#xff1a;這是一個機器學習實戰項目&#xff08;附帶數據代碼文檔&#xff09;&#xff0c;如需數據代碼文檔可以直接到文章最后關注獲取。 1.項目背景 隨著城市化進程的加快和工業化的不斷發展&#xff0c;空氣質量問題日益受到廣泛關注。空氣中污染物如PM2.5、PM10、…

Linux docker拉取鏡像報錯解決

1、錯誤提示&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection 主要原因就是docker源不正確&#xff0c;需要配置一下。 2、報錯如下&#xff1a; 3、解決辦法&#x…

stm32week17+18+19+20

stm32學習 十二.串口 5.USART的HAL庫用法 USART/UART異步通信配置步驟&#xff1a; 配置串口工作參數&#xff1a;HAL_UART_Init();串口底層初始化&#xff1a;HAL_UART_MspInit();開啟串口異步接收中斷&#xff1a;HAL_UART_Receive_IT();設置優先級&#xff0c;使能中斷&…

14.Linux Docker

## Linux系統優化一般情況&#xff0c;我們都會使用Linux來進行MySQL的安裝和部署&#xff0c;Linux系統在使用的時候&#xff0c;也需要進行相關的配置&#xff0c;以提高MySQL的使用性能&#xff0c;這里列舉以下幾點&#xff1a;避免使用Swap交換分區&#xff0c;因為交換時…

智能體平臺的商業前景與競爭格局分析:金融與企業市場的機遇與挑戰

一、金融機構與企業部署第三方智能體平臺&#xff0c;這條路靠譜嗎&#xff1f; 1. 需求背景 金融機構和大中小企業普遍面臨數字化轉型、降本增效、智能服務升級等需求。智能體&#xff08;Agent/AI Agent&#xff09;平臺能幫助企業快速構建客服、風控、營銷、數據分析等多種…

數據結構篇-二分圖

定義示例應用 定義 一個圖是二分圖&#xff1b;一個圖具有二著色性&#xff1b;一個圖不包含任何奇數長度的環&#xff1b; 實現 /*** Program 18.6 Two-colorability* ------------------------------------------------------------------------------------------------…

50. Pow(x, n)快速冪算法

實現 pow(x, n) &#xff0c;即計算 x 的整數 n 次冪函數&#xff08;即&#xff0c;xn &#xff09;。此函數應將 x 作為浮點數&#xff08;意味著它可以是十進制數&#xff09;和 n 作為整數&#xff08;可以是正數、負數或零&#xff09;一起使用。 快速冪&#xff08;Expo…

打造絲滑的Android應用:LiveData完全教程

為什么你需要LiveData&#xff1f; 在Android開發中&#xff0c;數據的動態更新一直是個讓人頭疼的問題。想象一下&#xff1a;你的界面需要實時顯示用戶的余額變化&#xff0c;或者一個聊天應用的未讀消息數得隨時刷新。過去&#xff0c;我們可能會用Handler、手動監聽器&…

vue3 el-table 根據字段值 改變整行字體顏色

在 Vue 3 中使用 Element Plus 的 el-table 組件時&#xff0c;如果你想根據某一列的字段值來改變整行的字體顏色&#xff0c;你可以通過使用自定義的 row-class-name 屬性或者通過插槽&#xff08;slot&#xff09;的方式來達到目的。以下是兩種常見的方法&#xff1a; 方法一…

Linux的全新網絡管理命令行工具——nmcli

一、nmcli簡介 1.1、NetworkManager簡介 1.1.1、NetworkManager介紹 在紅帽系的Linux中&#xff0c;默認的網絡服務是由NetworkManager提供的&#xff08;其主要是一個可以進行動態網絡配置和控制的守護進程&#xff09;。 使用NetworkManager的優點 序號使用NetworkManager的優…

C++基礎之智能指針

一、概念 堆內存對象需要手動使用delete銷毀&#xff0c;如果沒有使用delete銷毀就會造成內存泄漏。 所以C在ISO98標準中引入了智能指針的概念&#xff0c;并在ISO11中趨于完善。 使用智能指針可以讓堆內存對象具有棧內存對象的特點&#xff0c;原理是給需要手動回收的內內存對…

python3虛擬機線程切換過程

python實現了自己的多線程&#xff0c;為了保證線程安全&#xff0c;引入了全局解釋器鎖GIL&#xff0c;只有拿到GIL的線程才能執行&#xff0c;所以在python中同一時刻只能有一個線程在運行&#xff0c;python多線程無法發揮多核處理器的威力&#xff0c;《python源碼剖析》中…

PYTHON從入門到實踐5-列表操作

# 【1】列表是可變的&#xff0c;可以修改、追加、刪除 import randomclass Friend(object):def __init__(self, name, age):self.name nameself.age ageif __name__ __main__:friendList []for i in range(0, 9):randomNumber random.randint(0, 100)friend Friend(f&qu…

【linux】network服務啟動網卡流程

目錄 1、介紹2、ifup流程【1】與NetworkManager兼容【2】ifup-eth設置ip【3】ifup-routes設置路由 1、介紹 network服務的核心由/etc/sysconfig/network-scripts/下一堆腳本配置來生效&#xff0c;其中啟動網卡就是通過ifup腳本來實現的&#xff0c;下面就講一下ifup如何恢復i…

如何防止自己的電腦被控制?開啟二次驗證保護教程

遠程操作什么最重要&#xff1f;安全&#xff0c;安全&#xff0c;和安全&#xff01;答案永遠是安全&#xff01;那么究竟如何能讓遠程連接安全性更上一層臺階吶&#xff1f;又是哪家遠控安全策略方面最給力吶&#xff1f;這可不是王婆賣瓜&#xff0c;自賣自夸&#xff0c;確…