1. 程式人生 > >幾種常用啟用函式

幾種常用啟用函式

1. sigmod函式

函式公式和圖表如下圖

sigmod函式公式 
sigmod函式圖

在sigmod函式中我們可以看到,其輸出是在(0,1)這個開區間內,這點很有意思,可以聯想到概率,但是嚴格意義上講,不要當成概率。sigmod函式曾經是比較流行的,它可以想象成一個神經元的放電率,在中間斜率比較大的地方是神經元的敏感區,在兩邊斜率很平緩的地方是神經元的抑制區。

當然,流行也是曾經流行,這說明函式本身是有一定的缺陷的。

1) 當輸入稍微遠離了座標原點,函式的梯度就變得很小了,幾乎為零。在神經網路反向傳播的過程中,我們都是通過微分的鏈式法則來計算各個權重w的微分的。當反向傳播經過了sigmod函式,這個鏈條上的微分就很小很小了,況且還可能經過很多個sigmod函式,最後會導致權重w對損失函式幾乎沒影響,這樣不利於權重的優化,這個問題叫做梯度飽和,也可以叫梯度彌散。

2) 函式輸出不是以0為中心的,這樣會使權重更新效率降低。對於這個缺陷,在斯坦福的課程裡面有詳細的解釋。

3) sigmod函式要進行指數運算,這個對於計算機來說是比較慢的。

2.tanh函式

tanh函式公式和曲線如下

tanh函式公式 
tanh函式圖

tanh是雙曲正切函式,tanh函式和sigmod函式的曲線是比較相近的,咱們來比較一下看看。首先相同的是,這兩個函式在輸入很大或是很小的時候,輸出都幾乎平滑,梯度很小,不利於權重更新;不同的是輸出區間,tanh的輸出區間是在(-1,1)之間,而且整個函式是以0為中心的,這個特點比sigmod的好。

一般二分類問題中,隱藏層用tanh函式,輸出層用sigmod函式。不過這些也都不是一成不變的,具體使用什麼啟用函式,還是要根據具體的問題來具體分析,還是要靠除錯的。

3.ReLU函式

ReLU函式公式和曲線如下

relu函式公式 
relu函式圖

ReLU(Rectified Linear Unit)函式是目前比較火的一個啟用函式,相比於sigmod函式和tanh函式,它有以下幾個優點:

1) 在輸入為正數的時候,不存在梯度飽和問題。

2) 計算速度要快很多。ReLU函式只有線性關係,不管是前向傳播還是反向傳播,都比sigmod和tanh要快很多。(sigmod和tanh要計算指數,計算速度會比較慢)

當然,缺點也是有的:

1) 當輸入是負數的時候,ReLU是完全不被啟用的,這就表明一旦輸入到了負數,ReLU就會死掉。這樣在前向傳播過程中,還不算什麼問題,有的區域是敏感的,有的是不敏感的。但是到了反向傳播過程中,輸入負數,梯度就會完全到0,這個和sigmod函式、tanh函式有一樣的問題。

2) 我們發現ReLU函式的輸出要麼是0,要麼是正數,這也就是說,ReLU函式也不是以0為中心的函式。

4.ELU函式

ELU函式公式和曲線如下圖

elu函式公式 
elu函式圖

ELU函式是針對ReLU函式的一個改進型,相比於ReLU函式,在輸入為負數的情況下,是有一定的輸出的,而且這部分輸出還具有一定的抗干擾能力。這樣可以消除ReLU死掉的問題,不過還是有梯度飽和和指數運算的問題。

5.PReLU函式

PReLU函式公式和曲線如下圖

prelu公式 
prelu函式圖

PReLU也是針對ReLU的一個改進型,在負數區域內,PReLU有一個很小的斜率,這樣也可以避免ReLU死掉的問題。相比於ELU,PReLU在負數區域內是線性運算,斜率雖然小,但是不會趨於0,這算是一定的優勢吧。

我們看PReLU的公式,裡面的引數α一般是取0~1之間的數,而且一般還是比較小的,如零點零幾。當α=0.01時,我們叫PReLU為Leaky ReLU,算是PReLU的一種特殊情況吧。

總體來看,這些啟用函式都有自己的優點和缺點,沒有一條說法表明哪些就是不行,哪些啟用函式就是好的,所有的好壞都要自己去實驗中得到。

相關推薦

常用啟用函式

1. sigmod函式函式公式和圖表如下圖 在sigmod函式中我們可以看到,其輸出是在(0,1)這個開區間內,這點很有意思,可以聯想到概率,但是嚴格意義上講,不要當成概率。sigmod函式曾經是比較流行的,它可以想象成一個神經元的放電率,在中間斜率比較大的地方是神經元的敏感

深度學習主流啟用函式總結

啟用函式的定義 加拿大蒙特利爾大學的Bengio教授在 ICML 2016 的文章[1]中給出了啟用函式的定義:啟用函式是對映 h:R→R,且幾乎處處可導。 啟用函式的性質 非線性: 當啟用函式是線性的時候,一個兩層的神經網路就可以逼近基本上所有的函數了。但是,如果啟

Day-4 簡談常用的庫函式

一 .為什麼會有庫函式呢? 1.我們每個人在學習程式語言時,在一個程式碼寫完後總是想迫不及待地將某些語句列印在螢幕上。此時我們總是會呼叫到printf()這個函式,它可以輕鬆地幫我們實現預期的功能; 2.在程式設計過程中我們會頻繁地做一些字串拷貝的工作,會呼叫到

python常用字串替換函式strip、replace、sub

#!/usr/bin/env python # coding:utf-8 import re ''' 功能:對常見的幾種字串處理函式進行測試使用學習 Author:沂水寒城 ''' def str_test(): str_list=['We are family!!!', '00 11 2

MATLAB中常用隨機數生成函式

1:rand函式的用法 命令:rand(N),rand(M,N)等 對於rand(N),通過help rand得到的解釋是:R = rand(N) returns an N-by-N matrix containing pseudorandom values

java 中常用數據結構

初學 ble log app 使用 blog list 好的 sort Java中有幾種常用的數據結構,主要分為Collection和map兩個主要接口(接口只提供方法,並不提供實現),而程序中最終使用的數據結構是繼承自這些接口的數據結構類。 一、幾個常用類的區別 1.

常用的空格

idt 而且 根據 筆記本 p s 時也 引用 其中 等等 今天上午把在家寫好的代碼下載到另一個筆記本上,一調試發現,出現的結果和之前不一樣。我用代碼寫好的等腰三角形,在家調試完成沒有任何問 題。在這臺筆記本上顯示成了直角三角形。仔細檢查了下,代碼並沒有發現什麽問

C#中常用的集合的用法

col div tex -c 組成 相同 列表 對象 count 集合:將一推數據類型相同的數據放入到一個容器內,該容器就是數組:內存中開辟的一連串空間。 非泛型集合 ArrayList集合: ArrayList是基於數組實現的,是一個動態數組,其容量能自動 增

SSH免登陸ESXI讓操作更便捷安全(常用工具)

esxi vmware ssh工具 免登陸 授權訪問通常在企業環境中,管理員很少去機房在物理機面前進行操作,大部分管理員喜歡遠程管理主機,這樣既方便又高效。在windows上我們使用遠程桌面,在Linux上則使用SSH來連接。ESXi就是一個以Linux為核心改寫的操作系統,因此ESXi中也保留了SSH

JAVA獲取文件的常用方式

ada col epo term 打印 core book port nbsp 1、user.dir System.out.println(System.getProperty("user.dir")); 此方獲取的是運行的路 比如 1、 2、如果在eclipse上運

Python中time模塊和datetime模塊的常用操作以及常用時間格式間的轉換

pyrhon time datatime 幾種常用時間格式的轉換 最常見以及常用的幾種時間格式 1、時間戳(timestamp),時間戳表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。 2、時間元組(struct_time),共有九個元素組。 3、格式化時間(fo

總結常用的安全算法

多人 很難 .html 如果 tab ble www. 解密 是我 摘要算法 對稱加密算法 非對稱加密算法 數字簽名 數字證書 web安全系列目錄 總結幾種常見web攻擊手段極其防禦方式 總結幾種常見的安全算法 數字摘要 實現 將任意長度的明文通過單向hash

關於Java集合類庫中的常用隊列

rac syn text 刪除 style asdasd 新元素 其他 arraylist Java中幾種常用的隊列 阻塞隊列與普通隊列的區別在於,當隊列是空的時,從隊列中獲取元素的操作將會被阻塞,或者當隊列是滿時,往隊列裏添加元素的操作會被阻塞。試圖從空的阻塞隊列中獲取元

java-常用數據庫的JDBCURL

ron log 矽谷 sqlserver com src 課件 ges cal 以mysql的jdbcUrl為例: 1、對於 Oracle 數據庫連接,采用如下形式: jdbc:oracle:thin:@localhost:1521:sid 2、對於 SQLSer

垃圾收集與常用的垃圾收集算法

嘗試 產生 統一 規則 存在 允許 成本 garbage 找到 前言:   首先思考垃圾收集(Garbage Collection,GC)需要完成的三件事情   1)哪些內存需要回收?   2)什麽時候回收?   3)如何回收?   再上一個博客中提到了Java內存運行時

常用的過濾器

font param blog 瀏覽器 span 過濾器 web 禁用 png 1.禁用瀏覽器緩存的過濾器: 2.字符編碼過濾器:防止亂碼 在web.xml中配置<context-param></context-param> 3.檢查

14 圖的基礎知識-常用的存儲結構

尾結點 壓縮 了解 link 同時 log 頂點 對稱矩陣 其中 時間有點緊 沒時間接著更了。。考完研回頭再寫吧 一、鄰接矩陣1、描述:用一維數組存儲圖頂點的信息用二維數組存儲圖邊的信息2、特點:①無向圖的鄰接矩陣: 是唯一的對稱矩陣,可以壓縮存儲(僅存儲上/下三

Spring下配置常用連接池

擴展 ade 不能 bcp thread helper facade 後者 lis 1、連接池概述  數據庫連接是一種關鍵的有限的昂貴的資源,這一點在多用戶的網頁應用程序中體現得尤為突出。對數據庫連接的管理能顯著影響到整個應用程序的伸縮性和健壯性,影響到程序的性能指標。數據

常用的ajax 跨域請求

nbsp 瀏覽器 style access adding score with math 端口號 前 言 首先,我們要明白,什麽是跨域,為什麽要跨域。 由於JS中存在同源策略。當請求不同協議名不同端口號下面的文件時,將會違背同源策略,無法請求成功!需要進行跨域

JAVA中常用的RPC框架介紹

github 不同的 target int https love num 分布 有一個 RPC是遠程過程調用的簡稱,廣泛應用在大規模分布式應用中,作用是有助於系統的垂直拆分,使系統更易拓展。Java中的RPC框架比較多,各有特色,廣泛使用的有RMI、Hessian、Du