0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于神經(jīng)網(wǎng)絡(luò)的激活函數(shù)和相應(yīng)的數(shù)學(xué)介紹

zhKF_jqr_AI ? 2018-01-10 11:53 ? 次閱讀

最近我有一個(gè)同事老是問我“為什么我們用這么多激活函數(shù)?”,“為什么這個(gè)函數(shù)效果比那個(gè)好?”,“你怎么知道要用哪個(gè)函數(shù)?”,“這是很難的數(shù)學(xué)?”等等。所以我想,我何不給對(duì)神經(jīng)網(wǎng)絡(luò)只有基本了解的人寫篇文章,介紹下激活函數(shù)和相應(yīng)的數(shù)學(xué)呢?

注意:本文假設(shè)你對(duì)人工“神經(jīng)元”有基本的了解。

激活函數(shù)

簡單來說,人工神經(jīng)元計(jì)算輸入的“加權(quán)和”,加上偏置,接著決定是否需要“激活”(好吧,其實(shí)是激活函數(shù)決定是否激活,但是現(xiàn)在讓我們先這樣理解吧)。

考慮一個(gè)神經(jīng)元。

上式中,Y的值可能是負(fù)無窮大到正無窮大之間的任意值。神經(jīng)元并不知道值的界限。所以我們?nèi)绾螞Q定神經(jīng)元是否需要激活呢?

為此,我們決定增加“激活函數(shù)”。

階躍函數(shù)

我們首先想到的是一個(gè)基于閾值的激活函數(shù)。如果Y的值大于一個(gè)特定值,就定義為“激活”。如果小于閾值,則不激活。

激活函數(shù) A = “激活” if Y > 閾值 else not

或者,A = 1 if Y > 閾值, 否則 0

好吧,我們剛剛定義的是一個(gè)階躍函數(shù)(step function)。

當(dāng)值大于0(閾值)時(shí),輸出為1(激活),否則輸出為0(不激活)。

很好。很清楚,這可以作為神經(jīng)元的激活函數(shù)。然而,這個(gè)方法有一些特定的缺陷。

假設(shè)你正創(chuàng)建一個(gè)二元分類器,輸出“是”或“否”(激活或未激活)。一個(gè)階躍函數(shù)可以做到這一點(diǎn)。實(shí)際上這正是階躍函數(shù)做的事,輸出1或0。然后,想想如果你想要連接更多這樣的神經(jīng)元來引入更多的分類,比如類一、類二、類三,等等。當(dāng)不止一個(gè)神經(jīng)元“激活”時(shí)會(huì)發(fā)生什么?所有的神經(jīng)元將輸出1(基于階躍函數(shù))。然后你如何決定最終結(jié)果屬于哪個(gè)分類呢?嗯,很難,很復(fù)雜。

你可能想要用當(dāng)且僅當(dāng)一個(gè)神經(jīng)元輸出為1來表示分類結(jié)果。?。∵@更難訓(xùn)練了。更好的選擇是,激活函數(shù)不是二元的,可以表達(dá)“50%激活”、“20%激活”之類的概念。這樣,當(dāng)不止一個(gè)神經(jīng)元激活的時(shí)候,你可以找到“激活程度最高”的神經(jīng)元(其實(shí)比max更優(yōu)的選擇是softmax,不過目前我們就用max吧)。

當(dāng)然,如果不止1個(gè)神經(jīng)元表示“100%激活”了,問題仍然存在。不過,由于輸出存在中間值,因此學(xué)習(xí)過程將更平滑、更容易(較少波動(dòng)),不止1個(gè)神經(jīng)元100%激活的概率要比使用階躍函數(shù)訓(xùn)練小很多(當(dāng)然,這也取決于訓(xùn)練的數(shù)據(jù))。

好,所以我們希望輸出中間(模擬)激活值,而不是僅僅輸出“激活”或“不激活”(二元值)。

我們第一個(gè)想到的是線性函數(shù)。

線性函數(shù)

A = cx

以上是一個(gè)直線函數(shù),激活與函數(shù)輸入(神經(jīng)元的加權(quán)和)成比例。

所以這將給出一定范圍內(nèi)的激活,而不是二元激活。我們當(dāng)然可以連接若干神經(jīng)元,如果不止一個(gè)神經(jīng)元激活了,我們可以基于最大值(max或softmax)做決定。所以這很好。那么,這有什么問題呢?

如果你熟悉用于訓(xùn)練的梯度下降,你會(huì)注意到這個(gè)函數(shù)的導(dǎo)數(shù)是一個(gè)常數(shù)。

A = cx對(duì)x的導(dǎo)數(shù)是c。這意味著梯度與x無關(guān)。這將是一個(gè)常數(shù)梯度。如果預(yù)測(cè)出現(xiàn)了錯(cuò)誤,反向傳播進(jìn)行的改動(dòng)將是常數(shù),而不依賴于輸入delta(x)?。?!

這可不怎么好!(并非總是如此,但請(qǐng)容許我這么說。)此外,還有一個(gè)問題。想想連接起來的層。每個(gè)層由線性函數(shù)激活。這個(gè)激活接著作為下一層的輸入,下一層同樣基于線性函數(shù)激活,重復(fù)此過程,一直到最后一層。

不管我們有多少層,如果這些層的激活函數(shù)都是線性的,最后一層的最終激活函數(shù)將是第一層的輸入的線性函數(shù)!停頓一會(huì),想想這個(gè)。

這意味著,這兩層(或N層)可以被一個(gè)單獨(dú)的層替換。??!我們剛剛失去了堆疊網(wǎng)絡(luò)層的能力。不管我們堆疊多少層,整個(gè)網(wǎng)絡(luò)始終等價(jià)于帶線性激活的單層神經(jīng)網(wǎng)絡(luò)(線性函數(shù)的線性組合仍然是一個(gè)線性函數(shù))。

讓我們繼續(xù)吧。

sigmoid函數(shù)

基于神經(jīng)網(wǎng)絡(luò)的激活函數(shù)和相應(yīng)的數(shù)學(xué)介紹

好吧,這曲線看上去很平滑,有點(diǎn)像階躍函數(shù)。那這有什么好處呢?花點(diǎn)時(shí)間想一想。

首先,它是非線性的。這意味著該函數(shù)的組合也是非線性的。太棒了!我們可以堆疊網(wǎng)絡(luò)層了。至于非線性激活?是的,它是非線性激活!和階躍函數(shù)不同,它將給出模擬激活。同時(shí),它也具備平滑的梯度。

不知道你注意到了沒有,當(dāng)X位于-2和2之間時(shí),Y的值非常陡峭。這意味著,此區(qū)間內(nèi)X的任意微小變動(dòng)都將導(dǎo)致Y顯著變動(dòng)。這意味著,該函數(shù)趨向于將Y的值導(dǎo)向曲線的兩端。

看起來這個(gè)性質(zhì)對(duì)分類器而言很有用?沒錯(cuò)!確實(shí)是這樣。它趨向于將激活導(dǎo)向曲線的兩邊。這在預(yù)測(cè)上形成了清晰的差別。

另外一個(gè)優(yōu)勢(shì)是,相對(duì)于線性函數(shù)(-inf, inf)的值域,該函數(shù)的值域?yàn)?0, 1)。因此我們的激活函數(shù)是有界的。

sigmoid函數(shù)是現(xiàn)在使用這廣泛的函數(shù)之一。那么,它有什么問題呢?

不知道你注意到了沒有,越是接近sigmoid的兩端,相對(duì)X的改變,Y就越趨向于作出非常小的反應(yīng)。這意味著在該區(qū)域的梯度會(huì)很小。也就是“衰減的梯度”問題 。嗯,所以當(dāng)激活函數(shù)接近曲線兩端的“鄰近地平線”部分時(shí)發(fā)生了什么?

梯度會(huì)很小,或者消失了(由于值極小,無法做出顯著的改變了)。網(wǎng)絡(luò)拒絕進(jìn)一步學(xué)習(xí),或者學(xué)習(xí)速度劇烈地變慢了(取決于具體案例,直到梯度/計(jì)算碰到了浮點(diǎn)值的限制)。不過,我們有一些變通措施,因此在分類問題中,sigmoid仍舊非常流行。

Tanh函數(shù)

另一個(gè)常用的激活函數(shù)是tanh函數(shù)。

基于神經(jīng)網(wǎng)絡(luò)的激活函數(shù)和相應(yīng)的數(shù)學(xué)介紹

嗯,這看起來和sigmoid很像嘛。實(shí)際上,這是一個(gè)經(jīng)過拉升的sigmoid函數(shù)!

基于神經(jīng)網(wǎng)絡(luò)的激活函數(shù)和相應(yīng)的數(shù)學(xué)介紹

好,tanh的性質(zhì)和我們之前討論的sigmoid類似。它是非線性的,因此我們可以堆疊網(wǎng)絡(luò)層。它是有界的(-1, 1),所以不用擔(dān)心激活膨脹。值得一提的是,tanh的梯度比sigmoid更激烈(導(dǎo)數(shù)更陡峭)。因此,選擇sigmoid還是tanh將取決于你對(duì)梯度強(qiáng)度的需求。和sigmoid類似,tanh也存在梯度衰減問題。

tanh也是一個(gè)非常流行和廣泛使用的激活函數(shù)。

ReLu

接著,是ReLu函數(shù),

A(x) = max(0, x)

ReLu函數(shù)如上所示。當(dāng)x是正值時(shí),它輸出x,否則輸出0。

乍看起來這和線性函數(shù)有一樣的問題,因?yàn)樵谡堤幩蔷€性的。首先,RuLu是非線性的。ReLu的組合也是非線性的!(實(shí)際上它是一個(gè)很好的逼近子。ReLu的組合可以逼近任何函數(shù)。)很好,這意味著我們可以堆疊網(wǎng)絡(luò)層。不過,它并不是有界的。ReLu的值域是[0, inf)。這意味著它將膨脹激活函數(shù)。

我想指出的另一點(diǎn)是激活的稀疏性。想象一個(gè)具有很多神經(jīng)元的大型神經(jīng)網(wǎng)絡(luò)。使用sigmoid或tanh會(huì)導(dǎo)致幾乎所有神經(jīng)元以模擬的方式激活(沒忘吧?)這意味著需要處理幾乎所有的激活以描述網(wǎng)絡(luò)的輸出。換句話說,激活是密集的。這樣成本很高。理想情況下,我們希望網(wǎng)絡(luò)中的一些神經(jīng)元不激活,從而使激活變得稀疏和高效。

ReLu在這方面很有用。想象一個(gè)具備隨機(jī)初始權(quán)重(或歸一化的權(quán)重)的網(wǎng)絡(luò),基于ReLu的特性(x的負(fù)值將輸出0),基本上50%的網(wǎng)絡(luò)將生成0。這意味著更少的神經(jīng)元將被激活(稀疏激活),網(wǎng)絡(luò)也更輕量。哇,棒!ReLu看起來真不錯(cuò)!是的,它確實(shí)不錯(cuò),但沒什么東西不存在缺陷……甚至是RuLu。

ReLu的水平線部分(X的負(fù)值)意味著梯度會(huì)趨向于0。當(dāng)激活位于ReLu的水平區(qū)域時(shí),梯度會(huì)是0,導(dǎo)致權(quán)重?zé)o法隨著梯度而調(diào)整。這意味著,陷入此狀態(tài)的神經(jīng)元將停止對(duì)誤差/輸入作出反應(yīng)(很簡單,因?yàn)樘荻仁?,沒有什么改變)。這被稱為死亡ReLu問題。這一問題會(huì)導(dǎo)致一些神經(jīng)元直接死亡、失去響應(yīng),導(dǎo)致網(wǎng)絡(luò)的很大一部分進(jìn)入被動(dòng)狀態(tài)。有一些緩和這一問題的ReLu變體,將水平線轉(zhuǎn)為非水平部分,例如,當(dāng)x<0時(shí)y = 0.01x,使圖像從水平線變?yōu)槁晕A斜的直線。這就是弱修正ReLu(leaky ReLu)。還有其他一些變體。主要的想法是讓梯度不為零,這樣網(wǎng)絡(luò)可以逐漸從訓(xùn)練中恢復(fù)。

相比tanh和sigmoid,ReLu在算力上更經(jīng)濟(jì),因?yàn)樗褂玫氖潜容^簡單的數(shù)學(xué)運(yùn)算。設(shè)計(jì)深度神經(jīng)網(wǎng)絡(luò)的時(shí)候,這是需要考慮的一個(gè)重要因素。

好,該選哪個(gè)呢?

現(xiàn)在來考慮該用哪個(gè)激活函數(shù)的問題。我們是否應(yīng)該總是使用ReLu呢?還是sigmoid或tanh?好,是也不是。當(dāng)我們知道嘗試逼近的函數(shù)具有某些特定性質(zhì)時(shí),我們可以選擇能夠更快逼近函數(shù)的激活函數(shù),從而加快訓(xùn)練過程。例如,sigmoid對(duì)分類器而言很有效(看看sigmoid的圖像,是不是展示了一個(gè)理想的分類器的性質(zhì)?),因?yàn)榛趕igmoid的組合逼近的分類函數(shù)要比諸如ReLu之類的函數(shù)更容易。當(dāng)然,你也可以使用自己定制的函數(shù)!如果你并不清楚試圖學(xué)習(xí)的函數(shù)的本質(zhì),那我會(huì)建議你從ReLu開始,然后再試其他。在大多數(shù)情況下,ReLu作為一個(gè)通用的逼近子效果很不錯(cuò)。

在本文中,我嘗試描述了一些常用的激活函數(shù)。還有其他的激活函數(shù),但基本的思想是一樣的。尋找更好的激活函數(shù)的研究仍在進(jìn)行。希望你理解了激活函數(shù)背后的思想,為什么要使用激活函數(shù),以及如何選用激活函數(shù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:理解神經(jīng)網(wǎng)絡(luò)的激活函數(shù)

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    神經(jīng)網(wǎng)絡(luò)基本的訓(xùn)練和工作原理是什么

    在兩層神經(jīng)網(wǎng)絡(luò)之間,必須有激活函數(shù)連接,從而加入非線性因素,提高神經(jīng)網(wǎng)絡(luò)的能力。所以,我們先從激活函數(shù)學(xué)
    發(fā)表于 08-07 10:02 ?620次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>基本的訓(xùn)練和工作原理是什么

    神經(jīng)網(wǎng)絡(luò)基本介紹

    神經(jīng)網(wǎng)絡(luò)基本介紹
    發(fā)表于 01-04 13:41

    【PYNQ-Z2試用體驗(yàn)】神經(jīng)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

    思考問題的過程。人腦輸入一個(gè)問題,進(jìn)行思考,然后給出答案。神經(jīng)網(wǎng)絡(luò)就是在模擬人的思考這一過程。而我們要做的就是以數(shù)學(xué)的方式,將這一抽象的過程進(jìn)行量化。神經(jīng)元與激活
    發(fā)表于 03-03 22:10

    BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)數(shù)學(xué)知識(shí)分享

    一文看懂BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)數(shù)學(xué)知識(shí)
    發(fā)表于 06-16 07:14

    ReLU到Sinc的26種神經(jīng)網(wǎng)絡(luò)激活函數(shù)可視化大盤點(diǎn)

    本文介紹了26個(gè)激活函數(shù)的圖示及其一階導(dǎo)數(shù),在神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)決定來自給定輸入集的節(jié)點(diǎn)的輸出
    發(fā)表于 01-11 17:42 ?3.1w次閱讀
    ReLU到Sinc的26種<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b><b class='flag-5'>激活</b><b class='flag-5'>函數(shù)</b>可視化大盤點(diǎn)

    圖文詳解:神經(jīng)網(wǎng)絡(luò)激活函數(shù)

    什么是神經(jīng)網(wǎng)絡(luò)激活函數(shù)激活函數(shù)有助于決定我們是否需要激活
    的頭像 發(fā)表于 07-05 11:21 ?3673次閱讀
    圖文詳解:<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的<b class='flag-5'>激活</b><b class='flag-5'>函數(shù)</b>

    神經(jīng)網(wǎng)絡(luò)初學(xué)者的激活函數(shù)指南

    作者:Mouaad B. 來源:DeepHub IMBA 如果你剛剛開始學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),激活函數(shù)的原理一開始可能很難理解。但是如果你想開發(fā)強(qiáng)大的神經(jīng)網(wǎng)絡(luò),理解它們是很重要的。 但在我們深
    的頭像 發(fā)表于 04-18 11:20 ?478次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>初學(xué)者的<b class='flag-5'>激活</b><b class='flag-5'>函數(shù)</b>指南

    神經(jīng)網(wǎng)絡(luò)初學(xué)者的激活函數(shù)指南

    作者:MouaadB.來源:DeepHubIMBA如果你剛剛開始學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),激活函數(shù)的原理一開始可能很難理解。但是如果你想開發(fā)強(qiáng)大的神經(jīng)網(wǎng)絡(luò),理解它們是很重要的。但在我們深入研究
    的頭像 發(fā)表于 04-21 09:28 ?606次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>初學(xué)者的<b class='flag-5'>激活</b><b class='flag-5'>函數(shù)</b>指南

    神經(jīng)網(wǎng)絡(luò)中的激活函數(shù)有哪些

    神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)是一個(gè)至關(guān)重要的組成部分,它決定了神經(jīng)元對(duì)于輸入信號(hào)的反應(yīng)方式,為神經(jīng)網(wǎng)絡(luò)引入了非線性因素,使得
    的頭像 發(fā)表于 07-01 11:52 ?384次閱讀

    神經(jīng)網(wǎng)絡(luò)激活函數(shù)的定義及類型

    詳細(xì)介紹激活函數(shù)的定義、類型。 激活函數(shù)的定義和基本功能 2.1 定義 激活
    的頭像 發(fā)表于 07-02 10:09 ?308次閱讀

    神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)建模中的應(yīng)用

    地理解和解決實(shí)際問題。本文將詳細(xì)介紹神經(jīng)網(wǎng)絡(luò)數(shù)學(xué)建模中的應(yīng)用,包括神經(jīng)網(wǎng)絡(luò)的基本原理、數(shù)學(xué)建模中神經(jīng)網(wǎng)
    的頭像 發(fā)表于 07-02 11:29 ?529次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)的原理是什么

    基本概念、結(jié)構(gòu)、訓(xùn)練過程以及應(yīng)用場(chǎng)景。 卷積神經(jīng)網(wǎng)絡(luò)的基本概念 1.1 神經(jīng)網(wǎng)絡(luò) 神經(jīng)網(wǎng)絡(luò)是一種受人腦神經(jīng)元結(jié)構(gòu)啟發(fā)的數(shù)學(xué)模型,由大量的節(jié)點(diǎn)
    的頭像 發(fā)表于 07-02 14:44 ?350次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)激活函數(shù)的作用

    起著至關(guān)重要的作用,它們可以增加網(wǎng)絡(luò)的非線性,提高網(wǎng)絡(luò)的表達(dá)能力,使網(wǎng)絡(luò)能夠?qū)W習(xí)到更加復(fù)雜的特征。本文將詳細(xì)介紹卷積神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 07-03 09:18 ?320次閱讀

    BP神經(jīng)網(wǎng)絡(luò)激活函數(shù)怎么選擇

    中,激活函數(shù)起著至關(guān)重要的作用,它決定了神經(jīng)元的輸出方式,進(jìn)而影響整個(gè)網(wǎng)絡(luò)的性能。 一、激活函數(shù)
    的頭像 發(fā)表于 07-03 10:02 ?315次閱讀

    前饋神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)和常見激活函數(shù)

    激活函數(shù)的非線性變換,能夠?qū)W習(xí)和模擬復(fù)雜的函數(shù)映射,從而解決各種監(jiān)督學(xué)習(xí)任務(wù)。本文將詳細(xì)闡述前饋神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),包括其組成層、權(quán)重和偏置、激活
    的頭像 發(fā)表于 07-09 10:31 ?229次閱讀