深度學習(5):激活函數

ss激活函數的作用是在隱藏層引入非線性,使得神經網絡能夠學習和表示復雜的函數關系,使網絡具備非線性能力,增強其表達能力。

一、常見激活函數

1、sigmoid

激活函數的作用是在隱藏層引入非線性,使得神經網絡能夠學習和表示復雜的函數關系,使網絡具備非線性能力,增強其表達能力。

(1)公式:

(2)特征

  1. 將任意實數輸入映射到 (0, 1)之間,因此非常適合處理概率場景。

  2. sigmoid函數一般只用于二分類的輸出層

  3. 微分性質: 導數計算比較方便,可以用自身表達式來表示:

(3)缺點

  • 梯度消失:

    • 在輸入非常大或非常小時,Sigmoid函數的梯度會變得非常小,接近于0。這導致在反向傳播過程中,梯度逐漸衰減。

    • 最終使得早期層的權重更新非常緩慢,進而導致訓練速度變慢甚至停滯。

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

  • 計算成本高: 由于涉及指數運算,Sigmoid的計算比ReLU等函數更復雜,盡管差異并不顯著。

2、tanh

tanh(雙曲正切)是一種常見的非線性激活函數,常用于神經網絡的隱藏層。tanh 函數也是一種S形曲線,輸出范圍為(?1,1)。

(1)公式:

(2)特征

  1. 輸出范圍: 將輸入映射到$$(-1, 1)$$之間,因此輸出是零中心的。相比于Sigmoid函數,這種零中心化的輸出有助于加速收斂。

  2. 對稱性: Tanh函數關于原點對稱,因此在輸入為0時,輸出也為0。這種對稱性有助于在訓練神經網絡時使數據更平衡。

  3. 平滑性: Tanh函數在整個輸入范圍內都是連續且可微的,這使其非常適合于使用梯度下降法進行優化。

(3)缺點

  1. 梯度消失: 雖然一定程度上改善了梯度消失問題,但在輸入值非常大或非常小時導數還是非常小,這在深層網絡中仍然是個問題。

  2. 計算成本: 由于涉及指數運算,Tanh的計算成本還是略高,盡管差異不大。

3、ReLU

ReLU(Rectified Linear Unit)是深度學習中最常用的激活函數之一,它的全稱是修正線性單元。ReLU 激活函數的定義非常簡單,但在實踐中效果非常好。

(1)公式

即ReLU對輸入x進行非線性變換:

(2)特征

  1. 計算簡單:ReLU 的計算非常簡單,只需要對輸入進行一次比較運算,這在實際應用中大大加速了神經網絡的訓練。

  2. ReLU 函數的導數是分段函數:

  3. 緩解梯度消失問題:相比于 Sigmoid 和 Tanh 激活函數,ReLU 在正半區的導數恒為 1,這使得深度神經網絡在訓練過程中可以更好地傳播梯度,不存在飽和問題。

  4. 稀疏激活:ReLU在輸入小于等于 0 時輸出為 0,這使得 ReLU 可以在神經網絡中引入稀疏性(即一些神經元不被激活),這種稀疏性可以提升網絡的泛化能力。

(3)缺點

神經元死亡:由于ReLU在x≤0時輸出為0,如果某個神經元輸入值是負,那么該神經元將永遠不再激活,成為“死亡”神經元。隨著訓練的進行,網絡中可能會出現大量死亡神經元,從而會降低模型的表達能力。

4、LeakyReLU

Leaky ReLU是一種對 ReLU 函數的改進,旨在解決 ReLU 的一些缺點,特別是神經元死亡的問題。Leaky ReLU 通過在輸入為負時引入一個小的負斜率來改善這一問題。

(1)公式

其中,alpha?是一個非常小的常數(如 0.01),它控制負半軸的斜率。這個常數 alpha是一個超參數,可以在訓練過程中可自行進行調整。

(2)特征

  1. 避免神經元死亡:通過在x<=0區域引入一個小的負斜率,這樣即使輸入值小于等于零,Leaky ReLU仍然會有梯度,允許神經元繼續更新權重,避免神經元在訓練過程中完全“死亡”的問題。

  2. 計算簡單:Leaky ReLU 的計算與 ReLU 相似,只需簡單的比較和線性運算,計算開銷低。

(3)缺點

  1. 參數選擇:alpha是一個需要調整的超參數,選擇合適的alpha值可能需要實驗和調優。

  2. 出現負激活:如果alpha設定得不當,仍然可能導致激活值過低

5、softmax

Softmax激活函數通常用于分類問題的輸出層,它能夠將網絡的輸出轉換為概率分布,使得輸出的各個類別的概率之和為 1。Softmax 特別適合用于多分類問題。

(1)公式

假設神經網絡的輸出層有n個節點,每個節點的輸出為z_i,則 Softmax 函數的定義如下:

(2)特征

  1. 將輸出轉化為概率:通過Softmax,可以將網絡的原始輸出轉化為各個類別的概率,從而可以根據這些概率進行分類決策。

  2. 概率分布:Softmax的輸出是一個概率分布,即每個輸出值Softmax(Zi)都是一個介于0和1之間的數,并且所有輸出值的和為 1:

  3. 突出差異:Softmax會放大差異,使得概率最大的類別的輸出值更接近1,而其他類別更接近0。

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

(3)缺點

  1. 數值不穩定性:在計算過程中,如果z_i的數值過大,e^{z_i}可能會導致數值溢出。因此在實際應用中,經常會對z_i進行調整,如減去最大值以確保數值穩定。

????????2.難以處理大量類別:Softmax在處理類別數非常多的情況下(如大模型中的詞匯表)計算開銷會較大。

(4)代碼實現

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]])
"""

二、如何選擇激活函數

隱藏層

  1. 優先選ReLU;

  2. 如果ReLU效果不咋地,那么嘗試其他激活,如Leaky ReLU等;

  3. 使用ReLU時注意神經元死亡問題, 避免出現過多神經元死亡;

  4. 不使用sigmoid,嘗試使用tanh;

?輸出層

  1. 二分類問題選擇sigmoid激活函數;

  2. 多分類問題選擇softmax激活函數

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

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

相關文章

洛谷 小 Y 拼木棒 貪心

題目背景上道題中&#xff0c;小 Y 斬了一地的木棒&#xff0c;現在她想要將木棒拼起來。題目描述有 n 根木棒&#xff0c;現在從中選 4 根&#xff0c;想要組成一個正三角形&#xff0c;問有幾種選法&#xff1f;答案對 1097 取模。輸入格式第一行一個整數 n。第二行往下 n 行…

飛算JavaAI的“盾牌”計劃:手撕Spring Security + JWT認證鏈

一、飛算JavaAI&#xff1a;智能時代Java開發的“全能引擎” 1.1 飛算JavaAI&#xff1a;重新定義Java安全開發的“技術革命”在數字化浪潮席卷全球的今天&#xff0c;Java作為企業級應用開發的首選語言&#xff0c;其安全性需求隨著業務復雜度的提升而呈指數級增長——從用戶認…

大語言模型提示工程與應用:大語言模型進階提示工程技術

高級提示詞使用 學習目標 掌握大語言模型中進階提示工程技術的原理與應用&#xff0c;包括零樣本/少樣本提示、思維鏈推理、知識生成等核心方法&#xff0c;提升復雜任務解決能力。 相關知識點 零樣本與少樣本提示思維鏈提示技術高級推理技術 學習內容 1 零樣本與少樣本提…

【從零開始java學習|第五篇】項目、模塊、包、類的概念與聯系

目錄 一、概念與作用&#xff1a;從宏觀到微觀的層級拆分 1. 項目&#xff08;Project&#xff09;&#xff1a;最外層的 "大容器" 2. 模塊&#xff08;Module&#xff09;&#xff1a;項目的 "功能子單元" 3. 包&#xff08;Package&#xff09;&…

kernel pwn 入門(四) ret2dir詳細

介紹 ret2dir 是哥倫比亞大學網絡安全實驗室在 2014 年提出的一種輔助攻擊手法&#xff0c;主要用來繞過 smep、smap、pxn 等用戶空間與內核空間隔離的防護手段&#xff0c; 原論文見此處&#xff1a; ret2dir原文論文 參考&#xff1a;kernel pwn入門到大神 ret2dir ret2di…

n階常系數齊次線性微分方程的含義

微分方程 (Differential Equation): 含義&#xff1a; 包含未知函數及其導數&#xff08;或微分&#xff09;的方程。例子&#xff1a; dy/dx 2x&#xff08;未知函數是 y(x)&#xff0c;導數是 dy/dx&#xff09;, dy/dt 2 dy/dt y 0&#xff08;未知函數是 y(t)&#xff…

hexo + github 搭建個人博客

hexo github 搭建個人博客環境配置部署環境配置部署 所需環境&#xff1a; 跳過github郵箱注冊。 右鍵點擊桌面空白處&#xff0c;選擇 “Git Bash Here”&#xff0c;輸入以下命令設置用戶名和郵箱&#xff1a; git config --global user.name "GitHub用戶名" g…

ERFA庫全面指南:從基礎概念到實踐應用

ERFA庫全面指南&#xff1a;從基礎概念到實踐應用 ERFA&#xff08;Essential Routines for Fundamental Astronomy&#xff09;作為天文學計算領域的重要開源庫&#xff0c;為開發者提供了處理天文時間、坐標系轉換和星體位置計算等核心功能。本文將深入探討ERFA庫的技術細節…

STM32 HAL庫串口的功能實現與改進

目錄 概述 1 CubeMX配置串口參數 1.1 STM32CUB配置參數 1.2 生成代碼 2 核心代碼介紹 2.1 初始化函數 2.2 中斷函數 2.3 重要的用戶函數 2.4 實現用戶接口函數 3 接收數據函數的優化 3.1 HAL庫接收函數的缺陷 3.2 改進接收函數 概述 在STM32開發中使用HAL庫操作串…

DBA | SQL 結構化查詢語言介紹與學習環境準備

[ 知識是人生的燈塔&#xff0c;只有不斷學習&#xff0c;才能照亮前行的道路 ]&#x1f4e2; 大家好&#xff0c;我是 WeiyiGeek&#xff0c;一名深耕安全運維開發&#xff08;SecOpsDev&#xff09;領域的技術從業者&#xff0c;致力于探索DevOps與安全的融合&#xff08;Dev…

day39_2025-08-13

知識點回顧&#xff1a; 彩色和灰度圖片測試和訓練的規范寫法&#xff1a;封裝在函數中 展平操作&#xff1a;除第一個維度batchsize外全部展平 dropout操作&#xff1a;訓練階段隨機丟棄神經元&#xff0c;測試階段eval模式關閉dropout 作業&#xff1a;仔細學習下測試和訓練…

使用GTX ip core + SDI IP core實現SDI設計

使用GTX ip core SDI IP core實現SDI設計 1.SDI接口可以調用GTX IP&#xff0c;具體代碼可以參考xapp592&#xff0c;將代碼移植進入工程里&#xff0c;增加SDI IP核&#xff0c;增加引腳約束即可運行起來 2.使用transceiver的gt的ip core&#xff0c;然后協議選擇SDI協議 3.使…

【無標題】centos 配置阿里云的yum源

1、查看系統正在使用的yum源列表yum repolist結果分析&#xff1a;目前這里看出有base &#xff0c;extras &#xff0c;updates三個yum源&#xff0c;這三個也是系統默認的yum源&#xff0c;一般還需要一個epel企業級額外的yum源&#xff0c;本文主要就是更改yum源的配置文件&…

GPT-5全面開放!OpenAI回應用戶反饋:GPT-4o已重新上線!

OpenAI 近日宣布&#xff0c;其最新模型 GPT-5 現已全面向所有 Plus、Pro、Team 和免費用戶開放。 為進一步優化用戶體驗并應對初期反饋&#xff1a; 用戶額度提升&#xff1a; 在剛剛過去的周末&#xff0c;OpenAI已將 Plus 和 Team 用戶的 GPT-5 使用額度提升至原來的 2 倍…

線程安全的單例模式,STL和智能指針

目錄 什么是單例模式 什么是設計模式 單例模式的特點 餓漢實現方式和懶漢實現方式 餓漢方式實現單例模式 懶漢方式實現單例模式 懶漢方式實現單例模式(線程安全版本) STL,智能指針和線程安全 STL中的容器是否是線程安全的? 智能指針是否是線程安全的? 其他常見的各種鎖 什么是…

[每周一更]-(第155期):深入Go反射機制:架構師視角下的動態力量與工程智慧

在構建高復雜度、高靈活性的Go語言系統時&#xff0c;反射&#xff08;reflect&#xff09;就像一把雙刃劍——用得好能斬斷開發枷鎖&#xff0c;用不好則可能自傷程序。本文將深入探討反射的內部機理、典型應用場景、安全邊界及性能優化策略。一、反射核心&#xff1a;類型與值…

15_基于深度學習的蘋果病害檢測識別系統(yolo11、yolov8、yolov5+UI界面+Python項目源碼+模型+標注好的數據集)

目錄 項目介紹&#x1f3af; 功能展示&#x1f31f; 一、環境安裝&#x1f386; 環境配置說明&#x1f4d8; 安裝指南說明&#x1f3a5; 環境安裝教學視頻 &#x1f31f; 二、數據集介紹&#x1f31f; 三、系統環境&#xff08;框架/依賴庫&#xff09;說明&#x1f9f1; 系統環…

Kotlin 數據容器 - MutableList(MutableList 概述、MutableList 增刪改查、MutableList 遍歷元素)

一、MutableList 概述MutableList 是 Kotlin 中可變的列表接口&#xff0c;它繼承自 List 接口并添加了修改列表內容的方法MutableList 允許添加、刪除、更新元素二、創建 MutableList 1、基礎創建 使用 mutableListOf 函數 // 創建一個 MutableList&#xff0c;包含 4 個元素 …

數據庫規范化:消除冗余與異常的核心法則

規范化&#xff08;Normalization&#xff09; 是數據庫設計中的核心流程&#xff0c;旨在通過結構化表與字段&#xff0c;消除數據冗余和避免數據異常&#xff08;插入/更新/刪除異常&#xff09;&#xff0c;同時確保數據依賴合理。其核心方法是將大表拆分為多個小表&#xf…

AI繪畫與攝影新紀元:ChatGPT+Midjourney+文心一格 共繪夢幻世界

文章目錄一、AI藝術的新時代二、ChatGPT&#xff1a;創意的引擎與靈感的火花三、Midjourney&#xff1a;圖像生成的魔法與技術的奇跡四、文心一格&#xff1a;藝術的升華與情感的共鳴五、融合創新&#xff1a;AI繪畫與攝影實戰的無限可能六、應用場景與實踐案例AI藝術的美好未來…