DeepLearning筆記:Activation Function 激活函數
阿扣
:阿特,今天我們來了解一下深度學習中的激活函數(Activation functions)。
阿特
:又是函數……為什麼要了解這個哦……
阿扣
:在機器學習中,我們經常需要對輸出結果打上「是」或「否」標籤。比如對一張輸入的圖片,模型要判斷圖片裡面有沒有包含汪星人。
上一回我們提到的邏輯回歸,可以用來減少預測值和真實值之間的誤差。
阿特
:那要怎麼做呢?
阿扣
:我們來用符號描述一下問題:
- x:訓練數據中的 input
- y:訓練數據中已經做好標記的 output
- w:邏輯回歸的 weights
- b:邏輯回歸的 bias
- 模型的輸出:y? =σ(wx+b)
阿特
:老朋友 wx + b
阿扣
:好眼力。它就是一個線性模型。別忘了,我們想讓輸出只包含兩個值:是,否。一般我們會用 1 表示「是」,用 0 表示「否」。
阿特
:就是我給模型圖片 A,它說「0」;給圖片 B,它說「1」;……這樣?
阿扣
:沒錯~ 所以我們把結果的輸出全部轉換成或 0 或 1 的值。激活函數就是用來幫助我們實現這種轉化的。
上面我們用到的激活函數叫做 Sigmoid 函數。它幫我們做到了:
- 如果輸入值 z 是一個大的正數,函數的輸出值為 1;
- 如果輸入值 z 是一個大的負數,函數的輸出值為 0;
- 如果輸入值 z = 0,那麼輸出值是 0.5
阿特
:也就是說,不論我給什麼樣的整數,最後都會返回 0 或 1 的結果?
阿扣
:沒錯!這樣我們得到分類的結果,或 0 或 1。在深度學習中,這種把輸出轉化為我們想要的形式的函數,我們叫它「激活函數」:
激活函數的主要作用是提供網路的非線性建模能力。如果沒有激活函數,即便有再多的隱藏層,其整個網路跟單層神經網路也是等價的。加入激活函數之後,深度神經網路才具備了分層的非線性映射學習能力。
上圖就是其中的一種激活函數:sigmoid 函數。
阿特
:這麼說,激活函數不止一種?
阿扣
:對呀。下面我列了一些常用的激活函數,作為今天的補充資料吧。現在可能還看不到,先混個臉熟就好。
阿特
:好的先刷臉。
Sigmoid
Sigmoid 函數取值範圍為(0,1),將一個實數映射到(0,1)的區間,可以用來做二分類。
Sigmoid 在特徵相差比較複雜或是相差不是特別大時效果比較好。Sigmoid 的導數最大值為0.25。這意味著用來進行反向傳播時,返回網路的 error 將會在每一層收縮至少75%(梯度消失問題)。對於接近輸入層的層,如果有很多層, weights 更新會很小。
Tanh
也稱為雙切正切函數,取值範圍為[-1,1]。tanh 在特徵相差明顯時的效果會很好,在循環過程中會不斷擴大特徵效果。
ReLU
ReLU (rectified linear units) 是現在較常用的激活函數。如果輸入 < 0,ReLU 輸出 0;如果輸入 >0,輸出等於輸入值。
ReLU 計算量小(不涉及除法),一部分神經元的輸出為 0 造成了網路的稀疏性,並且減少了參數的相互依存關係,緩解了過擬合問題的發生。
ReLU 的缺點是,梯度較大時,ReLU 單元可能大都是 0,產生大量無效的計算(特徵屏蔽太多,導致模型無法學習到有效特徵)。
Softmax
Softmax 函數將 K 維的實數向量壓縮(映射)成另一個 K 維的實數向量,其中向量中的每個元素取值都介於(0,1)之間。常用於多分類問題。Softmax 把分數轉換為概率分布,讓正確的分類的概率接近 1,其他結果接近 0。相比 Sigmoid,它做了歸一化處理。
Ref
- Deep Learning Nanodegree | Udacity
- Neural Networks and Deep Learning | Coursera
- Neural networks and deep learning
- Andrej Karpathy&#x27;s CS231n course
- 深度學習筆記(三):激活函數和損失函數 - CSDN博客Neural Networks and Deep Learning | Coursera深度學習筆記(三):激活函數和損失函數 - CSDN博客
00 的 DeepLearning 系列
00:DeepLearning筆記:機器學習和深度學習的區別00:DeepLearning筆記:Neural Networks 神經網路00:DeepLearning筆記:Linear regression 線性回歸
推薦閱讀:
※PyTorch提取中間層特徵?
※CMU MLT vs UPenn CIS PhD?
※深度學習中為什麼普遍使用BGR而不用RGB?
※美國cs博士一般幾年能畢業?
※如何評價 2017 年 Jeff Dean 的關於使用 deep learning 做索引的論文?
TAG:深度学习DeepLearning | 数学 | 编程 |