神經網絡為什么要用 ReLU 增加非線性?

在神經網絡中使用?ReLU(Rectified Linear Unit)?作為激活函數的主要目的是引入非線性,這是神經網絡能夠學習復雜模式和解決非線性問題的關鍵。


1. 為什么需要非線性?

1.1 線性模型的局限性

如果神經網絡只使用線性激活函數(如?f(x)=x),那么無論網絡有多少層,整個模型仍然是一個線性模型。這是因為多個線性變換的組合仍然是線性變換:

f(f(f(x)))=W_{3}(W_{2}(W_{1}x+b_{1})+b_{2}) + b_{3}={W}'x+{b}'

這樣的模型無法學習復雜的非線性關系,表達能力非常有限。

1.2 非線性激活函數的作用

非線性激活函數(如 ReLU、Sigmoid、Tanh)能夠打破線性關系,使神經網絡能夠學習復雜的非線性模式。通過堆疊多個非線性層,神經網絡可以逼近任意復雜的函數。


2. ReLU 的定義

ReLU 的定義非常簡單:

ReLU(x)=max(0,x)

  • 當輸入?x>0?時,輸出?x。

  • 當輸入?x≤0?時,輸出?0。


3. ReLU 的優勢

3.1 緩解梯度消失問題

  • 在 Sigmoid 或 Tanh 激活函數中,當輸入值較大或較小時,梯度會趨近于零,導致梯度消失問題。

  • ReLU 的梯度在正區間恒為 1,避免了梯度消失問題,使得深層網絡的訓練更加穩定。

3.2 計算高效

  • ReLU 的計算非常簡單,只需要比較和取最大值操作,計算速度遠快于 Sigmoid 和 Tanh。

  • 在訓練大規模神經網絡時,ReLU 的高效計算能夠顯著加快訓練速度。

3.3 稀疏激活

  • ReLU 會將負值輸出為零,這使得神經網絡的激活變得稀疏。

  • 稀疏激活可以減少參數之間的依賴性,提高模型的泛化能力。


4. ReLU 的變體

盡管 ReLU 有很多優點,但它也存在一些問題(如神經元“死亡”問題)。因此,研究者提出了多種 ReLU 的變體:

4.1 Leaky ReLU

在負區間引入一個小的斜率,避免神經元“死亡”:

Leaky ReLU(x)=\begin{cases} x& \text{ if } x> 0 \\ ax& \text{ if } x\leq 0 \end{cases}

其中?α?是一個小的正數(如 0.01)。

4.2 Parametric ReLU (PReLU)

將 Leaky ReLU 的斜率?α?作為可學習參數,動態調整負區間的輸出。

4.3 Exponential Linear Unit (ELU)

在負區間引入指數函數,平滑過渡:

ELU(x)=\begin{cases} x & \text{ if } x> 0 \\ a(e^{x}-1) & \text{ if } x\leq 0 \end{cases}


5. ReLU 的代碼實現

以下是 ReLU 及其變體的 PyTorch 展示:

import torch
import torch.nn as nn# 標準 ReLU
relu = nn.ReLU()
x = torch.tensor([-1.0, 2.0, -3.0, 4.0])
print(relu(x))  # 輸出: tensor([0., 2., 0., 4.])# Leaky ReLU
leaky_relu = nn.LeakyReLU(negative_slope=0.01)
print(leaky_relu(x))  # 輸出: tensor([-0.0100,  2.0000, -0.0300,  4.0000])# ELU
elu = nn.ELU(alpha=1.0)
print(elu(x))  # 輸出: tensor([-0.6321,  2.0000, -0.9502,  4.0000])

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

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

相關文章

使用SSH密鑰連接本地git 和 github

目錄 配置本地SSH,添加到github首先查看本地是否有SSH密鑰生成SSH密鑰,和郵箱綁定將 SSH 密鑰添加到 ssh-agent:顯示本地公鑰*把下面這一串生成的公鑰存到github上* 驗證SSH配置是否成功終端跳轉到本地倉庫把http協議改為SSH(如果…

關于AI數據分析可行性的初步評估

一、結論:可在部分環節嵌入,無法直接處理大量數據 1.非本地部署的AI應用處理非機密文件沒問題,內部文件要注意數據安全風險。 2.AI(指高規格大模型)十分適合探索性研究分析,對復雜報告無法全流程執行&…

矩陣分析-淺要理解(深度學習方向)

梯度分析與最優化 在深度學習的任務中,我們所期望的是訓練一個神經網絡,使得預測結果與真實標簽之間的誤差最小化,這可以近似看作是一個提供梯度下降等優化找到全局最優解的凸優化問題。 奇異值分解 在信息工程領域,對數據處理的…

使用DeepSeek+藍耘快速設計網頁簡易版《我的世界》小游戲

前言:如今,借助先進的人工智能模型與便捷的云平臺,即便是新手開發者,也能開啟創意游戲的設計之旅。DeepSeek 作為前沿的人工智能模型,具備強大的功能與潛力,而藍耘智算云平臺則為其提供了穩定高效的運行環境…

固定表頭、首列 —— uniapp、vue 項目

項目實地&#xff1a;也可以在 【微信小程序】搜索體驗&#xff1a;xny.handbook 另一個體驗項目&#xff1a;官網 一、效果展示 二、代碼展示 &#xff08;1&#xff09;html 部分 <view class"table"><view class"tr"><view class&quo…

【學習筆記】Numpy和Tensor的區別

1. NumPy 和 PyTorch Tensor 的格式對比 NumPy 使用的是 numpy.ndarray&#xff0c;而 PyTorch 使用的是 torch.Tensor&#xff0c;兩者的格式在數據存儲和計算方式上有所不同。 NumPy (numpy.ndarray) import numpy as np array np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.…

每天一道算法題【藍橋杯】【在排序數組中查找元素的第一個位置和最后一個位置】

思路 本題為查找左邊界和右邊界的標準模型 查找左邊界 int left 0, right nums.size() - 1, mid 0; //查找左邊界 while (left < right) { mid left (right - left) / 2; if (nums[mid] < target) left mid 1; else right mid; } 查找右邊界 int left 0, r…

Python數據分析之機器學習基礎

Python 數據分析重點知識點 本系列不同其他的知識點講解&#xff0c;力求通過例子讓新同學學習用法&#xff0c;幫助老同學快速回憶知識點 可視化系列&#xff1a; Python基礎數據分析工具數據處理與分析數據可視化機器學習基礎 五、機器學習基礎 了解機器學習概念、分類及…

我與DeepSeek讀《大型網站技術架構》(10)- 維基百科的高性能架構設計分析

目錄 網站整體架構核心組件請求處理流程圖關鍵環節說明 性能優化策略前端優化&#xff1a;攔截 80% 以上請求服務端優化&#xff1a;高性能 PHP 集群后端優化&#xff1a;存儲與緩存極致設計Memcached 持久化連接 性能優化策略對比表 網站整體架構 核心組件 Wikipedia 的架構…

Excel多級聯動下拉菜單設置

1.問題描述 現有數據表如下圖所示&#xff1a; 該表中包括省、市、縣三級目錄。 現要將其整理成數據表模板&#xff0c;如下圖所示&#xff1a; 要求制作成下拉菜單的形式&#xff0c;且每一級目錄的下拉菜單列表要根據上一級目錄的內容來確定。 如上圖所示&#xff0c;只有…

智駕技術全鏈條解析

智駕技術全鏈條解析&#xff08;2025年最新版&#xff09; 智駕技術涵蓋從環境感知到車輛控制的完整閉環&#xff0c;涉及硬件、算法、數據與系統集成等多個領域。以下結合行業最新進展&#xff08;截至2025年3月&#xff09;進行深度拆解&#xff1a; 一、感知技術&#xff1…

SpringMVC執行的流程

SpringMVC 基于 MVC 架構模式&#xff0c;核心流程時前端控制室 DispathcherServlet 統一調度&#xff0c;通過組件協作完成 http 的請求與響應。 對于 dispatchServlet 作為前端請求的控制器&#xff0c;全局的訪問點&#xff0c;首先將根據 URL 調用 HandlerMapping 獲取 Han…

Linux學習(十五)(故障排除(ICMP,Ping,Traceroute,網絡統計,數據包分析))

故障排除是任何 Linux 用戶或管理員的基本技能。這涉及識別和解決 Linux 系統中的問題。這些問題的范圍包括常見的系統錯誤、硬件或軟件問題、網絡連接問題以及系統資源的管理。Linux 中的故障排除過程通常涉及使用命令行工具、檢查系統和應用程序日志文件、了解系統進程&#…

存儲過程和自定義函數在銀行信貸業務中的應用(oracle)

數據校驗和清洗 例如&#xff0c;檢查客戶的年齡是否在合理范圍內&#xff0c;貸款金額是否符合規定的上下限等。 對于不符合規則的數據&#xff0c;可以進行清洗和修正。比如&#xff0c;將空值替換為默認值&#xff0c;或者對錯誤的數據進行糾正。 CREATE OR REPLACE PROC…

指令微調 (Instruction Tuning) 與 Prompt 工程

引言 預訓練語言模型 (PLMs) 在通用語言能力方面展現出強大的潛力。然而&#xff0c;如何有效地引導 PLMs 遵循人類指令&#xff0c; 并輸出符合人類意圖的響應&#xff0c; 成為釋放 PLMs 價值的關鍵挑戰。 指令微調 (Instruction Tuning) 和 Prompt 工程 (Prompt Engineerin…

【c++】反轉字符串

說明 將string類型的字符串本身反轉 用到庫&#xff1a;algorithm 示例代碼 #include <iostream> #include <string> #include <algorithm> using namespace std;int main() {string str "123";reverse(str.begin(), str.end());cout <<…

正則表達式(復習)

文章目錄 一、[]: 一個字符集合二、{}: 重復次數三、特殊符號四、(): 分組五、python代碼示例六、注意 正則表達式(regular expression)描述了一種字符串匹配的模式&#xff08;pattern&#xff09;&#xff0c;可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個…

ARMV8的64位指令

一、介紹 ARMv8 體系結構最大的改變是增加了一個新的 64 位的指令集&#xff0c;這是早前 ARM 指令集 的有益補充和增強。它可以處理 64 位寬的寄存器和數據并且使用 64 位的指針來訪問內存。這 個新的指令集稱為 A64 指令集&#xff0c;運行在 AArch64 狀態。 ARMv8 兼容舊的…

線性代數之矩陣特征值與特征向量的數值求解方法

文章目錄 前言1. 冪迭代法&#xff08;Power Iteration&#xff09;冪法與反冪法求解矩陣特征值冪法求最大特征值編程實現補充說明 2. 逆冪迭代法&#xff08;Inverse Iteration&#xff09;移位反冪法 3. QR 算法&#xff08;QR Algorithm&#xff09;——稠密矩陣理論推導編程…

VScode:運行程序停止后,頻繁出現終端進程被終止

VScode里面powershell被迫關閉 bug場景排查原因解決辦法 bug場景 系統&#xff1a;Windows IDE&#xff1a;Visual Studio Code 停止運行程序后&#xff0c;按向上箭頭想要執行上一步命令&#xff0c;忽然終端頁面強行關閉&#xff0c;并報錯如下&#xff1a; 終端進程 &quo…