修正線性單元(Rectified linear unit,ReLU)

修正線性單元(Rectified linear unit,ReLU)


Rectified linear unit

在神經網絡中,常用到的激活函數有sigmoid函數f(x)=11+exp(?x)、雙曲正切函數f(x)=tanh(x),今天要說的是另外一種activation function,rectified linear function,f(x)=max(0,x)

The rectifier is, as of 2015, the most popular activation function for deep neural networks

它的特點是被認為是more biologically plausible than widely used logistic sigmoid or hyperbolic tangent(雙曲正切 tanh),就是說更加符合神經元信號激勵原理。采用了rectified linear function作為activation function的unit被稱為rectified linear unit。它的一個平滑解析函數為f(x)=ln(1+ex),被稱之為softplus function,softplus的微分就是logistic function:f(x)=ex/(ex+1)=1/(1+e?x)。另外一種函數叫做softmax function或者normalized exponential是logistic function的一個泛化,如下:

σ(z)j=ezjKk=1ezk for j=1,...,K.

the softmax function常被用來various probabilistic multiclass classification methods 比如multinomial logistic regression,multiclass linear discriminant analysis, naive Bayes classifiers and artificial neural networks等。在Andrew Ng的機器學習課程中,softmax regression中就用到了softmax function。這里點一下說明。當然本文的重點還是在rectified linear function上。


有幾種變體:

noisy ReLUs

可將其包含Gaussian noise得到noisy ReLUs,f(x)=max(0,x+N(0,σ(x))),常用來在機器視覺任務里的restricted Boltzmann machines中。

leaky ReLUs

允許小的非零的gradient 當unit沒有被激活時。

f(x)={x0.01xif?x>0otherwise


Advantages

  1. Biological plausibility:單邊,相比于反對稱結構(antisymmetry)的tanh
  2. Sparse activation:基本上隨機初始化的網絡,只有有一半隱含層是處于激活狀態,其余都是輸出為0
  3. efficient gradient propagation:不像sigmoid那樣出現梯度消失的問題
  4. efficient computation:只需比較、乘加運算。
    使用rectifier 作為非線性激活函數使得深度網絡學習不需要pre-training,在大、復雜的數據上,相比于sigmoid函數等更加快速和更有效率。
    標準的sigmoid輸出不具備稀疏性,需要通過懲罰因子來訓練一堆接近于0的冗余數據,從而產生稀疏數據,比如L1,L2或者student-t作為懲罰因子,進行regularization。而ReLU為線性修正,是purelin的折線版,作用是如果計算輸出小于0,就讓它等于0,否則保持原來的值,這是一種簡單粗暴地強制某些數據為0的方法,然而經實踐證明,訓練后的網絡完全具備適度的稀疏性,而且訓練后的可視化效果和傳統pre-training的效果很相似。這說明了ReLU具備引導適度稀疏的能力。

從函數圖形上看,ReLU比sigmoid更接近生物學的激活模型。
實際測量數據:縱坐標軸是神經元的放電速率(Firing Rate);橫軸是毫秒(ms)

基于生物學的數學規則化激活模型(LIF)

(Softplus是ReLU的圓滑版,公式為:g(x)=log(1+e^x),從上面的結果看,效果比ReLU稍差)
ReLU在經歷預訓練和不經歷預訓練時的效果差不多,而其它激活函數在不用預訓練時效果就差多了。ReLU不預訓練和sigmoid預訓練的效果差不多,甚至還更好。
相比之下,ReLU的速度非常快,而且精確度更高。
因此ReLU在深度網絡中已逐漸取代sigmoid而成為主流。
ReLU導數(分段):
x <= 0時,導數為0
x > 0時,導數為1
早期多層神經網絡如果用sigmoid函數或者hyperbolic tangent作為激活函數,如果不進行pre-training的話,會因為gradient vanishing problem而無法收斂。
而預訓練的用處:規則化,防止過擬合;壓縮數據,去除冗余;強化特征,減小誤差;加快收斂速度。而采用ReLu則不需要進行pre-training。


實踐應用

在應用中,把除了最外層輸出用的sigmoid函數的其他所有用到sigmoid函數的地方全都改為ReLu函數,同時梯度也改為ReLu的,然后把學習速率調低。

轉載于:https://www.cnblogs.com/huty/p/8519179.html

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

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

相關文章

C語言綜合期末作業,內蒙古農業大學2010年期末c語言綜合作業.doc

內蒙古農業大學2010年期末c語言綜合作業綜合練習作業#includeint main(void){int choice,i;void shuai();void ge();void wang();void bing();for(i1;i<5;i){printf("[1]統計字符個數\n");printf("[2]判斷素數\n");printf("[3]求斐波那契數列\n&qu…

鏈表創建、逆置、刪除詳解

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 對鏈表的理解&#xff1a;http://www.nowamagic.net/librarys/veda/detail/2220 #inc…

python與shell的3種交互方式介紹

【目錄】 1.os.system(cmd) 2.os.popen(cmd) 3.利用subprocess模塊 4.subprocessor模塊進階 【概述】 考慮這樣一個問題&#xff0c;有hello.py腳本&#xff0c;輸出”hello, world!”&#xff1b;有testinput.py腳本&#xff0c;等待用戶輸入&#xff0c;然后打印用戶輸入的數…

C語言里if語句變量作為判斷條件,C語言教學(九-上)if else判斷語句

原標題&#xff1a;C語言教學(九-上)if else判斷語句今天講if else判斷語句&#xff0c;簡單理解就是進行條件判斷&#xff0c;如果條件達到則執行if 里或else里的語句。先來看if。if的寫法和for差不多,就是不用括號里的兩個分號&#xff0c;if (條件) { }&#xff0c;if加括號…

const修飾指針和引用的用法【轉貼】

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** const修飾的指針會額外的占內存嗎&#xff1f; 仍然是4&#xff0c;不會占額外的…

調整linux系統時區

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 好吧&#xff0c;使用tzselect又靠譜些&#xff0c;使用前把/etc/localtime刪除了。 執行上前那個告訴我文件重新了&#xff0c;所以就沒有搞了轉載于:https://www.cnblogs.com/hark0623/p/4807426.html

stm32c語言設計以及注釋,13個基于STM32的經典項目設計實例,全套資料~-嵌入式系統-與非網...

STM32單片機現已火遍大江南北&#xff0c;各種教程資料也是遍布各大網站論壇&#xff0c;可謂一抓一大把&#xff0c;但大部分都差不多。今天總結了幾篇電路城上關于STM32 的制作&#xff0c;不能說每篇都是經典&#xff0c;但都是在其他地方找不到的&#xff0c;很有學習參考意…

memcpy,strcpy,strncpy

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** memcpy c和c使用的內存拷貝函數.從源src所指的內存地址的起始位置開始拷貝n個字節…

二維數組聯通子數組和最大

題目要求&#xff1a; 返回一個二維整數數組中最大聯通子數組的和。輸入一個二維整形數組&#xff0c;數組里有正數也有負數。文件輸出。思路:和之前的動態規劃相識&#xff0c;把二維數組轉換為一維數組&#xff0c;先求每一個列的子數組和最大&#xff0c;最后在用正數就加&a…

c語言如何給變量加鎖,C語言互斥鎖-條件變量實現公共緩存區數據讀寫

#include char buffer[128];int has_data0;pthread_mutex_t mutex;pthread_cond_t cond;pthread_cond_t cond2;void read_buf(void){do{pthread_mutex_lock(&mutex);//鎖定互斥鎖if(has_data0){/*阻塞線程,等待另外一個線程發送信號&#xff0c;同時為公共數據區解鎖*/pthr…

view-activity跟控件在onkey事件上的傳遞關系

android 中Activity跟View對于鍵盤的監聽&#xff0c;主要有以下幾個方法 //按鍵按下 public boolean onKeyDown(int keyCode, KeyEvent event) {} //按鍵彈起 public boolean onKeyUp(int keyCode, KeyEvent event) {} //常按 public boolean onKeyLongPress(int keyCode, Ke…

PMP考試的過與不過

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 我在一年多時間里參加了三次PMP考試&#xff0c;前兩次都失敗&#xff0c;直到第三次才…

JPA一對多循環引用的解決

說是解決&#xff0c;其實不是很完美的解決的&#xff0c;寫出來只是想記錄一下這個問題或者看一下有沒有哪位仁兄會的&#xff0c;能否知道一二。 下面說說出現問題&#xff1a; 問題是這樣的&#xff0c;當我查詢一個一對多的實體的時候&#xff0c;工具直接就爆了&#xff0…

太原理工大學c語言課程設計報告,[太原理工大學C語言實驗報告.doc

[太原理工大學C語言實驗報告本科實驗報告課程名稱&#xff1a; 程序設計技術B實驗項目&#xff1a;實驗地點&#xff1a; 明向校區軟件學院機房專業班級&#xff1a; 學號&#xff1a;學生姓名&#xff1a;指導教師&#xff1a; 呼克佑2014年 12月 日實驗名稱 實驗一 C語言的運…

網頁常用動態效果--懸浮廣告

關鍵在于動態獲取滾動坐標值 測試滾動事件 $(window).scroll(function(){ console.log($(window).scrolltop()); }) 獲取三個高度&#xff1a;窗口高度&#xff0c;盒子高度以及滾動坐標值&#xff0c;將廣告盒子設置為絕對定位&#xff0c;當鼠標滾動時&#xff0c;其top值為滾…

打印英文年歷C語言函數,C語言打印年歷

voidshow_year(int year){inti,j,k,t,n;                           // 用來輔助計數int table[24][21] {0};                     // 年歷數組int month_day[12] {31,28,31,30,31,30,31,31,30,31,30,31}; // 每月上限天數i…

ubuntu14.04配置caffe

ubuntu 14.04 64bit 安裝 請自行Google安裝&#xff0c;并修改源。 cuda 7.5 安裝 cuda7.5下載&#xff0c;選擇ubuntu 14.04的deb包下載安裝一些可能的依賴 sudo apt-get install linux-headers-$(uname -r) build-essential 安裝cuda sudo dpkg –i cuda-repo-<distro>…

iOS開發API常用英語名詞

iOS開發API常用英語名詞 0. indicating 決定 1.in order to 以便 2.rectangle bounds 矩形尺寸 3.applied 應用 4.entirety 全部 5.technique 方法 6.truncating 截短 7.wrapping 換行 8.string 字符串 9.familiar style 簡體 10.The styled text 主題樣式 11.Constants 常量 …

Win10 IIS本地部署網站運行時圖片和樣式不正常?

后期會在博客首發更新&#xff1a;http://dnt.dkill.net 異常處理匯總-服 務 器 http://www.cnblogs.com/dunitian/p/4522983.html 啟用關閉win功能&#xff0c;開啟一下靜態內容 收工~

設置IIS會話過期時間

打開默認網站----雙擊ASP--展開會話屬性---更改超時時間-轉載于:https://www.cnblogs.com/genesis/p/4816128.html