1. 程式人生 > >tf.nn.Relu相關知識

tf.nn.Relu相關知識

ReLu=max(0,x)
論文參考:Deep Sparse Rectifier Neural Networks (很有趣的一篇paper)
起源:傳統啟用函式、腦神經元啟用頻率研究、稀疏啟用性
傳統Sigmoid系啟用函式

傳統神經網路中最常用的兩個啟用函式,Sigmoid系(Logistic-Sigmoid、Tanh-Sigmoid)被視為神經網路的核心所在。
從數學上來看,非線性的Sigmoid函式對中央區的訊號增益較大,對兩側區的訊號增益小,在訊號的特徵空間對映上,有很好的效果。
從神經科學上來看,中央區酷似神經元的興奮態,兩側區酷似神經元的抑制態,因而在神經網路學習方面,可以將重點特徵推向中央區,將非重點特徵推向兩側區。
無論是哪種解釋,看起來都比早期的線性啟用函式(y=x),階躍啟用函式(-1/1,0/1)高明瞭不少。
近似生物神經啟用函式:Softplus&ReLu
2001年,神經科學家Dayan、Abott從生物學角度,模擬出了腦神經元接受訊號更精確的啟用模型,該模型如左圖所示:

這個模型對比Sigmoid系主要變化有三點:①單側抑制 ②相對寬闊的興奮邊界 ③稀疏啟用性(重點,可以看到紅框裡前端狀態完全沒有啟用)
同年,Charles Dugas等人在做正數迴歸預測論文中偶然使用了Softplus函式,Softplus函式是Logistic-Sigmoid函式原函式。

按照論文的說法,一開始想要使用一個指數函式(天然正數)作為啟用函式來回歸,但是到後期梯度實在太大,難以訓練,於是加了一個log來減緩上升趨勢。
加了1是為了保證非負性。同年,Charles Dugas等人在NIPS會議論文中又調侃了一句,Softplus可以看作是強制非負校正函式max(0,x)平滑版本。
偶然的是,同是2001年,ML領域的Softplus/Rectifier啟用函式與神經科學領域的提出腦神經元啟用頻率函式有神似的地方,這促成了新的啟用函式的研究。
生物神經的稀疏啟用性
在神經科學方面,除了新的啟用頻率函式之外,神經科學家還發現了神經元的稀疏啟用性。
還是2001年,Attwell等人基於大腦能量消耗的觀察學習上,推測神經元編碼工作方式具有稀疏性和分佈性。
2003年Lennie等人估測大腦同時被啟用的神經元只有1~4%,進一步表明神經元工作的稀疏性。
從訊號方面來看,即神經元同時只對輸入訊號的少部分選擇性響應,大量訊號被刻意的遮蔽了,這樣可以提高學習的精度,更好更快地提取稀疏特徵。
從這個角度來看,在經驗規則的初始化W之後,傳統的Sigmoid系函式同時近乎有一半的神經元被啟用,這不符合神經科學的研究,而且會給深度網路訓練帶來巨大問題。
Softplus照顧到了新模型的前兩點,卻沒有稀疏啟用性。因而,校正函式max(0,x)成了近似符合該模型的最大贏家。

Part I:關於稀疏性的觀點
Machine Learning中的顛覆性研究是稀疏特徵,基於資料的稀疏特徵研究上,派生了Deep Learning這一分支。
稀疏性概念最早由Olshausen、Field在1997年對訊號資料稀疏編碼的研究中引入,並最早在卷積神經網路中得以大施拳腳。
近年來,稀疏性研究不僅在計算神經科學、機器學習領域活躍,甚至訊號處理、統計學也在借鑑。
總結起來稀疏性大概有以下三方面的貢獻:
1.1 資訊解離
當前,深度學習一個明確的目標是從資料變數中解離出關鍵因子。原始資料(以自然資料為主)中通常纏繞著高度密集的特徵。原因
是這些特徵向量是相互關聯的,一個小小的關鍵因子可能牽擾著一堆特徵,有點像蝴蝶效應,牽一髮而動全身。
基於數學原理的傳統機器學習手段在解離這些關聯特徵方面具有致命弱點。
然而,如果能夠解開特徵間纏繞的複雜關係,轉換為稀疏特徵,那麼特徵就有了魯棒性(去掉了無關的噪聲)。
1.2 線性可分性
稀疏特徵有更大可能線性可分,或者對非線性對映機制有更小的依賴。因為稀疏特徵處於高維的特徵空間上(被自動映射了)
從流形學習觀點來看(參見降噪自動編碼器),稀疏特徵被移到了一個較為純淨的低維流形面上。
線性可分性亦可參照天然稀疏的文字型資料,即便沒有隱層結構,仍然可以被分離的很好。
1.3 稠密分佈但是稀疏
稠密纏繞分佈著的特徵是資訊最富集的特徵,從潛在性角度,往往比區域性少數點攜帶的特徵成倍的有效。
而稀疏特徵,正是從稠密纏繞區解離出來的,潛在價值巨大。
1.4 稀疏性啟用函式的貢獻的作用:
不同的輸入可能包含著大小不同關鍵特徵,使用大小可變的資料結構去做容器,則更加靈活。
假如神經元啟用具有稀疏性,那麼不同啟用路徑上:不同數量(選擇性不啟用)、不同功能(分散式啟用),
兩種可優化的結構生成的啟用路徑,可以更好地從有效的資料的維度上,學習到相對稀疏的特徵,起到自動化解離效果。

Part II:基於稀疏性的校正啟用函式
2.1 非飽和線性端
撇開稀疏啟用不談,校正啟用函式max(0,x),與Softplus函式在興奮端的差異較大(線性和非線性)。
幾十年的機器學習發展中,我們形成了這樣一個概念:非線性啟用函式要比線性啟用函式更加先進。
尤其是在佈滿Sigmoid函式的BP神經網路,佈滿徑向基函式的SVM神經網路中,往往有這樣的幻覺,非線性函式對非線性網路貢獻巨大。
該幻覺在SVM中更加嚴重。核函式的形式並非完全是SVM能夠處理非線性資料的主力功臣(支援向量充當著隱層角色)。
那麼在深度網路中,對非線性的依賴程度就可以縮一縮。另外,在上一部分提到,稀疏特徵並不需要網路具有很強的處理線性不可分機制。
綜合以上兩點,在深度學習模型中,使用簡單、速度快的線性啟用函式可能更為合適。

如圖,一旦神經元與神經元之間改為線性啟用,網路的非線性部分僅僅來自於神經元部分選擇性啟用。
2.2 Vanishing Gradient Problem
更傾向於使用線性神經啟用函式的另外一個原因是,減輕梯度法訓練深度網路時的Vanishing Gradient Problem。
看過BP推導的人都知道,誤差從輸出層反向傳播算梯度時,在各層都要乘當前層的輸入神經元值,啟用函式的一階導數。
即Grad=Error⋅Sigmoid′(x)⋅x。使用雙端飽和(即值域被限制)Sigmoid系函式會有兩個問題:
①Sigmoid‘(x)∈(0,1) 導數縮放
②x∈(0,1)或x∈(-1,1) 飽和值縮放
這樣,經過每一層時,Error都是成倍的衰減,一旦進行遞推式的多層的反向傳播,梯度就會不停的衰減,消失,使得網路學習變慢。
而校正啟用函式的梯度是1,且只有一端飽和,梯度很好的在反向傳播中流動,訓練速度得到了很大的提高。
Softplus函式則稍微慢點,Softplus‘(x)=Sigmoid(x)∈(0,1) ,但是也是單端飽和,因而速度仍然會比Sigmoid系函式快。

Part III 潛在問題
強制引入稀疏零的合理性?
誠然,稀疏性有很多優勢。但是,過分的強制稀疏處理,會減少模型的有效容量。即特徵遮蔽太多,導致模型無法學習到有效特徵。
論文中對稀疏性的引入度做了實驗,理想稀疏性(強制置0)比率是70%~85%。超過85%,網路就容量就成了問題,導致錯誤率極高。

對比大腦工作的95%稀疏性來看,現有的計算神經網路和生物神經網路還是有很大差距的。
慶幸的是,ReLu只有負值才會被稀疏掉,即引入的稀疏性是可以訓練調節的,是動態變化的。
只要進行梯度訓練,網路可以向誤差減少的方向,自動調控稀疏比率,保證啟用鏈上存在著合理數量的非零值。

Part IV ReLu的貢獻
4.1 縮小做和不做非監督預訓練的代溝
ReLu的使用,使得網路可以自行引入稀疏性。這一做法,等效於無監督學習的預訓練。

當然,效果肯定沒預訓練好。論文中給出的資料顯示,沒做預訓練情況下,ReLu啟用網路遙遙領先其它啟用函式。
甚至出現了比普通啟用函式預訓練後更好的奇葩情況。當然,在預訓練後,ReLu仍然有提升空間。
從這一層面來說,ReLu縮小了非監督學習和監督學習之間的代溝。當然,還有更快的訓練速度。
4.2 更快的特徵學習
在MNIST+LeNet4中,ReLu+Tanh的組合在epoch 50左右就能把驗證集錯誤率降到1.05%
但是,全Tanh在epoch 150時,還是1.37%,這個結果ReLu+Tanh在epoch 17時就能達到了。

該圖來自AlexNet的論文對ReLu和普通Sigmoid系函式做的對比測試,可以看到,ReLu的使用,使得學習週期
大大縮短。綜合速率和效率,DL中大部分啟用函式應該選擇ReLu。

Part V Theano中ReLu的實現
ReLu可以直接用T.maximum(0,x)實現,用T.max(0,x)不能求導.

Part VI ReLu訓練技巧
見Cifar-10訓練技巧

相關推薦

tf.nn.Relu相關知識

ReLu=max(0,x) 論文參考:Deep Sparse Rectifier Neural Networks (很有趣的一篇paper) 起源:傳統啟用函式、腦神經元啟用頻率研究、稀疏啟用性 傳統Sigmoid系啟用函式 傳統神經網路中最常用的兩

Tensorflow學習筆記之tf.nn.relu

Tensorflow學習筆記之tf.nn.relu 關於Tensorflow的學習筆記大部分為其他部落格或者書籍轉載,只為督促自己學習。 線性整流函式(Rectified Linear Unit,ReLU),又稱修正線性單元。其定義如下圖,在橫座標的右側,ReLU函式為線性函式。在橫座標

TensorFlow函式之tf.nn.relu()

tf.nn.relu()函式是將大於0的數保持不變,小於0的數置為0,函式如圖1所示。 ReLU函式是常用的神經網路啟用函式之一。  圖1 ReLU函式影象   下邊為ReLU例子: import tenso

TF-IDF及相關知識(餘弦相似性)

自然語言的處理是一個神奇的領域,它涉及到資料探勘、文字處理、資訊檢索等很多計算機前沿領域,由於複習相關知識,所以這裡對該方向的部分知識做一個簡單的介紹和記錄。 該文主要記錄的是一個很簡單卻很經典有效的演算法——TF-IDF。從它的概念到運算可能花不了10分鐘就能瞭解,並且用

tf.nn.conv2d tf.nn.bias_add tf.nn.max_pool tf.nn.bias_add tf.nn.relu 實現一個CNN

溫馨提示 我首先會對知識點進行講解,後面的程式碼會用到這裡所講的所有知識點,在看的時候,如果不懂也沒事,看了後面程式碼就會明白 tf.nn.conv2d tf.nn.conv2d( input, filter, strides, padding,

tf.nn.relutf.nn.relu_layer

1. tf.nn.relu啟用函式不必多數: 傳入tf.nn.relu()的引數,是:tensor和weights卷積後+biases 2. tf.nn.relu_layer(): def relu_layer(x, weights, biases, name=No

tensorflow相關函式___tf.layers.dense(), tf.nn.softmax_cross_entropy_with_logits_v2

dense :全連線層  相當於新增一個層 函式如下: tf.layers.dense(     inputs,     units,     activa

http協議的相關知識

per art title uri 方法 能夠 head 版本號 網絡資源 因為如今的工作設計的Web開發,因此了解了一下Http協議。在閱讀了這篇文章HTTP協議具體解釋(真的非常經典)後,總結了相關經常使用知識並列在此處以方便以後的查詢。 HTTP協議的主要

JavaScript 相關知識

start gif coo 獲取時間 對象 繼續 decimal auto input 一、數組 var a = [1,2,3,4]; console.log(a.length); // 4 a.push(5); cons

利用結構類型的相關知識計算兩點之間的距離

oat scanf distance 原型 turn 之間 函數 sqrt 聲明 #include<stdio.h>#include<stdlib.h>#include<math.h> struct point{ /*點的結構類型名*/

過濾器的相關知識

客戶端 頁面 全局 根據 完全 什麽是 順序 自動登錄 響應 【Cookie技術】 * 利用Cookie記住用戶的用戶名和密碼. 【Filter:過濾器的概述】 什麽是過濾器Filter:      可以過濾從客戶端向服務器發送的請求. 過濾器的使用:     *

跨域問題相關知識詳解(原生js和jquery兩種方法實現jsonp跨域)

syn con 加載 developer 兩種方法 ray exe 編寫 分組 1、同源策略 同源策略(Same origin policy),它是由Netscape提出的一個著名的安全策略。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽

Oracle 相關知識

用戶 acl blank navi 下載地址 create target -1 user 一.Navicat 連接Oracle 報錯: 解決辦法: 1.先下載oracle客戶端,win64_11gR2_client.zip,下載地址:http://www.oracl

HTML相關知識

正常 隱藏元素 加粗 密碼 bmi 十六進制 for 1.5 hid 1 Day01HTML HTML5聲明:<!doctype html> <html> 1.1 HTML基本結構: <head> <title>題目&l

accp8.0轉換教材第9章JQuery相關知識理解與練習

ntb 驗證 單詞 手機號碼 sdn load .com read 要求 自定義動畫 一.單詞部分: ①animate動畫②remove移除③validity有效性 ④required匹配⑤pattern模式 二.預習部分 1.簡述JavaScript事件和jquery事件

sqlite 數據庫 相關知識

嵌入式 nts column 分隔 val any 需求 mark 結合 一基本簡單介紹 SQLite 是一個自持的(self-contained)、無server的、零配置的、事務型的關系型數據庫引擎。由於他非常小,所以也能夠作為嵌入式數據庫內建在你的應

HTTPS相關知識

ets 實體 secure tran article 定義 ace apache stc 概念 HTTP(HyperText Transfer Protocol超文本傳輸協議) 以明文方式發送內容,不提供任何方式的數據加密,是一個客戶端和服務器端請求和應答的標準(TCP),

mysql相關知識

cts 數據 usr arc lba vim structure 文件 mysql遠程連接 設置mysql密碼SET PASSWORD = PASSWORD([email protected]/* */); 設置mysql遠程連接GRANT ALL PRIVIL

數據庫的死鎖相關知識

申請 業務 strong 自己 發的 一個表 tro 空間 死鎖 死鎖的定義 死鎖是指兩個或兩個以上的進程在執行的過程中,由於競態資源或由於彼此通信而造成的一種阻塞現象。若無外力作用,它們都將無法推進下去,此時稱系統處於死鎖狀態,這些在互相等待的進程稱為死鎖進程。

HTTP協議知多少-關於http1.x、http2、SPDY的相關知識

關閉 pre text 速度 到來 機會 網站管理系統 image 成功 作為網站開發的基礎協議,我們知道瀏覽器上都有輸出http這四個字母,這意味著什麽呢? 這就是最基礎的HTTP協議。 逐浪君今天為各位大人準備了一些HTTP技術的知識,來和大家分享。 以下圖