【機器學習筆記 Ⅱ】7 多類分類

1. 多類分類(Multi-class Classification)

定義

多類分類是指目標變量(標簽)有超過兩個類別的分類任務。例如:

  • 手寫數字識別:10個類別(0~9)。
  • 圖像分類:區分貓、狗、鳥等。
  • 新聞主題分類:政治、經濟、體育等。

特點

  • 互斥性:每個樣本僅屬于一個類別(區別于多標簽分類)。
  • 輸出要求:模型需輸出每個類別的概率分布,且概率之和為1。

實現方式

  • One-vs-Rest (OvR):訓練K個二分類器(K為類別數),每個分類器判斷“是否屬于該類”。
  • Softmax回歸:直接輸出多類概率分布(更高效,主流方法)。

2. Softmax函數

定義

Softmax將神經網絡的原始輸出(logits)轉換為概率分布,公式為:
[
\sigma(\mathbf{z})_i = \frac{e{z_i}}{\sum_{j=1}K e^{z_j}}}, \quad i = 1, \dots, K
]

  • ( \mathbf{z} ):神經網絡的原始輸出向量(logits)。
  • ( K ):類別總數。
  • 輸出:每個類別的概率 ( \sigma(\mathbf{z})i \in (0,1) ),且 ( \sum{i=1}^K \sigma(\mathbf{z})_i = 1 )。

示例

假設神經網絡對3個類別的原始輸出為 ( \mathbf{z} = [2.0, 1.0, 0.1] ):
[
\begin{aligned}
\sigma(\mathbf{z})_1 &= \frac{e{2.0}}{e{2.0} + e^{1.0} + e^{0.1}}} \approx 0.659 \
\sigma(\mathbf{z})_2 &= \frac{e{1.0}}{e{2.0} + e^{1.0} + e^{0.1}}} \approx 0.242 \
\sigma(\mathbf{z})_3 &= \frac{e{0.1}}{e{2.0} + e^{1.0} + e^{0.1}}} \approx 0.099 \
\end{aligned}
]
最終概率分布:[0.659, 0.242, 0.099] → 預測為第1類。

特性

  1. 放大差異:較大的 ( z_i ) 會獲得顯著更高的概率。
  2. 數值穩定:實際計算時,通常減去最大值(( z_i - \max(\mathbf{z}) ))避免數值溢出。
    exp_z = np.exp(z - np.max(z, axis=1, keepdims=True))
    softmax = exp_z / np.sum(exp_z, axis=1, keepdims=True)
    

3. Softmax與交叉熵損失

組合使用

  • Softmax:將logits轉為概率。
  • 交叉熵損失(Cross-Entropy Loss):衡量預測概率與真實標簽的差異。

反向傳播

Softmax與交叉熵的梯度計算被合并優化,梯度形式簡潔:
[
\frac{\partial J}{\partial z_i} = \hat{y}_i - y_i
]

  • 梯度直接反映預測與真實的差異。

4. 代碼實現

(1) Python(NumPy)

import numpy as npdef softmax(z):exp_z = np.exp(z - np.max(z, axis=1, keepdims=True))  # 防溢出return exp_z / np.sum(exp_z, axis=1, keepdims=True)# 示例:3個樣本,4個類別
logits = np.array([[1.0, 2.0, 3.0, 4.0],[0.5, 1.0, 2.0, 3.0],[-1.0, 0.0, 1.0, 2.0]])
probabilities = softmax(logits)
print("概率分布:\n", probabilities)

(2) PyTorch

import torch
import torch.nn as nnlogits = torch.tensor([[1.0, 2.0, 3.0], [0.1, 0.2, 0.3]])
softmax = nn.Softmax(dim=1)
probabilities = softmax(logits)
print(probabilities)

(3) TensorFlow/Keras

from tensorflow.keras.layers import Softmaxlogits = tf.constant([[1.0, 2.0, 3.0], [0.1, 0.2, 0.3]])
softmax = Softmax(axis=-1)
probabilities = softmax(logits)
print(probabilities.numpy())

5. 多類分類 vs 二分類

任務類型輸出層激活函數損失函數標簽格式
二分類Sigmoid二元交叉熵0或1
多類分類Softmax分類交叉熵One-hot編碼

6. 常見問題

Q1:為什么Softmax輸出概率和為1?

  • 設計目的即為生成概率分布,便于直觀解釋和優化。

Q2:Softmax和Sigmoid的區別?

  • Sigmoid:用于二分類,獨立計算每個類別的概率(可非互斥)。
  • Softmax:用于多分類,強制所有類別概率和為1(互斥)。

Q3:如何處理類別不平衡?

  • 加權交叉熵:為少數類賦予更高權重。
    model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['accuracy'],class_weight={0: 1, 1: 2, 2: 1})  # 類別1的權重加倍
    

7. 總結

  • 多類分類:目標變量有多個互斥類別,需輸出概率分布。

  • Softmax:將logits轉換為歸一化概率,與交叉熵損失配合使用。

  • 關鍵公式

  • 實踐建議

    • 輸出層用Softmax,隱藏層用ReLU。
    • 標簽需為one-hot編碼(或稀疏類別標簽)。

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

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

相關文章

2025年深圳杉川機器人性格測評和Verify測評SHL題庫高分攻略

1、杉川機器人包含性格測評和Verify測評,預計用時60min,請確保作答時周圍環境無干擾、網絡暢通;2、請使用電腦完成作答,建議使用以下瀏覽器登錄:IE9.0及以上版本,火狐,谷歌;3、杉川機…

【flutter 在最新版本中已經棄用了傳統的 apply from 方式引入 Gradle 插件】

報錯 Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source! Launching lib\main.dart on 2112123AC in debug mode... Running Gradle task assembleDebug...FAILURE: Build failed with an exception.* Where: Script D…

Web后端實戰:(部門管理)

1.準備工作 1.1開發規范 1.1.1前后端分離開發 我們目前基本都是采用的前后臺分離開發方式,如下圖所示: 那么基于前后臺分離開發的模式下,我們后臺開發者開發一個功能的具體流程如何呢?如下圖所示: 需求分析&…

字節尋址(Byte Addressing) 與 Verilog中的寄存器索引

字節尋址(Byte Addressing) 與 Verilog中的寄存器索引 之間的關系。 您的疑問非常正確,直接看 3h1 很容易讓人以為地址就是 0x01。 但答案是:是的,3h1 在這里對應的字節地址(Byte Address)確實是…

Ubuntu遠程桌面

方法1: 檢查并使用已安裝的VNC或遠程桌面組件 請在終端中執行以下命令檢查系統中已安裝的相關組件: bash# 檢查系統中已安裝的VNC和遠程桌面相關軟件 dpkg -l | grep -E "vnc|vino|remote|rdp"# 檢查常見遠程桌面服務 which vino-server tigervncserver x11vnc xr…

WEB攻防-文件包含LFIRFI偽協議編碼算法無文件利用黑白盒

知識點: 1、文件包含-原理&分類&危害-LFI&RFI 2、文件包含-利用-黑白盒&無文件&偽協議 一、演示案例-文件包含-原理&分類&利用 1、原理 程序開發人員通常會把可重復使用的函數寫到單個文件中,在使用某些函數時&#xff…

LabVIEW的GPIB儀器校準

基于LabVIEW開發平臺與 GPIB 總線技術,采用是德科技、泰克等硬件設備,構建示波器與頻譜分析儀自動校準系統。通過圖形化編程實現校準流程自動化,涵蓋設備連接、參數配置、數據采集、誤差分析及報告生成,顯著提升校準效率與精度&am…

Zotero中進行文獻翻譯【Windows11】

zotero官網:https://www.zotero.org/ 1 在Zotero軟件中安裝插件 進入Zotero百科全書,依次點擊:插件→翻譯插件→插件介紹→Zotero 中文社區插件商店 進去后搜索pdf2zh,然后下載后放入空白文件夾zotero-pdf2zh 打開Zotero軟件后…

用U盤啟動制作centos系統最常見報錯,系統卡住無法繼續問題(手把手)

一、按照操作系統centos7報錯如下(U盤) 按照系統報錯如下: ERROR: could not insert ‘floppy’; ERROR: could not insert ‘edd’ : No這種報錯很常見,基本上就是u盤啟動路徑找不到導致,遇到次數比較多所以也比較好解…

C#中的BindingList有什么作用?

在C#中&#xff0c;BindingList<T> 是一個非常重要的集合類&#xff0c;位于 System.ComponentModel 命名空間&#xff0c;主要用于實現數據綁定&#xff08;Data Binding&#xff09;場景。1. 核心作用BindingList<T> 是 List<T> 的增強版&#xff0c;主要提…

Python爬取知乎評論:多線程與異步爬蟲的性能優化

1. 知乎評論爬取的技術挑戰 知乎的評論數據通常采用動態加載&#xff08;Ajax&#xff09;&#xff0c;這意味著直接使用**<font style"color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">requests</font>****<font style"color:rg…

軟件系統測試的基本流程

軟件系統測試流程是確保軟件質量的規范化過程&#xff0c;涵蓋從測試準備到最終上線評估的全周期&#xff0c;通常分為以下6個核心階段&#xff0c;各階段緊密銜接、形成閉環&#xff1a; 一、測試啟動與規劃階段 核心目標&#xff1a;明確“測什么、誰來測、怎么測”&#xff…

使用Linux操作MySQL數據庫分批導出數據為.SQL文件

當數據庫某張數據量非常大的表進行其他操作&#xff0c;需要先進行導出時&#xff1b; 先用linux進入操作環境&#xff0c; 1.添加一個export_mysql_batches.sh腳本文件&#xff0c; #!/bin/bash# 數據庫連接配置 DB_HOST"36.33.0.138:3306" DB_USER"devuser&qu…

LeetCode 算法題解:鏈表與二叉樹相關問題 打打卡

LeetCode 算法題解&#xff1a;鏈表與二叉樹相關問題 在算法學習和實踐中&#xff0c;LeetCode 是一個非常好的平臺&#xff0c;它包含了各種各樣的算法題目&#xff0c;有助于我們提升編程能力和解決問題的能力。本文將詳細講解在 leetcoding.cpp 文件中實現的一些鏈表和二叉樹…

故宮票價監控接口分析(一)

故宮票價監控接口分析(一) 對爬蟲、逆向感興趣的同學可以查看文章,一對一小班教學(系統理論和實戰教程)、提供接單兼職渠道:https://blog.csdn.net/weixin_35770067/article/details/142514698 本文內容僅供學習和參考之用,不得用于商業目的。作者對文中內容的準確性、完整…

AWS OpenSearch Dev Tools使用

# 創建通用索引模版 PUT _template/aws-waf_logs_template {"index_patterns": ["aws-waf-logs-*"],"mappings": {"properties": {"timestamp": {"type": "date"}}} }# 設置單個索引格式 PUT /aws-waf-…

git-安裝 Gerrit Hook 自動生成changeid

要在 Git 中安裝 Gerrit Hook 以自動生成 Change-ID&#xff0c;可以按照以下步驟操作&#xff1a; 全局鉤子配置&#xff08;推薦&#xff09; 創建全局鉤子目錄并下載 Gerrit 提供的 commit-msg 鉤子腳本&#xff0c;確保所有倉庫共享該配置&#xff1a; mkdir -p ~/.githook…

Excel 的多線程特性

Excel 本身并不是完全多線程的應用程序&#xff0c;但它在某些操作和功能上支持多線程處理。以下是對 Excel 是否多線程的詳細解答&#xff0c;結合你之前提到的 VBA/COM 自動化代碼和受保護視圖問題&#xff0c;提供清晰且準確的分析。 Excel 的多線程特性計算引擎的多線程支持…

【嵌入式ARM匯編】-操作系統基礎(一)

操作系統基礎(一) 文章目錄 操作系統基礎(一)1、操作系統架構概述2、用戶模式與內核模式3、進程4、系統調用5、對象和句柄我們想要逆向的程序幾乎從來不會在真空中執行。相反,程序通常在正在運行的操作系統(例如 Linux、Windows 或 macOS)的上下文中運行。因此,了解這些…

[創業之路-474]:企業經營層 - 小米與華為多維對比分析(2025年視角),以后不要把這兩家公司放在同一個維度上 進行比較了

一、行業定位與市場角色不同華為&#xff1a;用技術手段解決行業的難題&#xff0c;順便賺錢技術驅動型硬科技企業&#xff1a;以通信設備起家&#xff0c;延伸至智能手機、芯片、操作系統&#xff08;鴻蒙&#xff09;、云計算、智能汽車等領域&#xff0c;構建“云-管-端”全…