【激活函數--下】非線性函數與ReLU函數

文章目錄

      • 一、非線性函數在神經網絡中的重要性
      • 二、ReLU函數介紹及其實現
        • 2.1 ReLU函數概述
        • 2.2 ReLU函數的Python實現及可視化

一、非線性函數在神經網絡中的重要性

在神經網絡中,激活函數的選擇對于網絡的性能和能力至關重要。階躍函數和Sigmoid函數除了是激活函數的具體實例外,它們還有一個共同的特性——非線性。這兩種函數雖然在形式上有所不同,但都不是線性的,這使得它們在處理復雜問題時非常有用。

非線性與線性函數的區別

  • 線性函數:形式上可以表示為 h ( x ) = c x h(x) = cx h(x)=cx(其中 c c c 是常數),圖形是一條直線。線性函數簡單且易于計算,但它在功能上有限。
  • 非線性函數:不呈直線形態,可以是曲線或折線等。非線性函數能夠處理更復雜的數據模式,是神經網絡設計中不可或缺的。

神經網絡為何需要非線性激活函數

在神經網絡中使用非線性激活函數至關重要,原因包括:

  1. 層疊效應
    • 如果使用線性函數作為激活函數,無論網絡有多少層,最終輸出都是輸入的線性組合。實際上,多層線性網絡可以被等效為一個沒有隱藏層的網絡。
    • 例如,如果激活函數是線性的 h ( x ) = c x h(x) = cx h(x)=cx,那么三層網絡中的操作 y ( x ) = h ( h ( h ( x ) ) ) y(x) = h(h(h(x))) y(x)=h(h(h(x))) 等同于 y ( x ) = c 3 x y(x) = c^3x y(x)=c3x。這意味著多層的效果可以被單一變換替代,從而無法利用多層結構的優勢。
  2. 表達能力
    • 非線性函數使得神經網絡可以學習和模擬任何形式的復雜函數,這是理解深層網絡能成功解決各種難題的關鍵。
    • 線性函數由于其形式上的限制,不能模擬數據中的復雜模式和關系。

考慮一個使用線性激活函數的簡單三層神經網絡,其操作可以簡化為一次線性變換。這表明,增加層數(即使是使用線性激活函數)并沒有增加網絡對數據的解釋能力或學習能力。相反,非線性激活函數通過每一層的變換使得網絡能逐層構建越來越復雜的數據表示和功能分解。

因此,在設計神經網絡時,選擇合適的非線性激活函數是至關重要的,它決定了網絡能處理的復雜性和靈活性。常用的非線性激活函數包括Sigmoid、ReLU及其變種等,它們各有優勢和應用場景,使得神經網絡能在多種任務中表現出色。

二、ReLU函數介紹及其實現

2.1 ReLU函數概述

ReLU(修正線性單元)函數是神經網絡中廣泛使用的激活函數之一,尤其是在深度學習模型中。相較于早期常用的Sigmoid函數,ReLU因其簡單性和在訓練深層網絡時表現出的效率而受到青睞。ReLU函數的定義如下:
h ( x ) = { x if? x > 0 0 if? x ≤ 0 h(x) = \begin{cases} x & \text{if } x > 0 \\ 0 & \text{if } x \leq 0 \end{cases} h(x)={x0?if?x>0if?x0?
ReLU函數的特點

  • 非線性:盡管ReLU在正數部分是線性的,但整體上它是一個非線性函數,因為它在零點處引入了一個非線性變化(從0變到正值)。
  • 計算簡單:ReLU函數只需判斷輸入是否大于0,這使得它在計算上比Sigmoid或tanh等傳統激活函數要簡單得多。
  • 緩解梯度消失問題:在正數區間,ReLU的導數是常數(1),這有助于緩解深度網絡中的梯度消失問題。
2.2 ReLU函數的Python實現及可視化

在Python中,使用NumPy庫可以非常容易地實現ReLU函數。這里我們使用np.maximum函數來實現,np.maximum用于比較兩個數組并返回各元素的最大值:

import numpy as npdef relu(x):return np.maximum(0, x)

這種實現方法允許輸入是一個數字、一個列表或一個NumPy數組,輸出將是相同形狀的數組,其中每個元素都是應用了ReLU函數的結果。

使用Matplotlib庫,我們可以繪制ReLU函數的圖形,以更好地理解其行為:

import matplotlib.pyplot as plt
import numpy as np# 定義ReLU函數
def relu(x):return np.maximum(0, x)# 生成數據
x = np.arange(-6, 7, 0.1)
y = relu(x)# 繪圖
plt.plot(x, y)
plt.title("ReLU Function")
plt.xlabel("x")
plt.ylabel("h(x)")
plt.ylim(-1, 5)  # 設置y軸的范圍
plt.show()

繪制出的圖形清晰地展示了ReLU函數在 x = 0 x=0 x=0時的突變,這是由0轉變到正值的關鍵特性。

在這里插入圖片描述

ReLU由于其在正區間內保持恒定的梯度和在實際應用中的高效性,已成為許多深度學習模型的首選激活函數。然而,它也有缺點,例如在輸入小于等于0時梯度為0,這可能導致某些神經元在訓練過程中“死亡”,即不再對任何數據產生變化。盡管如此,ReLU仍是現代神經網絡架構中不可或缺的組成部分。

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

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

相關文章

數據可視化-課堂記錄

week02 # 數據可視化的發展歷史 作用 格式塔原則 # 數據可視化的流程# 數據分析 指標體系建設 確定一個行業指標體系實現報表(power bi python matplotlib seaborn pyecharts echarts) # 數據分析面試 技術:sqlexcelpythonpowerbispss …

JS 實現冒泡排序

冒泡排序原理: 升序冒泡:兩次循環,相鄰元素兩兩比較,如果前面的大于后面的,就交互位置; 降序冒泡:兩次循環,相鄰元素兩兩比較,如果前面的小于后面的,就交互…

stable-diffusion-webui配置

源碼地址 https://github.com/AUTOMATIC1111/stable-diffusion-webui.git報錯Fresh install fail to load AttributeError: NoneType object has no attribute _id pydantic降級 pip uninstall pydantic pip install pydantic1.10.11記得要把clip-vit-large-patch14放在opena…

業務邏輯攻擊是什么,如何有效進行防護

想象一下:您的開發團隊剛推出了一款令人驚嘆的全新應用程序,它具有頂級的API安全性,通過客戶端保護對其進行了強化,甚至還設置了針對機器人攻擊的防御措施。你感到這款產品很有安全保障,自己的團隊出色地完成了工作。 …

解決Java Web應用中下載文件無法打開的問題

在Java Web應用中,文件下載是一個常見的功能。但有時候,即使代碼看起來正確,下載的文件卻無法正確打開。 問題描述 假設我們有以下代碼用于下載文件: response.addHeader("Content-Disposition", "attachment;fi…

服務器通的遠程桌面連接不上,關于服務器通暢但遠程桌面連接不上問題的專業分析

在日常的企業IT管理中,服務器遠程桌面連接是一個重要的操作功能。然而,有時會出現服務器網絡通暢,但遠程桌面無法連接的情況。 問題分析 1. 防火墻或安全組設置問題:服務器的防火墻或安全組可能阻止了遠程桌面連接的端口&#xf…

adobe安裝“Error:SyntaxError:JSON Parse error:Unexpec

mac電腦安裝Adobe時,會提示錯誤“Error:SyntaxError:JSON Parse error:Unexpected EOF”,這是怎么回事兒的,不管您是安裝AI、PS、PR還是LR,如果也遇到相同的問題,可以參考一下方法解決: 「adobe安裝提示錯誤…

Java RMI反序列化總結篇-01

1.java rmi反序列化 RMI 允許一個應用程序訪問另外一個服務器或虛擬機上的對象,方法和服務,它使遠程方法調用就像在本地調用一樣簡單。它為用戶屏蔽了底層的網絡傳輸細節,使用的時候只需適當處理異常即可。所以 RMI 是非常容易使用的&#x…

Kubernetes集群安裝

Kubernetes集群安裝 環境準備 192.168.1.53 k8s-master 192.168.1.52 k8s-node-1 192.168.1.51 k8s-node-2 設置三臺機器的主機名: Master上執行: [rootlocalhost ~]# hostnamectl --static set-hostname k8s-masterNode1上執行: [ro…

vue3+vite項目部署服務器,選擇非根目錄訪問

背景 vue3vite項目,需要部署服務器。 但是根目錄已經部署了另外一個項目A了,這個時候要在部署另外一個項目B。 問題 比如你的地址是http://test.com 之前直接輸入http://test.com即可訪問A項目 如果B項目也這么干的話就沖突了 訪問A:http…

哪款骨傳導耳機最值得入手?精選5款頂尖配置的骨傳導耳機,閉眼入也不踩雷!

作為一名有著多年工作經驗的數碼博主,我見證了無數因盲目追求新穎而引發的聽力問題。在此,我必須鄭重提醒大家,雖然市面上充斥著眾多聲稱能提供卓越音質和佩戴舒適度的骨傳導耳機品牌,但它們之間存在大量劣質產品,這類…

centos7安裝zabbix-server

zabbixan-server安裝 環境安裝zabbix安裝zabbix配置apachezabbix-UI前端配置修改zabbix為中文語言 環境 準備: centos7系統、mysql數據庫/MariaDB數據庫 mysql數據庫可參照:https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

算法-卡爾曼濾波之卡爾曼濾波的第二個方程:預測方程(狀態外推方程)

在上一節中,使用了靜態模型,我們推導出了卡爾曼濾波的狀態更新方程,但是在實際情況下,系統都是動態,預測階段,前后時刻的狀態是改變的,此時我們引入預測方程,也叫狀態外推方程&#…

企業為什么進行大數據遷移以及注意事項

在當今數字化時代,數據的遷移成為了企業優化其數據架構、提高數據處理能力、確保業務連續性和數據安全的關鍵步驟。企業可能出于多種原因,如成本效益、性能提升、系統升級、數據集中管理或云服務集成等,選擇將數據從一個存儲系統遷移到另一個…

Spring Boot 整合訊飛星火3.5通過接口Api接口實現聊天功能(首發)復制粘貼即可使用,后續更新WebSocket實現聊天功能

程序員必備網站&#xff1a; 天夢星服務平臺 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…

html5關于WebSocket的一些特點與用例

WebSocket通信機制是一種在單個TCP連接上進行全雙工通信的協議&#xff0c;它允許服務器主動向客戶端推送數據&#xff0c;而無需等待客戶端的請求。以下是WebSocket通信的主要機制&#xff1a; 握手協議&#xff1a;WebSocket通信的第一步是通過HTTP協議進行握手。當客戶端發…

C++ QT設計模式:訪問者模式

基本概念 訪問者模式&#xff08;Visitor Pattern&#xff09;是一種行為型設計模式&#xff0c;它允許你在不改變被訪問類的前提下&#xff0c;定義對其進行操作的新操作。 實現的模塊有&#xff1a; ObjectStructure&#xff08;對象結構&#xff09;&#xff1a;用于存儲…

輕松拿下指針(5)

文章目錄 一、回調函數是什么二、qsort使用舉例三、qsort函數的模擬實現 一、回調函數是什么 回調函數就是?個通過函數指針調?的函數。 如果你把函數的指針&#xff08;地址&#xff09;作為參數傳遞給另?個函數&#xff0c;當這個指針被?來調?其所指向的函數 時&#x…

計算模型的邊界

https://github.com/libigl/libigl.git 這是幾何計算庫&#xff0c;可以計算出模型的邊界 #define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <igl/boundary_loop.h>#include <igl/list_to_matrix.h>int main(){std::vector<std::vector<…

肺部營養“救星”,讓每次呼吸更自由

?#肺科營養#朗格力#班古營養#復合營養素#肺部營養# 正常的健康人,每天自由幸福的呼吸。但是對于肺病患者來說,特別是慢阻肺人群,每一次呼吸都可能是一場挑戰,每一口氣都顯得彌足珍貴。 肺病患者號稱沉默的“呼吸殺手”,它雖然沉默,但不代表它沒能力,除了引起肺功能下降,氧氣…