啟用函式(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 極限函式與和函式性質函式
- 深度神經網路(DNN)損失函式和啟用函式的選擇神經網路DNN函式
- Hive FUNCTIONS函式HiveFunction函式
- 指南:函式(Functions)函式Function
- HTML input type=file檔案選擇表單元素二三事HTML
- 函式與作用域函式
- Swift-函式(Functions)Swift函式Function
- 梯度提升二三事:怎麼來自定義損失函式?梯度函式
- 第十三篇:成員函式與非成員函式的選擇函式
- Day6 函式(Functions)函式Function
- 尤拉函式性質和模版函式
- 用fcntl()設定阻塞函式的阻塞性質函式
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- jQuery----函式和選擇器jQuery函式
- 損失函式+啟用函式函式
- 第 8 節:函式-函式型別與作用域函式型別
- 暫時性死區以及函式作用域函式
- Hive 視窗函式(Windowing Functions)Hive函式Function
- [CareerCup] 13.3 Virtual Functions 虛擬函式Function函式
- MySQL 死鎖與日誌二三事MySql
- EventLoop二三事OOP
- Go二三事Go
- 常用啟用函式函式
- 【Hello CSS】第五章-CSS的選擇器與函式CSS函式
- [20190827]函式索引與選擇率.txt函式索引
- JS內建物件,函式與作用域JS物件函式
- 回撥函式的作用與意義函式
- JQuery選擇器——可見性篩選選擇器和屬性篩選選擇器jQuery
- PostgreSQL 視窗函式 ( Window Functions ) 如何使用?SQL函式Function
- python 內建函式Built-in FunctionsPython函式UIFunction
- 修改IP地址選擇高質量IP波段選用技巧!
- 函式副作用函式
- L1正則化與嵌入式特徵選擇(稀疏性)特徵
- SVM 的核函式選擇和調參函式
- LLVM二三事LVM
- App安全二三事APP
- 翻譯二三事