深度學習中的四種激活函數

2021-02-08 Python中文社區

這篇文章用來整理一下入門深度學習過程中接觸到的四種激活函數,下面會從公式、代碼以及圖像三個方面介紹這幾種激活函數,首先來明確一下是哪四種:
激活函數的作用下面圖像A是一個線性可分問題,也就是說對於兩類點(藍點和綠點),你通過一條直線就可以實現完全分類。當然圖像A是最理想、也是最簡單的一種二分類問題,但是現實中往往存在一些非常複雜的線性不可分問題,比如圖像B,你是找不到任何一條直線可以將圖像B中藍點和綠點完全分開的,你必須圈出一個封閉曲線。而激活函數就是幫助"繪製"這個封閉曲線的非線性函數,有了激活函數的幫助,很多算法的處理能力會得到加強,也可以處理線性不可分問題。Sigmoid函數Sigmoid函數曾在介紹邏輯回歸時提起過,它的數學表達式為:其中 e 為納皮爾常數,其值為2.7182... 它的圖像如下:

對於梯度下降法而言,信息的更新很大程度上都取決於梯度,而Sigmoid函數一個很明顯的缺點就是當函數值特別靠近0或1這兩端時,因為它的曲線已經近乎平緩,所以此時的梯度幾乎為0,這樣非常不利於權重的更新,從而就會導致模型不收斂。
import numpy as np
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

Tanh函數Tanh函數和Sigmoid函數非常相近,這點從圖像上可以很好的體現:

這兩個函數相同的是,當輸入的 x 值很大或者很小時,對應函數輸出的 y 值近乎相等,同樣的缺點也是梯度特別小,非常不利於權重的更新;不同的是Tanh函數的值域為(-1,1),並且當 x = 0 時,輸出的函數值為0。
import numpy as np
def tanh(x):
    return (exp(x)-exp(-x))/(exp(x)+exp(-x))

ReLu函數ReLu是線性整流函數,又稱為修正性線性單元,它的函數的數學表達式為

圖像很容易理解,若輸入的 x 值小於0,則輸出為也為0;若輸入的 x 值大於0,則直接輸出 x 值,需要注意的是ReLu函數在x = 0 處不連續(不可導),但同樣也可以作為激活函數。與Sigmoid函數和Tanh函數相比,ReLu函數一個很明顯的優點就是在應用梯度下降法是收斂較快,當輸入值為整數時,不會出現梯度飽和的問題,因為大於0的部分是一個線性關係,這個優點讓ReLu成為目前應用較廣的激活函數。
import numpy as np
def relu(x):
    return np.maximum(0,x)

SoftMax函數分類問題可以分為二分類問題和多分類問題,Sigmoid函數比較適合二分類問題,而SoftMax函數更加適合多分類問題。其中
import numpy as np
def softmax(x):
    D = np.max(x)
    exp_x = np.exp(x-D)
    return exp_x / np.sum(exp_x)



點擊下方閱讀原文加入社區會員

相關焦點

  • 深入理解深度學習中的激活函數
    導讀數字邏輯電路中的門電路可以讓滿足不同條件的輸入信號輸出開(1)或關(0)輸出。這體現在機器學習中感知機的性質。但我們也知道感知機有個局限性,即無法單層表示非線性變化,而神經網絡往往通過激活函數用來表示非線性變化。即激活函數的作用就是引入非線性。
  • 一文總結深度學習中的激活函數
    本文介紹了多種激活函數,並且對比了激活函數的優劣。1. 什麼是激活函數?生物神經網絡啟發了人工神經網絡的發展。但是,ANN 並非大腦運作的近似表示。不過在我們了解為什麼在人工神經網絡中使用激活函數之前,先了解生物神經網絡與激活函數的相關性是很有用處的。
  • 異軍突起的激活函數:ReLU | 小白深度學習入門
    直觀理解深度學習基本概念    2. 白話詳解ROC和AUC    3. 什麼是交叉熵    4. 神經網絡的構成、訓練和算法    5. 深度學習的興起:從NN到DNN ReLU的興起從NN進入到DNN之後,直接的影響是:ReLU的大量應用。
  • 深度學習理論分享之——激活函數與Dropout機制
    我們在介紹機器學習中的分類模型時,曾說道,分類模型最終的分類結果往往是根據一定的概率來下結論的。換句話說,如果被認定是類別A的概率超過70%(此處假設是70%)的話,那麼結果為類別A的可信度就很高,我們就可以認為類別A是一個正確的分類結果。因此,不論是在機器學習領域還是更為細分的深度學習領域,其實都是有概率的市場存在。
  • 人工智慧-深度學習-激活函數ReLU,Sigmoid,TanH,ELU,MaxOut
    激活函數:在多層神經網絡中,上層節點的輸出和下層節點的輸入之間具有一個函數關係,這個函數稱為激活函數(又稱激勵函數)激活函數的本質:激活函數是來向神經網絡中引入非線性因素的,通過激活函數,神經網絡就可以擬合各種曲線。
  • 深度學習基礎篇:如何選擇正確的激活函數?
    而在深度學習中,我們也需要一種類似的機制來分類傳入的信息。不是所有信息都是有用的,一些只是噪音。激活函數可以幫助神經網絡做這種隔離。它激活有用的信息,並抑制無關的數據點。激活函數如此重要,那麼都有哪些比較熱門呢?它們是如何工作的?又適合解決什麼問題?本文將為你一一解答。以下是本文目錄。
  • 深度學習優化算法入門:三、梯度消失和激活函數
    這是優化系列的第三篇,我們想要通過這一系列文章全面回顧深度學習中的優化技術。到目前為止,我們已經討論了:用於對抗局部極小值、鞍點的mini batch梯度下降(點擊閱讀)。動量、RMSProp、Adam(點擊閱讀)等方法在原始梯度下降的基礎上加強了哪些方面,以應對病態曲率問題。
  • 【機器學習基礎】常用激活函數(激勵函數)理解與總結
    學習神經網絡的時候我們總是聽到激活函數這個詞,而且很多資料都會提到常用的激活函數,比如Sigmoid函數、tanh函數、Relu函數。那麼我們就來詳細了解下激活函數方方面面的知識。1. 什麼是激活函數?2. 激活函數的用途(為什麼需要激活函數)?3. 有哪些激活函數,都有什麼性質和特點?4. 應用中如何選擇合適的激活函數?如果你對以上幾個問題不是很清楚,下面的內容對你是有價值的。
  • 神經網絡中的激活函數
    什麼是神經網絡激活函數?激活函數有助於決定我們是否需要激活神經元。如果我們需要發射一個神經元那麼信號的強度是多少。激活函數是神經元通過神經網絡處理和傳遞信息的機制為什麼在神經網絡中需要一個激活函數?在神經網絡中,z是輸入節點與節點權值加上偏差的乘積。
  • 深度學習領域最常用的10個激活函數,一文詳解數學原理及優缺點
    激活函數(Activation Function)是一種添加到人工神經網絡中的函數,旨在幫助網絡學習數據中的複雜模式。類似於人類大腦中基於神經元的模型,激活函數最終決定了要發射給下一個神經元的內容。在人工神經網絡中,一個節點的激活函數定義了該節點在給定的輸入或輸入集合下的輸出。標準的計算機晶片電路可以看作是根據輸入得到開(1)或關(0)輸出的數字電路激活函數。
  • 常用激活函數(激勵函數)理解與總結
    ,而且很多資料都會提到常用的激活函數,比如Sigmoid函數、tanh函數、Relu函數。那麼我們就來詳細了解下激活函數方方面面的知識。1. 什麼是激活函數?2. 激活函數的用途(為什麼需要激活函數)?3. 有哪些激活函數,都有什麼性質和特點?4. 應用中如何選擇合適的激活函數?如果你對以上幾個問題不是很清楚,下面的內容對你是有價值的。
  • 如何選擇神經網絡激活函數:有效的改善模型學習模式的能力
    數據中的學習模式通過適當的激活函數進行修改,並作為神經元的輸出呈現,如下圖所示:什麼是激活函數?在神經網絡模型中怎麼使用?激活函數是神經網絡中用於計算輸入和偏差的加權和的函數,用於確定神經元是否可以釋放。 它通常通過梯度下降法的某種梯度處理來操縱數據,然後產生神經網絡的輸出,該輸出包含數據中的參數。 有時這些激活函數通常稱為傳遞函數。
  • 深度學習中常見的損失函數
    在深度學習分類任務中,我們經常會使用到損失函數,今天我們就來總結一下深度學習中常見的損失函數。而邏輯回歸的推導中,它假設樣本服從於伯努利分布(0-1分布),然後求得滿足該分布的似然函數,接著求取對數等(Log損失函數中採用log就是因為求解過中使用了似然函數,為了求解方便而添加log,因為添加log並不改變其單調性)。但邏輯回歸併沒有極大化似然函數,而是轉變為最小化負的似然函數,因此有了上式。已知邏輯函數(sigmoid函數)為:
  • 吳恩達深度學習(20)-激活函數的導數和神經網絡的梯度下降
    激活函數的導數(Derivatives of activation functions)在神經網絡中使用反向傳播的時候,你真的需要計算激活函數的斜率或者導數。針對以下四種激活,求其導數如下:1)sigmoid activation function其具體的求導如下(如果你學過微積分,那麼這個求導對於你來說其實並不難): 公式1:註:當z = 10或z=-10 d/dz g(z)≈0當z= 0 d/dz g(z)=g(z)(1-g(z))=1/4
  • 深度學習激活函數完全指南:在數據科學的諸多曲線上進行現代之旅
    原文:Towards Data Sciencedeephub翻譯組:zhangzc自2012年以來,神經網絡研逐漸成為了人工智慧研究的主流,深度模型迅速取代了之前的各種benchmarks。在這些創新中,激活函數對神經網絡的性能和穩定性起著至關重要的作用。
  • 深度學習中的Normalization模型
    BN是深度學習進展中裡程碑式的工作之一,無論是希望深入了解深度學習,還是在實踐中解決實際問題,BN及一系列改進Normalization工作都是繞不開的重要環節。一.從Mini-Batch SGD說起我們先從Mini-Batch SGD的優化過程講起,因為這是下一步理解Batch Normalization中Batch所代表具體含義的知識基礎。
  • 人工智慧系列【3】- 變身激活函數篇
    所謂深度學習系列文章,主要是為了幫助想入門深度學習的小白深刻理解相關概念,同時也為相關從業者提供查漏補缺的一個糾察表。所以為了保證小白能夠跟上節奏,在保證知識點全面的同時,從頭開始講起。何為深度學習?深度學習,英文名叫Deep Learning,顧名思義,就是深度的理解數據的特徵,學習其內部規律,在微觀的世界裡用計算機的思維解釋數據,進而在一定準確度下擁有預測的能力。通俗點講,就是說機器就像是一個小孩子,我們給他看了大量的圖片,裡面有貓有狗,經過學習之後,再給他看一張貓或者狗的圖片,他就能準確分類。
  • 神經網絡中激活函數的真正意義?一個激活函數需要具有哪些必要的屬性?還有哪些屬性是好的屬性但不必要的?
    01 無處不在的激活函數我們都知道人工神經網絡是用於模擬神經元的,那麼提起激活函數,自然是要從那裡去挖掘原因。在正說深度學習中的激活函數之前,我想說其實激活函數無處不在,從中閒話一下激活函數的意義。(1) 上班需要激活函數。
  • 專欄 | 深度學習中的Normalization模型
    BN 是深度學習進展中裡程碑式的工作之一,無論是希望深入了解深度學習,還是在實踐中解決實際問題,BN 及一系列改進 Normalization 工作都是繞不開的重要環節。神經元在介紹深度學習 Normalization 前,我們先普及下神經元的活動過程。深度學習是由神經網絡來體現對輸入數據的函數變換的,而神經網絡的基礎單元就是網絡神經元,一個典型的神經元對數據進行處理時包含兩個步驟的操作(參考圖 3):步驟一:對輸入數據進行線性變換,產生淨激活值
  • 神經網絡中的激活函數解析:Sigmoid, tanh, Softmax, ReLU, Leaky ReLU
    也就是轉換函數,也可以加在兩層神經網絡之間。我們為什麼要在神經網絡中使用激活函數?用來決定神經網絡的輸出,就像是和否一樣,將結果映射到0到1或者-1到1之間(根據不同的函數)。非線性激活函數非線性激活函數是最常用的激活函數,非線性的圖看起來像下面這樣: