【吳恩達深度學習】【神經網絡和深度學習】 第三章 第六節 激活函數

一、激活函數定義

我們在研究一個神經元的時候(這裏指生物學中的神經元),我們知道其有軸突和樹突,可以傳導衝動,同時我們還知道,衝動在傳導的時候有一個閾值,低於某個值的衝動無法被傳導或者傳道的時候減弱了,所以其實神經衝動的傳導是一個非線性的過程,我們在這裏引入激活函數,也就是爲了模擬這個非線性的過程,使得我們最終得到的神經網絡是一個非線性的網絡。

我們常見的relu函數和這個過程基本一致,而別的sigmoid或者tanh與之有些區別,但是功能本質相同。

還記得在前文提到過,神經元的內部計算時是所有的輸入先經過了一個加權的求和,然後經過一個激活函數,最終得到輸出,這節課主要討論的也就是這個激活函數。

講了這麼多,卻還是沒講清楚激活函數究竟是一個什麼東西。可是我查了許多資料,最終也沒得到一個有關激活函數意義的定義,都是在說激活函數是什麼,有什麼用。但我在前面的blog中也提到過,所有的深度學習問題的學習中,經常會出現一些不知道具體的實際意義的東西,我們只要能都知道並且運用就行了。

二、四種激活函數

1、sigmoid函數

sigmoid函數也叫Logistic函數,用於隱層神經元輸出,取值範圍爲(0,1),它可以將一個實數映射到(0,1)的區間,可以用來做二分類。在特徵相差比較複雜或是相差不是特別大時效果比較好。Sigmoid作爲激活函數有以下優缺點:

優點:平滑、易於求導。

缺點:激活函數計算量大,反向傳播求誤差梯度時,求導涉及除法;反向傳播時,很容易就會出現梯度消失的情況,從而無法完成深層網絡的訓練。

Sigmoid函數由下列公式定義

其對x的導數可以用自身表示:

Sigmoid函數的圖形如S曲線Sigmoid 曲線

2、tanh函數

tanh是雙曲函數中的一個,tanh(x)爲雙曲正切。在數學中,雙曲正切“tanh”是由基本雙曲函數雙曲正弦和雙曲餘弦推導而來。

y=tanh x是一個奇函數,其函數圖像爲過原點並且穿越Ⅰ、Ⅲ象限的嚴格單調遞增曲線,其圖像被限制在兩水平漸近線y=1和y=-1之間。

640?wx_fmt=png

其實tanh(x)=2*sigmoid(2*x)-1

雙曲正切函數的導數公式:

3、ReLU函數

y=max(0,x)

這個函數比上面的兩個看起來都要簡單,但據吳恩達所說,神經網絡世界處理使用的時候使用最多的還是這個看似簡單的函數。

這個函數是一個典型的非線性函數。

4、帶泄露的ReLU

y=max(0.01x,x)

這裏取了一個極小的係數0.01,這個可以讓上面那個函數在小於零的部分有一個接近於0但不是零的斜率,這樣可以讓他的表現更好,但是不使用這種方法一般也沒什麼影響

 

三、激活函數的選擇

一般來說我們傾向於使用relu函數,原因是在處理深度下降的時候,前兩個函數在數據特別大的時候導數較小,下降的較慢,學習時間變長,在實際使用的時候表現不是很好。而ReLU函數的導數始終是0或者1,這樣我們即使數據特別的大也可以有一個很好的學習效率,不會因爲數據的大小而受到影響。

所以一般來說所有的神經網絡的隱藏層中,我們一般使用ReLU函數。

對於輸出層來說,一般也是使用ReLU函數,不過對於一些特殊的情況,也可能採取別的激活函數。

對於logitic迴歸問題,因爲我們最終結果是一個0或者1,所有對輸出採用sigmoid激活函數,

而對於一些比如房價等問題,最終輸出的結果就是我們所需要的結果,所以也可以採用y=x恆等函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章