4深度學習Pytorch-神經網絡--損失函數(sigmoid、Tanh、ReLU、LReLu、softmax)

目錄

激活函數

1. Sigmoid

2. Tanh 函數(雙曲正切)

3. ReLU 函數

4. Leaky ReLU (LReLU)

5. Softmax

總結對比表

損失函數選擇


激活函數

激活函數是神經網絡中每個神經元(節點)的核心組成部分。它接收上一層所有輸入的加權和(加上偏置項),并產生該神經元的輸出。其主要作用是引入非線性,使得神經網絡能夠學習和逼近任意復雜的函數關系。如果沒有非線性激活函數,無論網絡有多少層,最終都等價于一個線性變換(單層感知機),能力極其有限。

1. Sigmoid

  • 公式:f(x) = \sigma(x) = \frac{1}{1 + e^{-x}}

  • 原理: 將輸入壓縮到 (0, 1) 區間。輸出值可以被解釋為概率(尤其是在二分類問題的輸出層)。它平滑、易于求導。

  • 特征:

    • 輸出范圍: (0, 1)

    • 單調遞增: 函數值隨輸入增大而增大。

    • S型曲線: 中間近似線性,兩端飽和(變化緩慢)。

    • 導數:\sigma'(x)=\sigma(x)\cdot(1-\sigma(x))????????最大值為0.25(當x=0時)。

  • 缺點:

    • 梯度消失: 當輸入 x 的絕對值很大時(處于飽和區),導數 σ'(x) 趨近于0。在反向傳播過程中,梯度會逐層連乘這些接近0的小數,導致深層網絡的梯度變得非常小甚至消失,使得網絡難以訓練(權重更新緩慢或停滯)。

    • 信息丟失:輸入100和輸入10000經過sigmoid的激活值幾乎都是等于 1 的,但是輸入的數據卻相差 100 倍。

    • 輸出非零中心化: 輸出值始終大于0。這可能導致后續層的輸入全為正(或全為負),使得權重更新時梯度全部朝同一方向(正或負)移動,降低收斂效率(呈“之”字形下降路徑)。

    • 計算相對較慢: 涉及指數運算。

  • 函數繪制:

    • x -> -∞ 時,σ(x) -> 0 (左水平漸近線 y=0)。

    • x = 0 時,σ(0) = 0.5

    • x -> +∞ 時,σ(x) -> 1 (右水平漸近線 y=1)。

    • 圖像是一條平滑的、從接近0上升到接近1的S形曲線,關于點(0, 0.5)中心對稱。導數曲線是一個鐘形曲線,在x=0處達到峰值0.25,向兩邊迅速衰減到0。

2. Tanh 函數(雙曲正切)

  • 公式:{tanh}(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}

  • 原理: 將輸入壓縮到 (-1, 1) 區間。是Sigmoid函數的縮放和平移版本。解決了 Sigmoid 輸出均值非零的問題,更適合作為隱藏層激活函數。

  • 特征:

    • 輸出范圍: (-1, 1)

    • 單調遞增: 函數值隨輸入增大而增大。

    • S型曲線: 中間近似線性,兩端飽和。

    • 零中心化: 輸出關于原點對稱(tanh(-x) = -tanh(x))。這是相比于Sigmoid的主要優勢,通常能使后續層的輸入具有更理想的均值,有助于加速收斂。

    • 導數: tanh'(x) = 1 - tanh2(x),最大值為1(當x=0時)。

  • 缺點:

    • 梯度消失: 和Sigmoid類似,當 |x| 很大時,導數趨近于0,仍然存在梯度消失問題(雖然比Sigmoid稍好,因為其導數值更大)。

    • 計算相對較慢: 同樣涉及指數運算。

  • 函數繪制:

    • x -> -∞ 時,tanh(x) -> -1 (左水平漸近線 y=-1)。

    • x = 0 時,tanh(0) = 0

    • x -> +∞ 時,tanh(x) -> 1 (右水平漸近線 y=1)。

    • 圖像是一條平滑的、從接近-1上升到接近1的S形曲線,關于原點(0,0)中心對稱。導數曲線是一個鐘形曲線,在x=0處達到峰值1,向兩邊衰減到0。整體形狀比Sigmoid更陡峭,飽和區變化更快。

3. ReLU 函數

  • 公式: \text{ReLU}(x) = \max(0, x)

  • 原理: ReLU 是目前最常用的隱藏層激活函數之一,通過簡單的線性分段

    \text{ReLU}(x)=\begin{cases}x,&\text{if } x>0\\0,&\text{if }x\leq0\end{cases}

  • 特征:

    • 輸出范圍: [0, +∞)

    • 計算極其高效: 只需比較和取最大值操作,沒有指數等復雜運算。

    • 緩解梯度消失: 在正區間 (x > 0),導數為1,梯度可以無損地反向傳播,有效緩解了梯度消失問題,使得深層網絡訓練成為可能。這是其成功的關鍵。

    • ReLU 函數的導數是分段函數:
      \text{ReLU}'(x)=\begin{cases}1,&\text{if } x>0\\0,&\text{if }x\leq0\end{cases}

    • 生物學合理性: 更接近生物神經元的稀疏激活特性(只有一部分神經元被激活)。

    • 稀疏激活:x \leq 0? 時輸出為 0,使網絡具有 “稀疏性”(僅部分神經元激活),模擬生物神經元的工作模式。

  • 缺點:

    • 死亡ReLU (Dying ReLU): 在負區間 (x < 0),導數為0。如果一個神經元的加權和輸入在訓練過程中大部分時間都小于0(例如,學習率過高或負的偏置過大),那么它的梯度在反向傳播時始終為0,導致該神經元的權重無法再更新,永遠“死亡”(輸出恒為0,不再參與訓練)。

    • 輸出非零中心化: 輸出始終 >= 0。

    • x=0 處不可導: 實踐中通常將 x=0 處的導數設為0或1(通常設為0)。

  • 函數繪制:

    • x < 0 時,ReLU(x) = 0 (沿x軸負半軸)。

    • x >= 0 時,ReLU(x) = x (沿y=x直線在第一象限)。

    • 圖像是一個簡單的折線:在原點(0,0)左側是水平線(y=0),在原點右側是一條45度角的直線(y=x)。導數圖像:在x<0處是y=0的水平線;在x>0處是y=1的水平線;在x=0處不連續(通常畫一個空心點)。

4. Leaky ReLU (LReLU)

  • 公式:

    \text{Leaky ReLU}(x)=\begin{cases}x,&\text{if } x>0\\\alpha x,&\text{if } x\leq0\end{cases}

    ?

    (其中 α 是一個很小的正數常數,如0.01)

  • 原理: 針對標準ReLU的“死亡”問題進行的改進。在負區間給予一個很小的非零斜率 α

  • 特征:

    • 輸出范圍: (-∞, +∞) (理論上,但負值部分很小)

    • 緩解死亡ReLU: 在負區間有小的梯度 α,(x<0)時輸出(\alpha x)(非零),即使輸入為負,神經元也有機會更新權重,避免了永久性“死亡”。

    • 計算高效: 和ReLU一樣高效。

  • 缺點:

    • 效果依賴 α 需要人工設定或嘗試 α 值。雖然通常設0.01有效,但并非最優。

    • x=0 處不可導: 同樣的問題。

    • 負區間表現可能不一致: 微小的負斜率可能不足以完全解決某些場景下的問題,或者引入不必要的復雜性。

  • 函數繪制:

    • x >= 0 時,LReLU(x) = x (沿y=x直線在第一象限)。

    • x < 0 時,LReLU(x) = αx (一條斜率為 α 的直線,在第三象限,非常平緩)。

    • 圖像在原點右側與ReLU相同(y=x),在原點左側是一條斜率很小(接近水平)的直線。導數圖像:在x>0處是y=1的水平線;在x<0處是y=α的水平線(非常接近0);在x=0處不連續。

5. Softmax

  • 公式:??????????????\mathrm{Softmax}(z_i)=\frac{e^{z_i}}{\sum_{j=1}^ne^{z_j}}

    ?

    (其中 z_i 是第i個神經元的輸入,K是輸出層神經元的個數/類別數)

    給定輸入向量 z=[z_1,z_2,…,z_n]

    1.指數變換:對每個?z_n?進行指數變換,得到t = [e^{z_1},e^{z_2},...,e^{z_n}],使z的取值區間從(-\infty,+\infty)? 變為??(0,+\infty)

    2.將所有指數變換后的值求和,得到s = e^{z_1} + e^{z_2} + ... + e^{z_n} = \Sigma_{j=1}^ne^{z_j}

    3.將t中每個e^{z_i}?除以歸一化因子s,得到概率分布:


    softmax(z) =[\frac{e^{z_1}}{s},\frac{e^{z_2}}{s},...,\frac{e^{z_n}}{s}]=[\frac{e^{z_1}}{\Sigma_{j=1}^ne^{z_j}},\frac{e^{z_2}}{\Sigma_{j=1}^ne^{z_j}},...,\frac{e^{z_n}}{\Sigma_{j=1}^ne^{z_j}}]
    ?

    即:????????\mathrm{Softmax}(z_i)=\frac{e^{z_i}}{\sum_{j=1}^ne^{z_j}}

    ?

  • 原理: 將多個神經元的輸入(通常是一個向量 z = [z1, z2, ..., zK])轉換為一個概率分布。每個輸出值在 (0, 1) 區間,且所有輸出值之和為1,適合作為多分類任務的輸出層。

  • 特征:

    • 輸出范圍: (0, 1)

    • 歸一化: 輸出總和為1,非常適合表示K個互斥類別的概率分布(多分類問題)。

      \sum_{i=1}^n\text{Softmax}(z_i)=1

    • 放大差異: 輸入值中最大的那個,其對應的輸出概率會被顯著放大(指數效應),較小的輸入對應的概率會被壓縮。

    • 在實際應用中,Softmax常與交叉熵損失函數Cross-Entropy Loss結合使用,用于多分類問題。在反向傳播中,Softmax的導數計算是必需的。

  • 缺點:

    • 僅用于輸出層: 通常只在多分類網絡的最后一層使用。

    • 梯度消失:當某個輸入遠大于其他時,其對應的輸出趨近于 1,其他趨近于 0,梯度接近 0。

API

torch.nn.functional.softmax

import torch
import torch.nn as nn
?
# 表示4分類,每個樣本全連接后得到4個得分,下面示例模擬的是兩個樣本的得分
input_tensor = torch.tensor([[-1.0, 2.0, -3.0, 4.0], [-2, 3, -3, 9]])
?
softmax = nn.Softmax()
output_tensor = softmax(input_tensor)
# 關閉科學計數法
torch.set_printoptions(sci_mode=False)
print("輸入張量:", input_tensor)
print("輸出張量:", output_tensor)
?

輸出結果:

輸入張量: tensor([[-1., ?2., -3., ?4.],[-2., ?3., -3., ?9.]])
輸出張量: tensor([[ ? ?0.0059, ? ? 0.1184, ? ? 0.0008, ? ? 0.8749],[ ? ?0.0000, ? ? 0.0025, ? ? 0.0000, ? ? 0.9975]])

總結對比表

激活函數公式輸出范圍優點缺點適用場景函數繪制描述
Sigmoid\sigma(x) = \frac{1}{1 + e^{-x}}(0, 1)平滑,輸出可解釋為概率,導數易求梯度消失嚴重,輸出非零中心,計算慢二分類輸出層,早期隱藏層S形曲線,從(0,0)附近到(0,1)附近,關于(0,0.5)對稱
Tanh\frac{e^x - e^{-x}}{e^x + e^{-x}}(-1, 1)零中心化,梯度比Sigmoid稍大仍有梯度消失,計算慢隱藏層(比Sigmoid更常用)S形曲線,從(0,-1)附近到(0,1)附近,關于(0,0)對稱
ReLUmax(0, x)[0, +∞)計算極快,有效緩解梯度消失(正區間),生物學啟發,實踐效果好死亡ReLU問題,輸出非零中心,x=0不可導最常用隱藏層 (CNN, FNN)x<0為水平線(y=0),x>=0為45度線(y=x),原點處轉折
Leaky ReLU\begin{cases}x,&\text{if } x>0\\\alpha x,&\text{if } x\leq0\end{cases} (α≈0.01)(-∞, +∞)緩解死亡ReLU,計算快效果依賴α,x=0不可導,負斜率可能非最優隱藏層 (ReLU的改進嘗試)x>=0同ReLU(y=x),x<0為斜率很小的直線(y=αx)
Softmax\frac{e^{z_i}}{\sum_{j=1}^ne^{z_j}}(0, 1), Σ=1輸出歸一化為概率分布,適合多分類僅用于輸出層,數值不穩定(需技巧)多分類輸出層作用于向量,輸出概率向量。最大輸入對應最大概率(接近1)

損失函數選擇

  • 隱藏層:優先用ReLU,計算快、效果穩。若出現大量 “死神經元”(輸出恒為 0),換Leaky ReLU

  • 輸出層:

    • 二分類: Sigmoid (輸出單個概率)。

    • 多分類: Softmax (輸出類別概率分布)。

    • 回歸

      • 輸出非負(如銷量):ReLU

      • 輸出可正可負(如溫度):線性激活(y=x)Tanh(配合縮放)

    • 循環網絡(RNN/LSTM):門控用Sigmoid(控制開關),狀態用Tanh(限制范圍)。

  • 避免使用: 在深度網絡的隱藏層中,通常避免使用Sigmoid(梯度消失問題嚴重),也較少使用原始Tanh(ReLU族通常更優)。

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

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

相關文章

探索Trae:使用Trae CN爬取 Gitbook 電子書

在以前使用過Cursor&#xff0c;但是后期由于試用資源很少&#xff0c;免費資源用完我就卸載掉啦&#xff0c;最近又需要開展相關工作&#xff0c;因此下載了最新版的Trae。Trae 2.0最近很火&#xff0c;我正好想要爬取某一個Gitbook 電子書&#xff0c;因此嘗試使用Trae和Pyth…

嵌入式知識日常問題記錄及用法總結(一)

文章目錄摘要問題一、內核啟動流程1.1 ARM內核上電復位與BootROM執行?啟動代碼&#xff08;Startup Code&#xff09;執行跳轉到用戶程序1.2 內存管理問題二、C語言基礎2.1 常量指針和指針常量區別2.2.函數指針和指針函數區別2.3 關鍵字Volatile2.4 隊列結構體數據摘要 嵌入式…

使用Navicat備份數據庫MySQL、PostGreSQL等

Navicat 支持多種數據庫系統&#xff0c;可通過手動或自動方式進行數據備份&#xff0c;整個過程還是相對簡單且直觀&#xff0c;比自己敲命令行方便多了。一、備份步驟1.1、手動備份1、打開Navicat并連接數據庫&#xff1a;首先&#xff0c;啟動Navicat并連接到您的MySQL數據庫…

Web3: 用ERC-1400革新公司股權激勵

大家好&#xff01;今天&#xff0c;我們來聊一個非常酷的話PEG話題&#xff1a;如何利用Web3技術&#xff0c;特別是ERC-1400證券型代幣標準&#xff0c;來革新傳統的公司股權激勵模式。 大家是否想過&#xff0c;派發給員工的期權或限制性股票&#xff08;RSU&#xff09;可以…

【Python 高頻 API 速學 ④】

一、為什么是這 4 個&#xff1f; 列表&#xff08;list&#xff09;是 Python 最常用的可變序列&#xff0c; 90 % 的操作可以濃縮成 「增、并、刪、排」 四個字&#xff0c; 而這四個字正好對應 append / extend / pop / sort。二、四劍客一覽方法作用原地&#xff1f;返回值…

K8S的POD數量限制

#k8s-v1.11.11.查詢當前節點的最大pod數kubectl describe nodes | grep pods2.編輯配置文件把單臺的pod數量調到150個vim /etc/systemd/system/kubelet.service #添加最大數量--maxPods: 1503.加載配置重啟服務systemctl daemon-reload systemctl restart kubelet#k8s-v1.21.41…

OpenAI開源大模型 GPT-OSS 開放權重語言模型解析:技術特性、部署應用及產業影響

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

CSS--后端也有自己的CSS要學

CSS,即Cascading Style Sheets,它描述了網頁的表現與展示效果 為了演示CSS,我寫了一個簡單的index.html 為了使用控制變量法,一開始我先不寫style.css文件的內容 右鍵在默認瀏覽器里查看頁面,看看效果 1-選擇器 根據標簽名進行匹配,所以也叫元素選擇器 頁面效果: 根據…

Docker swarm 常用的命令集合

#docker swarm## 初始化單節點Swarm docker swarm init# 部署測試服務 docker service create --name web --publish 8080:80 --replicas 3 nginx:alpine# Manager節點初始化&#xff08;指定IP&#xff09; docker swarm init --advertise-addr 192.168.1.100# 獲取加入令牌 M…

231. 2 的冪

Problem: 231. 2 的冪 文章目錄思路解題過程復雜度Code思路 2的冪 n 的二進制只有一個1&#xff0c;而 n - 1的二進制則是把 n 的二進制1變0, 0變1。 例&#xff1a;2^24100,34-1011. 解題過程 n & n - 1 0 復雜度 時間復雜度: O(1)O(1)O(1)空間復雜度: O(1)O(1)O(1) Co…

淺嘗AI輔助C轉Verilog方法

一、常規算法模塊的開發流程日常芯片開發工作中&#xff0c;挺多看工作是把C語言轉verilog。例如ISP的代碼&#xff0c;都很先由算法進行C model的開發&#xff0c;驗證完性能后&#xff0c;輸出算法原理文檔和c代碼&#xff1b;數字設計接手&#xff0c;把C語言轉換為verilog代…

Redis分布式鎖詳解:原理、實現與實戰案例

目錄 1. 什么是分布式鎖&#xff1f; 分布式鎖的核心要求 2. 基于Redis的分布式鎖實現方案 &#xff08;1&#xff09;基礎方案&#xff1a;SETNX EXPIRE &#xff08;2&#xff09;優化方案&#xff1a;SET NX PX&#xff08;原子性加鎖&#xff09; &#xff08;3&…

【能碳建設1】用AI+開源打造物聯網+能碳管理+交易SaaS系統的最短路徑實施指南

摘要 本指南為技術小白設計,目標是在最短時間內利用AI工具與開源系統,獨立完成一套物聯網平臺 + 能碳管理平臺 + 碳交易系統的SaaS最小可用版本(MVP),并可后續擴展。流程分為目標定義、技術選型、環境搭建、核心功能開發、SaaS化、多租戶、上線運維等環節,按天推進,每步…

CVPR中深度學習新范式:通用性、魯棒性與多模態的創新突破

來gongzhonghao【圖靈學術計算機論文輔導】&#xff0c;快速拿捏更多計算機SCI/CCF發文資訊&#xff5e;分享一個深度學習領域正在迅速升溫的前沿方向&#xff1a;通用性與魯棒性的深度神經網絡架構創新。隨著大模型在視覺、文本乃至多模態任務中的廣泛應用&#xff0c;體現出深…

Vue3 學習教程,從入門到精通,Vue 3 + Tailwind CSS 全面知識點與案例詳解(31)

Vue 3 Tailwind CSS 全面知識點與案例詳解一、Vue 3 核心語法知識點 1. Vue 3 基礎 創建 Vue 3 項目 使用 Vite 創建項目&#xff1a;npm create vuelatest # 選擇需要的特性&#xff08;如 TypeScript、Vue Router&#xff09;響應式數據 使用 ref 和 reactive&#xff1a;im…

Android中RecyclerView基本使用

一、RecyclerView 核心概念1. 基本組件關系2. 核心組件作用Adapter&#xff1a;數據與視圖的橋梁LayoutManager&#xff1a;控制布局方式&#xff08;線性/網格/瀑布流&#xff09;ViewHolder&#xff1a;緩存視圖組件ItemDecoration&#xff1a;添加分割線等裝飾ItemAnimator&…

A100用transformers推理gpt-oss

A100本地用transformers推理gpt-oss GPT-oss試用 gpt-oss有兩個原生配置是目前&#xff08;2025-8-8&#xff09;Ampere系列顯卡不支持的&#xff0c;分別是默認的MXFP4量化&#xff0c;以及Flash-attn V3。tranformers推理是比較慢的&#xff0c;可以用于研究模型本身&#x…

虛擬手機號工具使用

背景&#xff1a;注冊部分國外應用時需要國外手機號驗證&#xff0c;例如在注冊cursor時需要國外手機號 解決&#xff1a;使用虛擬手機號網頁進行驗證 https://temp-number.com/ 選擇自己需要的國家 選擇一個手機號 復制手機號到自己的app注冊頁面 并發送消息&#xff0c;然后…

【線程池】壓測確定線程池合適的參數

【線程池】壓測確定線程池合適的參數【一】案例說明【二】明確線程池核心參數及優化目標【1】線程池核心參數&#xff08;需壓測驗證的關鍵參數&#xff09;【2】優化目標【三】壓測前準備【1】環境搭建【2】線程池初始配置&#xff08;基于經驗值&#xff09;【3】壓測工具與監…

GPT OSS 雙模型上線,百度百舸全面支持快速部署

GPT OSS 是 OpenAI 推出的重量級開放模型&#xff0c;專為強推理能力、智能體任務及多樣化開發場景設計&#xff0c;標志著大模型在開放性與實用性上的重要突破。該系列包含兩款高性能模型&#xff1a;參數規模為 117B 的 GPT?OSS?120B 和 21B 的 GPT?OSS?20B。二者皆采用 …