啟用函式(activation functions)二三事-性質、作用與選擇
一. 引言
神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,
它的組織能夠模擬生物神經系統對真實世界物體所作出的互動反應
如今神經網路已經為很多人所熟知,很多很多複雜的網路結構出現在我們面前。在我們日常編寫神經網路程式碼的過程中,啟用函式似乎已經是一種很自然正常的操作。可是,啟用函式的原理,啟用函式的性質,為什麼需要啟用函式,有哪些常用的啟用函式,如何選用?也需要我們更加深入的瞭解。
二. 神經元
神經網路中最基本的成分是神經元 (neuro且)模型,即上述定義中的"簡單單元"在生物神經網路中,每個神經元與其他神經元相連,當它"興奮"時,就會 向相連的神經元傳送化學物質,從而改變這些神經元 內的電位;如果某神經元的電位超過了 一個"闊值" (threshold) , 那麼它就會被啟用,即 "興奮 "起來,向其他神經元傳送化學物質。之前說深度網路就是模擬這種生物神經網路的,那麼深度學習裡的啟用函式就是模仿這種神經元的啟用方式。
這是一個簡單的神經元模型,它接收N個輸入X1, X2, ... ,Xn。併為每個輸入賦予一個權重W1, W2, ... ,Wn。b是偏置引數(可以理解為為了更好的達到目標而做調整的引數)
- X是該神經元接受的N個輸入
- W是N維的權重向量
- z 表示一個神經元所獲得的輸入訊號x的加權和,稱為神經元的狀態
- f是啟用函式
- a為神經元的活性值,也即該神經元的輸出
到這裡我們知道了神經元接受了多個輸入後,必須要通過"啟用函式"處理才會產生最終輸出。
三. 理想的啟用函式(階躍函式)
理想中的啟用函式是圖所示 的階躍函式,它將輸入值對映為輸出值 "0"或“1”,顯然 "1" 對應於神經元興奮 , "0" 對應於神經元抑制。這種情況是最符合生物特性的,但是階躍函式具有不連續 、不光滑等不太好的性質,所以它無法被用於神經網路的結構。
既然理想的啟用函式無法適用於我們的神經網路結構,那啟用函式應該具有什麼樣的性質呢?
四. 啟用函式的性質
- 可微性:計算梯度時必須要有此性質。
- 非線性:保證資料非線性可分。
- 單調性:保證凸函式。
- 輸出值與輸入值相差不會很大:保證神經網路訓練和調參高效。
五. 啟用函式的作用(非線性)
能使得神經網路的每層輸出結果變得非線性化
非線性化的作用
能使得神經網路的每層輸出結果變得非線性化。
線性可分
線性不可分
六. 常用的啟用函式
-
Sigmoid
- 經典的啟用函式
- 擠壓函式:把一個實數壓縮至0到1之間。當z是非常大的正數時,g(z)會趨近於1,而z是非常大的負數時,則g(z)會趨近於0。
-
擠壓的好處:分類分類的概率,比如啟用函式的輸出為0.9的話便可以解釋為90%的概率為正樣本。
- 微分形式簡單,可以用自身表示。
- Sigmoid函式飽和使梯度消失。當神經元的啟用在接近0或1處時會飽和,在這些區域梯度幾乎為0,這就會導致梯度消失,幾乎就有沒有訊號通過神經傳回上一層
- Sigmoid函式的輸出不是零中心的。因為如果輸入神經元的資料總是正數,那麼關於W的梯度在反向傳播的過程中,將會要麼全部是正數,要麼全部是負數,這將會導致梯度下降權重更新時出現z字型的下降。
-
TANH雙曲正切
- 是sigmoid函式的一種變體,它的取值範圍為【-1,1】,而不是sigmoid函式的【0,1】
- 定義域R,同樣是擠壓函式。
- 解決了輸出不是零中心,但飽和問題仍然存在。
-
ReLU
- 相對於前面兩者沒有任何指數級運算,對網路計算加速具有巨大作用。
- 單側抑制
- 只需要一個閾值就可以得到啟用值,而不用去算一大堆複雜的運算。
- 容易死掉
4.Leaky ReLU
個人第一次使用是在訓練GAN的過程中。
- 給與一個很小的負數梯度值,使負軸資訊不會全部丟失,解決了ReLU神經元“死掉”的問題
相關文章
- 啟用函式的作用函式
- 15.3 極限函式與和函式性質函式
- [20190827]函式索引與選擇率.txt函式索引
- Task 04 變數與函式 Variables and Functions變數函式Function
- Swift-函式(Functions)Swift函式Function
- 梯度提升二三事:怎麼來自定義損失函式?梯度函式
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- 第 8 節:函式-函式型別與作用域函式型別
- 尤拉函式性質和模版函式
- 暫時性死區以及函式作用域函式
- 常用啟用函式函式
- 【Hello CSS】第五章-CSS的選擇器與函式CSS函式
- LLVM二三事LVM
- Go二三事Go
- EventLoop二三事OOP
- PostgreSQL 視窗函式 ( Window Functions ) 如何使用?SQL函式Function
- 回撥函式的作用與意義函式
- 由函式的解析式給出函式的性質 | 你想到了嗎函式
- SVM 的核函式選擇和調參函式
- C++ 函式過載,函式模板和函式模板過載,選擇哪一個?C++函式
- 修復snakeyaml漏洞,與maven打包二三事YAMLMaven
- App安全二三事APP
- 修改IP地址選擇高質量IP波段選用技巧!
- 踩坑】Vue scoped CSS 與深度作用選擇器 /deep/VueCSS
- 【原始碼】MATLAB特徵選擇函式庫version 6.2.2018.1原始碼Matlab特徵函式
- 深度學習(啟用函式)深度學習函式
- EDA 事件驅動架構與 EventBridge 二三事事件架構
- 用typescript開發koa2的二三事TypeScript
- 《Terraform 101 從入門到實踐》 Functions函式ORMFunction函式
- EF.Functions是EF Core提供的函式功能Function函式
- 【ES6基礎】箭頭函式(Arrow functions)函式Function
- Jetpack Compose(5)——生命週期與副作用函式Jetpack函式
- 有選擇性的啟用SAP UI5除錯版本的原始碼UI除錯原始碼
- 提升直播app開發質量,我們需要掌握的二三事APP
- 域名選擇注意事項
- App簽名二三事APP
- 理解pytorch幾個高階選擇函式(如gather)PyTorch函式
- 事務的性質(ACID)