激活函數數學詳解以及應用場景解釋

文章目錄

  • 激活函數
    • 1. Sigmoid 激活函數
      • 例子及推導過程
      • 代碼
    • 2. ReLU 激活函數
      • 例子及推導過程
    • 3. Tanh 激活函數
      • 例子及推導過程
      • 代碼
    • 4. Softmax 激活函數
      • 例子及推導過程
      • 代碼
    • CNN 中的卷積層工作原理
      • 卷積計算過程
      • 卷積后的輸出及 ReLU 應用

激活函數

激活函數在神經網絡中扮演著至關重要的角色,主要用于引入非線性,使神經網絡能夠學習和表示復雜數據,如圖像、聲音、文本等。以下是幾種常見的激活函數及其數學表達式。

1. Sigmoid 激活函數

Sigmoid 函數是一個經典的激活函數,通常用于二分類問題中。它的數學表達式為:

σ ( x ) = 1 1 + e ? x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e?x1?

Sigmoid 函數的輸出范圍在 0 到 1 之間,適合用作輸出概率。然而,它也存在梯度消失問題,特別是當 x 的值非常大或非常小的時候。

例子及推導過程

假設卷積操作的輸出特征圖為:
[ 0.8 ? 0.9 1.2 ? 1.1 ] \begin{bmatrix} 0.8 & -0.9 \\ 1.2 & -1.1 \\ \end{bmatrix} [0.81.2??0.9?1.1?]

應用 Sigmoid 激活函數的計算過程是將這個特征圖中的每個元素通過 Sigmoid 函數轉換。Sigmoid 函數的數學表達式是 σ ( x ) = 1 1 + e ? x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e?x1?

因此,Sigmoid 激活后的特征圖為:
[ σ ( 0.8 ) σ ( ? 0.9 ) σ ( 1.2 ) σ ( ? 1.1 ) ] \begin{bmatrix} \sigma(0.8) & \sigma(-0.9) \\ \sigma(1.2) & \sigma(-1.1) \\ \end{bmatrix} [σ(0.8)σ(1.2)?σ(?0.9)σ(?1.1)?]=
[ 1 1 + e ? 0.8 1 1 + e 0.9 1 1 + e ? 1.2 1 1 + e 1.1 ] \begin{bmatrix} \frac{1}{1 + e^{-0.8}} & \frac{1}{1 + e^{0.9}} \\ \frac{1}{1 + e^{-1.2}} & \frac{1}{1 + e^{1.1}} \\ \end{bmatrix} [1+e?0.81?1+e?1.21??1+e0.91?1+e1.11??]

代碼

import numpy as np# Sigmoid 激活函數定義
def sigmoid(x):return 1 / (1 + np.exp(-x))# 假設的卷積層輸出特征圖
feature_map = np.array([[0.8, -0.9], [1.2, -1.1]])# 應用 Sigmoid 激活函數
activated_feature_map = sigmoid(feature_map)print("Sigmoid 激活后的特征圖:\n", activated_feature_map)

2. ReLU 激活函數

ReLU(Rectified Linear Unit)函數是深度學習中最常用的激活函數之一。它的數學表達式為:

ReLU ( x ) = max ? ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

ReLU 函數在正數區間內保持線性,這使得計算效率非常高。但在負數區間內,它不進行激活,可能導致“死神經元”問題。

例子及推導過程

假設我們有以下輸入數據和權重:

  • 輸入值: ( x = [1.0, -2.0, 3.0] )
  • 權重: ( w = [0.4, 0.3, 0.5] )
  • 偏置: ( b = -0.5 )

計算加權輸入 ( z ):
z = w 1 × x 1 + w 2 × x 2 + w 3 × x 3 + b z = w_1 \times x_1 + w_2 \times x_2 + w_3 \times x_3 + b z=w1?×x1?+w2?×x2?+w3?×x3?+b
z = 0.4 × 1.0 + 0.3 × ( ? 2.0 ) + 0.5 × 3.0 ? 0.5 z = 0.4 \times 1.0 + 0.3 \times (-2.0) + 0.5 \times 3.0 - 0.5 z=0.4×1.0+0.3×(?2.0)+0.5×3.0?0.5

應用 ReLU 激活函數:
ReLU ( z ) = max ? ( 0 , z ) \text{ReLU}(z) = \max(0, z) ReLU(z)=max(0,z)

在此例中,我們首先計算了加權輸入 z,然后應用了 ReLU 函數。ReLU 函數的作用是將所有負值置為 0,而保留正值不變

3. Tanh 激活函數

Tanh 函數是 Sigmoid 函數的變體,輸出范圍在 -1 到 1 之間。其數學表達式為:

tanh ? ( x ) = e x ? e ? x e x + e ? x \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} tanh(x)=ex+e?xex?e?x?

Tanh 函數的輸出是零中心的,這使得在某些情況下,它比 Sigmoid 函數表現更好。

例子及推導過程

假設卷積操作的輸出特征圖為:
[ 0.5 ? 0.6 0.9 ? 1.0 ] \begin{bmatrix} 0.5 & -0.6 \\ 0.9 & -1.0 \\ \end{bmatrix} [0.50.9??0.6?1.0?]

應用 Tanh 激活函數的計算過程是將這個特征圖中的每個元素通過 Tanh 函數轉換。Tanh 函數的數學表達式是 tanh ? ( x ) = e x ? e ? x e x + e ? x \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} tanh(x)=ex+e?xex?e?x?

因此,Tanh 激活后的特征圖為:
[ tanh ? ( 0.5 ) tanh ? ( ? 0.6 ) tanh ? ( 0.9 ) tanh ? ( ? 1.0 ) ] \begin{bmatrix} \tanh(0.5) & \tanh(-0.6) \\ \tanh(0.9) & \tanh(-1.0) \\ \end{bmatrix} [tanh(0.5)tanh(0.9)?tanh(?0.6)tanh(?1.0)?]=
[ e 0.5 ? e ? 0.5 e 0.5 + e ? 0.5 e ? 0.6 ? e 0.6 e ? 0.6 + e 0.6 e 0.9 ? e ? 0.9 e 0.9 + e ? 0.9 e ? 1.0 ? e 1.0 e ? 1.0 + e 1.0 ] \begin{bmatrix} \frac{e^{0.5} - e^{-0.5}}{e^{0.5} + e^{-0.5}} & \frac{e^{-0.6} - e^{0.6}}{e^{-0.6} + e^{0.6}} \\ \frac{e^{0.9} - e^{-0.9}}{e^{0.9} + e^{-0.9}} & \frac{e^{-1.0} - e^{1.0}}{e^{-1.0} + e^{1.0}} \\ \end{bmatrix} [e0.5+e?0.5e0.5?e?0.5?e0.9+e?0.9e0.9?e?0.9??e?0.6+e0.6e?0.6?e0.6?e?1.0+e1.0e?1.0?e1.0??]

代碼

import numpy as np# Tanh 激活函數定義
def tanh(x):return np.tanh(x)# 假設的卷積層輸出特征圖
feature_map = np.array([[0.5, -0.6], [0.9, -1.0]])# 應用 Tanh 激活函數
activated_feature_map = tanh(feature_map)print("Tanh 激活后的特征圖:\n", activated_feature_map)

4. Softmax 激活函數

Softmax 函數通常用于多分類神經網絡的輸出層。它將輸入轉換為概率分布。對于給定的類別集合,Softmax 的數學表達式為:

Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} Softmax(xi?)=j?exj?exi??

其中 ( x_i ) 是一個特定輸出節點的輸入,分母是所有輸出節點輸入的指數和。這確保了所有輸出概率的總和為 1。

例子及推導過程

假設一個多分類問題的輸出層得到以下得分:
scores = [ 2.0 , 1.0 , 0.1 ] \text{scores} = [2.0, 1.0, 0.1] scores=[2.0,1.0,0.1]

應用 Softmax 激活函數的計算過程是將這些得分通過 Softmax 函數轉換。Softmax 函數的數學表達式是:
Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} Softmax(xi?)=j?exj?exi??

其中 ( x_i ) 是特定類別的得分,分母是所有類別得分的指數和。

因此,Softmax 激活后的概率分布為:
[ e 2.0 e 2.0 + e 1.0 + e 0.1 e 1.0 e 2.0 + e 1.0 + e 0.1 e 0.1 e 2.0 + e 1.0 + e 0.1 ] \begin{bmatrix} \frac{e^{2.0}}{e^{2.0} + e^{1.0} + e^{0.1}} & \frac{e^{1.0}}{e^{2.0} + e^{1.0} + e^{0.1}} & \frac{e^{0.1}}{e^{2.0} + e^{1.0} + e^{0.1}} \\ \end{bmatrix} [e2.0+e1.0+e0.1e2.0??e2.0+e1.0+e0.1e1.0??e2.0+e1.0+e0.1e0.1??]

代碼

import numpy as np# Softmax 激活函數定義
def softmax(x):e_x = np.exp(x - np.max(x))  # 防止數值過大return e_x / e_x.sum()# 多分類問題的輸出層得分
scores = np.array([2.0, 1.0, 0.1])# 應用 Softmax 激活函數
probabilities = softmax(scores)print("Softmax 激活后的概率分布:", probabilities)

CNN 中的卷積層工作原理

卷積神經網絡(CNN)中的卷積層主要用于特征提取。卷積操作涉及將卷積核(或濾波器)應用于輸入數據。

卷積計算過程

考慮一個簡單的例子,我們有一個 3x3 的輸入矩陣和一個 2x2 的卷積核:

  • 輸入矩陣:
    [ 1 2 3 4 5 6 7 8 9 ] \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{bmatrix} ?147?258?369? ?

  • 卷積核:
    [ ? 1 0 0 1 ] \begin{bmatrix} -1 & 0 \\ 0 & 1 \\ \end{bmatrix} [?10?01?]

卷積操作包括將卷積核滑動過輸入矩陣的每個區域,并計算元素的點乘,然后將結果求和。

例如,卷積核覆蓋輸入矩陣左上角時的計算:
[ 1 2 4 5 ] ⊙ [ ? 1 0 0 1 ] = 1 × ( ? 1 ) + 2 × 0 + 4 × 0 + 5 × 1 = 4 \begin{bmatrix} 1 & 2 \\ 4 & 5 \\ \end{bmatrix} \odot \begin{bmatrix} -1 & 0 \\ 0 & 1 \\ \end{bmatrix} = 1 \times (-1) + 2 \times 0 + 4 \times 0 + 5 \times 1 = 4 [14?25?][?10?01?]=1×(?1)+2×0+4×0+5×1=4

這個過程在整個輸入矩陣上重復進行,生成輸出特征圖。

卷積后的輸出及 ReLU 應用

假設卷積操作的輸出特征圖為:
[ 4 3 2 1 ] \begin{bmatrix} 4 & 3 \\ 2 & 1 \\ \end{bmatrix} [42?31?]

應用 ReLU 激活函數的計算過程是將這個特征圖中的每個元素與 0 比較,取較大者。ReLU 函數的數學表達式是 ReLU ( x ) = max ? ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

因此,ReLU 激活后的特征圖為:
[ max ? ( 0 , 4 ) max ? ( 0 , 3 ) max ? ( 0 , 2 ) max ? ( 0 , 1 ) ] \begin{bmatrix} \max(0, 4) & \max(0, 3) \\ \max(0, 2) & \max(0, 1) \\ \end{bmatrix} [max(0,4)max(0,2)?max(0,3)max(0,1)?]=
[ 4 3 2 1 ] \begin{bmatrix} 4 & 3 \\ 2 & 1 \\ \end{bmatrix} [42?31?]

在這個例子中,由于所有值都是正的,ReLU 激活后的特征圖與原特征圖相同。

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

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

相關文章

IPSec 協議

在 TCP/IP 協議中,對 IP 數據包沒有提供任何安全保護,攻擊者可以通過網絡嗅探、 IP 欺騙、連接截獲等方法來攻擊正常的 TCP/IP 通信。因此,通信過程中會存在以下危險:數據并非來自合法的發送者、數據在傳輸過程中被非法篡改、信息…

前端知識(十七)——入口函數和特定函數的區別

入口函數和特定函數是編程中常見的兩種函數類型,它們在功能和使用場景上有所不同。下面我將通過Python代碼示例來解釋它們的區別。 1.入口函數:入口函數通常是一個程序或模塊的起始點,它負責接收用戶輸入或外部數據,并啟動程序的…

DM8/達夢 數據庫管理員使用手冊詳解

1.1DM客戶端存放位置 Windows:DM數據庫安裝目錄中tool文件夾和bin文件夾中。 Linux:DM數據庫安裝目錄中tool目錄和bin目錄中。 1.2DM數據庫配置助手 1.2.1Windows創建數據庫 打開數據庫配置助手dbca 點擊創建數據庫實例 選擇一般用途 瀏覽選擇數據庫…

圖中的最長環

說在前面 🎈不知道大家對于算法的學習是一個怎樣的心態呢?為了面試還是因為興趣?不管是處于什么原因,算法學習需要持續保持,今天讓我們一起來看看這一道題目————圖中的最長環,圖論題目中比較常見的環路…

vite+TypeScript+vue3+router4+Pinia+ElmPlus+axios+mock項目基本配置

1.viteTSVue3 npm create vite Project name:... yourProjectName Select a framework:>>Vue Select a variant:>>Typescrit2. 修改vite基本配置 配置 Vite {#configuring-vite} | Vite中文網 (vitejs.cn) vite.config.ts import { defineConfig } from vite …

C語言筆試例題_指針專練30題(附答案解析)

C語言筆試例題_指針專練30題(附答案解析) 指針一直是C語言的靈魂所在,是掌握C語言的必經之路,收集30道C語言指針題目分享給大家,測試環境位64位ubuntu18.04環境,如有錯誤,懇請指出,文明討論!&am…

基于SSM+JSP網上訂餐管理系統(Java畢業設計)

大家好,我是DeBug,很高興你能來閱讀!作為一名熱愛編程的程序員,我希望通過這些教學筆記與大家分享我的編程經驗和知識。在這里,我將會結合實際項目經驗,分享編程技巧、最佳實踐以及解決問題的方法。無論你是…

Flask筆記三之連接使用數據庫

本文首發于公眾號:Hunter后端 原文鏈接:Flask筆記三之連接使用數據庫 這一節介紹 Flask 與數據庫的連接,以及接口里查詢數據的操作。 這里使用的是 SQLAlchemy pymysql 實現與數據庫的連接,SQLAlchemy 的詳細介紹見之前的筆記有…

藍橋杯2021年5月青少組Python程序設計國賽真題

30 個人在一條船上,超載,需要 15 人下船于是人們排成一隊,排隊的位置即為他們的編號。報數,從1開始,數到9的人下船。如此循環,直到船上僅剩15 人為止,問都有哪些編號的人下船了呢? 2】判斷101-200之間有多少個素數,并輸出所有素數…

Maven上傳Jar到Nexus遠程倉庫的兩種方式

Maven上傳Jar到Nexus遠程倉庫的兩種方式 文章目錄 前言通過mvn clean deploy指令上傳第一步 配置maven的setting.xml文件第二步 配置pom文件第三步 執行打包指令 手動上傳 jar到遠程倉庫第一步 配置setting文件第二步 執行上傳命令 前言 各個公司在開發項目時,一般…

Linux C/C++并發編程實戰(8)CAS機制的ABA問題

文章目錄 無鎖隊列中的ABA問題ABA問題解決方案 ABA問題:CAS在操作的時候會檢查變量的值是否被更改過,如果沒有則更新值,但是帶來一個問題,最開始的值是A,接著變成B,最后又變成了A。經過檢查這個值確實沒有修…

Leetcode每日一題

https://leetcode.cn/problems/binary-tree-preorder-traversal/ 這道題目需要我們自行進行創建一個數組,題目也給出我們需要自己malloc一個數組來存放,這樣能達到我們遍歷的效果,我們來看看他的接口函數給的是什么。 可以看到的是這個接口函…

說說webpack中常見的loader?解決了什么問題?

在Webpack中,Loader是用于處理各種文件類型的模塊加載器,它們用于對文件進行轉換、處理和加載。常見的Loader解決了以下問題: 處理 JavaScript 文件:Babel Loader用于將最新的JavaScript語法轉譯為瀏覽器兼容的版本,以…

5_CSS三大特性盒子模型

第5章-盒子模型【比屋教育】 本課目標(Objective) 掌握CSS三大特性理解什么是盒子模型掌握內邊距padding的用法掌握外邊距margin的用法 1. CSS的層疊,繼承,優先級 1.1 CSS層疊 層疊:是指多個CSS樣式疊加到同一個元…

Web(8)SQL注入

Web網站(對外門戶) 原理:not>and>or(優先級) 一.低級注入 order by的作用是對字段進行排序,如order by 5,根據第五個字段 進行排序,如果一共有4個字段,輸入order by 5系統就會報錯不 …

詳細介紹開源固件-TF-A

什么是TF-A? TF-A(Trusted Firmware-A)是一種用于嵌入式系統的開源固件,而不是Linux的一部分。TF-A主要用于ARM架構的處理器和設備,它提供了一組安全和可信任的軟件組件,用于引導和初始化系統。 如下是其…

GD32F30X-RT-Thread學習-線程管理

1. 軟硬件平臺 GD32F307E-START Board開發板MDK-ARM Keil 2.RT-Thread Nano 3.RT-Thread 內核學習-線程管理 ? 在多線程操作系統中,可以把一個復雜的應用分解成多個小的、可調度的、序列化的程序單元,當合理地劃分任務并正確地執行時,這…

qt可以詳細寫的項目或技術

1.QT 圖形視圖框架 2.QT 模型視圖結構 3.QT列表顯示大量信息 4.QT播放器 5.QT 編解碼 6.QT opencv

Linux--RedHat--安裝和配置C++環境

百度下載,安裝包: 鏈接:https://pan.baidu.com/s/1IgBfCCRxGYZ_PPiedad0xQ 提取碼:ffff 下載后,建個目錄,先解壓好安裝包! (兩種方法)執行如下命令: 參考…

Bypass open_basedir

講解 open_basedir是php.ini中的一個配置選項,可用于將用戶訪問文件的活動范圍限制在指定的區域。 假設open_basedir/var/www/html/web1/:/tmp/,那么通過web1訪問服務器的用戶就無法獲取服務器上除了/var/www/html/web1/和/tmp/這兩個目錄以外的文件。…