神經網絡之損失函數

引言:損失函數 (Loss Function)是機器學習和深度學習中非常重要的一個概念。用于衡量模型的預測值與真實值之間的差異,從而指導模型優化其參數以最小化這種差異。

一、損失函數作用

在這里插入圖片描述

  • 量化誤差:損失函數是將預測值和真實值之間的差異轉化為一個標量值。
  • 優化目標:通過最小化損失函數,模型可以逐步調整參數以提高預測的準確性,用來優化模型參數。
  • 評估模型性能:反映模型預測結果與目標值的匹配程度。

二、常見損失函數

1. 回歸問題

損失函數公式特點適用場景
均方誤差(MSE) L = 1 n ∑ i = 1 n ( y i ? y ^ i ) 2 L = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 L=n1?i=1n?(yi??y^?i?)2放大誤差,對離群點敏感標準線性回歸
平均絕對誤差(MAE) L = 1 n ∑ i = 1 n ∣ y i ? y ^ i ∣ L = \frac{1}{n} \sum_{i=1}^{n} \vert y_i - \hat{y}_i\vert L=n1?i=1n?yi??y^?i?抗噪強,優化不穩定離群點多的回歸
Huber Loss L = { 1 2 ( y i ? y ^ i ) 2 if? ∣ y i ? y ^ i ∣ ≤ δ δ ∣ y i ? y ^ i ∣ ? 1 2 δ 2 其他 L = \begin{cases} \frac{1}{2}(y_i - \hat{y}_i)^2 & \text{if } \vert y_i - \hat{y}_i\vert \leq \delta \\ \delta \vert y_i - \hat{y}_i\vert - \frac{1}{2}\delta^2 & \text{其他} \end{cases} L={21?(yi??y^?i?)2δyi??y^?i??21?δ2?if?yi??y^?i?δ其他?平衡 MAE 和 MSE魯棒回歸任務
Log-Cosh Loss L = ∑ log ? ( cosh ? ( y ^ ? y ) ) L = \sum \log(\cosh(\hat{y} - y)) L=log(cosh(y^??y))平滑的 MAE對離群點略魯棒

2. 分類問題

損失函數公式特點適用場景
交叉熵損失(Binary Cross Entropy) L = ? 1 n ∑ i = 1 n [ y i log ? ( y ^ i ) + ( 1 ? y i ) log ? ( 1 ? y ^ i ) ] L = -\frac{1}{n} \sum_{i=1}^{n} \left[ y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right] L=?n1?i=1n?[yi?log(y^?i?)+(1?yi?)log(1?y^?i?)]二分類邏輯回歸、二分類神經網絡
交叉熵損失(Categorical Cross Entropy) L = ? 1 n ∑ i = 1 n ∑ j = 1 k y i j log ? ( y ^ i j ) L = -\frac{1}{n} \sum_{i=1}^{n} \sum_{j=1}^{k} y_{ij} \log(\hat{y}_{ij}) L=?n1?i=1n?j=1k?yij?log(y^?ij?)多分類Softmax 輸出
稀疏分類交叉熵(Sparse Categorical Cross Entropy)使用類索引而不是 one-hot節省內存類別數較多
Focal Loss添加調節因子處理樣本不平衡小樣本分類檢測、醫學圖像分類

3. 其他問題

損失函數應用說明
相對熵(KL Divergence)分布擬合常見于 NLP / VAE
Contrastive Loss度量學習Siamese 網絡
Triplet Loss排序學習圖像識別、人臉匹配
CTC Loss序列對齊語音識別、OCR 等
Dice Loss / IoU Loss圖像分割非常常用于醫學圖像

三、如何選擇損失函數

任務類型輸出形式推薦損失函數PyTorch API
回歸(無離群)連續數值MSEnn.MSELoss()
回歸(有離群)連續數值MAE / Hubernn.L1Loss() / nn.HuberLoss()
二分類概率(Sigmoid)Binary Cross Entropynn.BCELoss() / nn.BCEWithLogitsLoss()
多分類概率(Softmax)Cross Entropynn.CrossEntropyLoss()
多標簽分類多個 Sigmoid 輸出nn.BCEWithLogitsLoss()多標簽分類問題
圖像分割概率圖Dice Loss / Cross Entropy自定義 Dice Loss
NLP(語言模型)詞分布KL Divergence / CEnn.KLDivLoss() / nn.CrossEntropyLoss()
度量學習特征嵌入Contrastive / Triplet自定義損失函數

四、舉個🌰

import numpy as np# 真實值和預測值
y_true = np.array([1.0, 2.0, 3.0])
y_pred = np.array([1.2, 1.8, 2.5])# 1. 均方誤差 (MSE)
mse = np.mean((y_true - y_pred) ** 2)
print(f"均方誤差: {mse:.4f}")# 2. 均絕對誤差 (MAE)
mae = np.mean(np.abs(y_true - y_pred))
print(f"均絕對誤差: {mae:.4f}")# 3. Huber損失 (delta=1.0)
delta = 1.0
diff = np.abs(y_true - y_pred)
huber = np.mean(np.where(diff <= delta, 0.5 * diff ** 2, delta * diff - 0.5 * delta ** 2))
print(f"Huber損失: {huber:.4f}")# 4. 二分類交叉熵 (假設y_true是0/1標簽,y_pred是概率)
y_true_binary = np.array([0, 1, 1])
y_pred_binary = np.array([0.2, 0.8, 0.9])
cross_entropy = -np.mean(y_true_binary * np.log(y_pred_binary + 1e-10) + (1 - y_true_binary) * np.log(1 - y_pred_binary + 1e-10))
print(f"二分交叉熵: {cross_entropy:.4f}")
均方誤差: 0.1100
均絕對誤差: 0.3000
Huber損失: 0.0550
二分交叉熵: 0.1839

五、總結

損失函數是機器學習和深度學習中不可或缺的一部分,合理選擇和設計損失函數可以顯著提高模型的性能。

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

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

相關文章

Java 基礎-32-枚舉-枚舉的應用場景

在Java編程中&#xff0c;枚舉&#xff08;Enum&#xff09;提供了一種強大的方式來定義一組固定的常量。它們不僅限于簡單的用途&#xff0c;還可以包含構造函數、方法和字段等高級功能&#xff0c;使其適用于多種不同的應用場景。本文將探討幾種常見的使用枚舉的場景&#xf…

【網絡安全】安全的網絡設計

網絡設計是網絡安全的基礎&#xff0c;一個好的網絡設計可以有效的防止攻擊者的入侵。在本篇文章中&#xff0c;我們將詳細介紹如何設計一個安全的網絡&#xff0c;包括網絡架構&#xff0c;網絡設備&#xff0c;網絡策略&#xff0c;以及如何處理網絡安全事件。 一、網絡架構…

網絡安全-等級保護(等保) 0. 前言

各位伙伴好&#xff1a; 招投標總結已過去一年了&#xff0c;時間飛逝&#xff0c;一直忙于工作&#xff0c;等保相關的內容斷斷續續整理了近半年的時間&#xff0c;但一直無暇完成博客內容。 等保已經是一個成熟的體系&#xff0c;現在已進入等保2.0時代&#xff0c;相關政策…

TLS協議詳解

TLS協議 一&#xff0c;TLS協議的組成 TLS協議架構模塊分為兩層&#xff1a;TLS記錄協議&#xff0c;TLS握手協議 ① TLS記錄協議&#xff1a; 是所有子協議的基層&#xff0c;規定了TLS收發數據的基本單位。所有子協議都需要通過記錄協議發出&#xff0c;多個記錄數據可以在…

ollama更新升級及警告解決

1. 概述 在大模型業務處理中&#xff0c;需要用到gemma3 和 qwen2.5-VL&#xff0c;當前服務器的ollama版本 0.3.11&#xff0c;無法滿足要求&#xff0c;需要更新升級。 2. 實施過程 參考官網升級要求&#xff1a; curl -fsSL https://ollama.com/install.sh | sh 不知道…

ubuntu 配置固定ip

在裝服務器系統的時候&#xff0c;DHCP自動獲取ip時&#xff0c;路由可能會重新分配ip&#xff0c;為避免產生影響&#xff0c;可以關閉DHCP將主機設置為靜態ip。 系統環境 Ubuntu 22.04-Desktop 配置方式 一、如果是裝的Ubuntu圖形化&#xff08;就是可以用鼠標操作點擊應用…

套接字編程函數recv和send ,以及設置reuseaddress

recv就是去套接字讀緩沖區讀數據 阻塞模式下&#xff1a;讀緩沖區沒數據那就阻塞等待&#xff0c;若等待被打斷返回-1設置errno為EINTR 非阻塞模式下&#xff1a;讀緩沖區沒數據那就返回-1&#xff0c;設置errno為EAGAIN或EWOULDBLOCK。 若連接斷開返回0&#xff0c;讀取成功…

《C++后端開發最全面試題-從入門到Offer》目錄

當今科技行業對C++開發者的需求持續高漲,從金融科技到游戲開發,從嵌入式系統到高性能計算,C++憑借其卓越的性能和靈活性始終占據著關鍵地位。然而,成為一名優秀的C++工程師并非易事,不僅需要扎實的語言基礎,還要掌握現代C++特性、設計模式、性能優化技巧以及各種工業級開…

設計模式簡述(十)責任鏈模式

責任鏈模式 描述基本使用使用 描述 如果一個請求要經過多個類似或相關處理器的處理。 可以考慮將這些處理器添加到一個鏈上&#xff0c;讓請求逐個經過這些處理器進行處理。 通常&#xff0c;在一個業務場景下會對整個責任鏈進行初始化&#xff0c;確定這個鏈上有哪些Handler…

初識數據結構——Java集合框架解析:List與ArrayList的完美結合

&#x1f4da; Java集合框架解析&#xff1a;List與ArrayList的完美結合 &#x1f31f; 前言&#xff1a;為什么我們需要List和ArrayList&#xff1f; 在日常開發中&#xff0c;我們經常需要處理一組數據。想象一下&#xff0c;如果你要管理一個班級的學生名單&#xff0c;或…

ReFormX:現代化的 React 表單解決方案 - 深度解析與最佳實踐

ReFormX文檔 表單開發一直是前端工作中最繁瑣卻又最常見的任務之一。從簡單的登錄表單到復雜的多步驟配置頁面&#xff0c;開發者往往需要編寫大量重復代碼&#xff0c;處理繁瑣的狀態管理、數據驗證和聯動邏輯。ReFormX 應運而生&#xff0c;它不僅是一個表單組件庫&#xff…

WinForm真入門(9)——RichTextBox控件詳解

WinForm中RichTextBox控件詳解&#xff1a;從基礎到高級應用 上一文中筆者重點介紹了TextBox控件的詳細用法&#xff0c;忘記的 請點擊WinForm真入門(8)——TextBox控件詳解&#xff0c;那么本文中的RichTextBox與TextBox有什么區別嗎&#xff0c;光看名字的話&#xff0c;多了…

Draw.io 全面解析與競品分析:圖表繪制工具的深度對比

目錄 一、Draw.io 全面介紹 1. 產品概述 2. 核心功能特點 3. 用戶體驗 4. 商業模式 二、市場競品分析 1. 主要競品概覽 2. 深度功能對比 3. 價格策略對比 4. 技術架構對比 三、用戶場景與選擇建議 1. 不同場景下的工具推薦 2. 未來發展趨勢 四、結論 diagrams.net…

kafka分區策略詳解

Kafka 分區策略詳解 Kafka 的分區策略決定了消息在生產者端如何分配到不同分區&#xff0c;以及在消費者端如何動態分配分區以實現負載均衡。以下是 Kafka 核心分區策略及其適用場景的詳細解析&#xff1a; 1、生產者分區策略 生產者負責將消息發送到 Topic 的特定分區&#…

C++ STL 詳解 ——list 的深度解析與實踐指南

在 C 的標準模板庫&#xff08;STL&#xff09;中&#xff0c;list作為一種重要的序列式容器&#xff0c;以其獨特的雙向鏈表結構和豐富的操作功能&#xff0c;在許多編程場景下發揮著關鍵作用。深入理解list的特性與使用方法&#xff0c;能幫助開發者編寫出更高效、靈活的代碼…

GenerationMixin概述

類 類名簡單說明GenerateDecoderOnlyOutput繼承自 ModelOutput&#xff0c;適用于非束搜索方法的解碼器-only模型輸出類。GenerateEncoderDecoderOutput繼承自 ModelOutput&#xff0c;適用于非束搜索方法的編碼器-解碼器模型輸出類。GenerateBeamDecoderOnlyOutput繼承自 Mod…

【備賽】藍橋杯嵌入式實現led閃爍

原理 由于藍橋杯的板子帶有鎖存器&#xff0c;并且與lcd屏幕有沖突&#xff0c;所以這個就成了考點。 主要就是用定時器來實現&#xff0c;同時也要兼顧lcd的沖突。 一、處理LCD函數 首先來解決與lcd屏幕沖突的問題&#xff0c;把我們所有用到的lcd函數改裝一下。 以下是基…

C++ 并發性能優化實戰:提升多線程應用的效率與穩定性

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;獲得2024年博客之星榮譽證書&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開發技術&#xff0c…

Python----計算機視覺處理(Opencv:道路檢測之車道線擬合)

完整版&#xff1a; Python----計算機視覺處理&#xff08;Opencv:道路檢測完整版&#xff1a;透視變換&#xff0c;提取車道線&#xff0c;車道線擬合&#xff0c;車道線顯示&#xff09; 一、獲取左右車道線的原始位置 導入模塊 import cv2 import numpy as np from matplot…

優選算法的妙思之流:分治——歸并專題

專欄&#xff1a;算法的魔法世界 個人主頁&#xff1a;手握風云 目錄 一、歸并排序 二、例題講解 2.1. 排序數組 2.2. 交易逆序對的總數 2.3. 計算右側小于當前元素的個數 2.4. 翻轉對 一、歸并排序 歸并排序也是采用了分治的思想&#xff0c;將數組劃分為多個長度為1的子…