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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

一些人會懷疑:難道神經(jīng)網(wǎng)絡不是最先進的技術?

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-06-30 08:55 ? 次閱讀

編者按:在機器學習面前,我們都像一個孩子。當剛學會反向傳播算法時,許多人會不滿足于最基礎的感知器,去嘗試搭建更深、層數(shù)更多的神經(jīng)網(wǎng)絡。他們欣賞著自己的實現(xiàn),就像沙灘上的孩子驕傲地看著自己用泥沙堆起來的城堡。但和城堡的徒有其表一樣,這些神經(jīng)網(wǎng)絡的性能往往也難以令人滿意,它們也許會陷入無休止的訓練,也許準確率永遠提不上來。這時,一些人就會開始懷疑:難道神經(jīng)網(wǎng)絡不是最先進的技術?

類似的懷疑,誰都有過——

神經(jīng)網(wǎng)絡的訓練過程包括前向傳播和反向傳播兩個部分,如果前向傳播得到的預測結果和實際結果不符,這就說明網(wǎng)絡沒有訓練好,要用反向傳播去重新調(diào)整各個權重。這之中涉及各種常見的優(yōu)化算法,以梯度下降為例,它的思路是把當前梯度的負值方向作為搜索方向,通過調(diào)整權重使目標函數(shù)趨近局部最小值,也就是讓代價函數(shù)/損失函數(shù)越來越小。

如上式所述,梯度下降算法用原權重減去乘上標量α(0到1之間)的梯度來更新權重,并“重復”這一過程直至收斂。但在實際操作中,這個“重復”的迭代次數(shù)是一個人為選定的超參數(shù),這意味著它可能過小,最后收斂效果并不好;它也可能過大,網(wǎng)絡被訓練得“沒完沒了”。因此訓練時間和訓練效果之間存在“過猶不及”的尷尬情況。

那么這個超參數(shù)是怎么影響收斂的?就像不同人下山速度不同一樣,梯度下降有一個下降步長,迭代時間越短,步長就越大,雖然收斂速度很快,但它容易無法精確收斂到最后的最優(yōu)解;相反地,如果迭代時間過長,步長越小,那在很長一段收斂過程中,可能網(wǎng)絡的權重并不會發(fā)生太大改變,而且相對大步長,小步長在規(guī)定迭代次數(shù)內(nèi)接近最小值也更難。

小步長收斂宛如“蝸牛”

大步長收斂效率更高

這還不是唯一的毛病,當梯度數(shù)值過小時,它容易被四舍五入為0,也就是下溢出。這時再對這個數(shù)做某些運算就會出問題。

看到這里,我們似乎已經(jīng)得到這樣一個事實:小梯度 = 不好。雖然這個結論看起來有些武斷,但在很多情況下,它并不是危言聳聽,因為本文要講的梯度消失就是由小梯度引起的。

讓我們回想一下sigmoid函數(shù),這是一個經(jīng)常會在分類問題中遇到的激活函數(shù):

如上圖所示,sigmoid的作用確實是有目共睹的,它能把任何輸入的閾值都限定在0到1之間,非常適合概率預測和分類預測。但這幾年sigmoid與tanh卻一直火不起來,凡是提及激活函數(shù),大家第一個想到的就是ReLU,為什么?

因為sigmoid幾乎就是梯度消失的代名詞,我們先對它求導:

這看起來就是個很普通的 s(1-s) 算式,好像沒什么問題。讓我們繪制它的圖像:

仔細看一看,還是沒問題嗎?可以發(fā)現(xiàn),上圖中最大值只有1/4,最小值無限接近0,換言之,這個導數(shù)的閾值是(0, 1/4]。記住這個值,待會兒我們會用到。

現(xiàn)在我們先回頭繼續(xù)討論神經(jīng)網(wǎng)絡的反向傳播算法,看看梯度對它們會產(chǎn)生什么影響。

這是一個最簡單的神經(jīng)網(wǎng)絡,除了輸入神經(jīng)元,其他神經(jīng)元的act()都來自前一層的神經(jīng)元:先用act()乘上一個權重,再經(jīng)激活函數(shù)饋送進下一層,來自上層的信息就成了一個全新的act()。最后的J歸納了前饋過程中的所有誤差項(error),輸出網(wǎng)絡整體誤差。這之后,我們再執(zhí)行反向傳播,通過梯度下降修改參數(shù),使J的輸出最小化。

下面是第一項權重w1的導數(shù):

我們可以利用權重的導數(shù)來進行梯度下降,繼而迭代出全局最優(yōu)點,但在那之前,這個派生的乘法運算值得關注:

由于上一層的輸出乘上激活函數(shù)就是下一層的輸入,所以上式其實還包含sigmoid的導數(shù),如果把信息全部表示完整,從輸出返回到第二層隱藏層的表達式應該是:

同理,從第二層隱藏層到第一層隱藏層則是:

它們都包含sigmoid函數(shù),合起來就是:

之前我們已經(jīng)對sigmoid求過導了,計算出它的閾值是(0, 1/4]。結合上式,兩個0到1之間的小數(shù)相乘,積小于任一乘數(shù)。而在典型的神經(jīng)網(wǎng)絡中,權重初始化的一般方法是權重的選擇要服從均值=0,方差=1的正態(tài)分布,因此這些初始權重的閾值是[-1, 1]。

接下來的事情就很清楚了:

即便不用常規(guī)權重初始化方法,w2和w3大于1,但它們對兩個sigmoid導數(shù)相乘來說還是杯水車薪,梯度變得太小了。而在實際操作中,隨機權重是很可能小于1的,所以那時它反而是在助紂為虐。

這還只有2個隱藏層,試想一下,如果這是一個工業(yè)級的深層神經(jīng)網(wǎng)絡,那么當它在執(zhí)行反向傳播時,這個梯度會變得有多小,小到突然消失也在情理之中。另一方面,如果我們把然激活函數(shù)導數(shù)的絕對值控制在大于1,那這個連乘操作也很嚇人,結果會無限大,也就是我們常說的“梯度爆炸”。

現(xiàn)在,我們來看一個典型的ANN:

第一項權重距離誤差項J最遠,因此求導后它的表達式最長,也包含更多sigmoid函數(shù),計算結果更小。所以神經(jīng)網(wǎng)絡的第一層往往是訓練時間最長的一層。它同時也是后面所有層的基礎,如果這一層不夠準確,那就會產(chǎn)生連鎖反應,直接拉低整個網(wǎng)絡的性能。

這就也是神經(jīng)網(wǎng)絡,尤其是深層神經(jīng)網(wǎng)絡一開始并不為行業(yè)所接受的原因。正確訓練前幾層是整個網(wǎng)絡的基礎,但激活函數(shù)的缺陷和硬件設備的算力不足,使當時的研究人員連打好基礎都做不到。

看到這里,我們應該都已經(jīng)理解sigmoid函數(shù)的缺點了,它的替代方案tanh函數(shù)雖然也曾聲名大噪,但考慮到tanh(x)=2sigmoid(2x)-1,它肯定也存在同樣的問題。那么,現(xiàn)在大家都在用的ReLU好在哪兒?

首先,ReLU是一個分段函數(shù):

它還有另一種寫法:

當輸入小于0時,函數(shù)輸出0;當輸入大于零時,函數(shù)輸出x。

我們計算它的導數(shù)來對比sigmoid:

然后是它的圖像,注意一點,它在0點不可微,所以當x=0時,圖中y軸上應該是兩個空心圓。

可以發(fā)現(xiàn),導數(shù)的閾值終于不再是(0, 1)了,它好像可以避免梯度消失,但似乎又有點不對勁?當我們把一個負值輸入到ReLU函數(shù)后,梯度為0,這時這個神經(jīng)元就“壞死”了。換句話說,如果存在負數(shù)權重,那某些神經(jīng)元可能永遠不會被激活,導致相應參數(shù)永遠不會被更新。從某種意義上來說,ReLU還是存在部分梯度消失問題。

那么,我們該怎么選擇呢?不急,這里還有一種激活函數(shù)——Leakly ReLU。

既然ReLU的“梯度消失”源于它的閾值0,那么我們可以把它重設成一個0到1之間的具體小數(shù)。這之后,當輸入為負時,它還是具有非常小的梯度,這就為網(wǎng)絡繼續(xù)學習提供了機會。

上式中的ε=0.01,但它最常見的范圍是0.2-0.3。因為斜率小,輸入負值權重后,它在圖像上是一條非常緩的線:

這里我們要聲明一點:雖然Leakly ReLU可以解決ReLU的神經(jīng)元壞死問題,但它的表現(xiàn)并不一定比ReLU更好。比如常數(shù)ε萬一過小,它就很可能會導致新的梯度消失。另一方面,這兩個激活函數(shù)有個共同的缺點,即不像tanh和sigmoid一樣輸出有界,如果是在RNN這樣很深的神經(jīng)網(wǎng)絡里,即便ReLU的導數(shù)是0或1,很小,但除了它我們還有那么多權重,多項連乘會導致非常大的輸出值,然后梯度就爆炸了。

所以總的來說,ReLU并沒有根治梯度消失這個問題,它只是在一定程度上緩解了矛盾,并產(chǎn)生了另一個新問題。這也是這些激活函數(shù)至今還能共存的原因——CNN用ReLU更常見,而RNN大多用tanh。在“玄學”的大背景下,這大概是新手入門機器學習后,接觸到的第一起trade off吧。

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

    關注

    42

    文章

    4749

    瀏覽量

    100433
  • 梯度
    +關注

    關注

    0

    文章

    30

    瀏覽量

    10304
  • 深度學習
    +關注

    關注

    73

    文章

    5471

    瀏覽量

    120903

原文標題:深度學習解密:我的梯度怎么消失了?

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

收藏 人收藏

    評論

    相關推薦

    詳解深度學習、神經(jīng)網(wǎng)絡與卷積神經(jīng)網(wǎng)絡的應用

    在如今的網(wǎng)絡時代,錯綜復雜的大數(shù)據(jù)和網(wǎng)絡環(huán)境,讓傳統(tǒng)信息處理理論、人工智能與人工神經(jīng)網(wǎng)絡都面臨巨大的挑戰(zhàn)。近些年,深度學習逐漸走進人們的視線,通過深度學習解決若干問題的案例越來越多。一些
    的頭像 發(fā)表于 01-11 10:51 ?1852次閱讀
    詳解深度學習、<b class='flag-5'>神經(jīng)網(wǎng)絡</b>與卷積<b class='flag-5'>神經(jīng)網(wǎng)絡</b>的應用

    人工神經(jīng)網(wǎng)絡原理及下載

    人工神經(jīng)網(wǎng)絡是根據(jù)的認識過程而開發(fā)出的種算法。假如我們現(xiàn)在只有一些輸入和相應的輸出,而對如何由輸入得到輸出的機理并不清楚,那么我們可以把輸入與輸出之間的未知過程看成是
    發(fā)表于 06-19 14:40

    當訓練好的神經(jīng)網(wǎng)絡用于應用的時候,權值是不是不能變了?

    當訓練好的神經(jīng)網(wǎng)絡用于應用的時候,權值是不是不能變了????就是已經(jīng)訓練好的神經(jīng)網(wǎng)絡不是相當于得到個公式了,權值不能變了
    發(fā)表于 10-24 21:55

    AI知識科普 | 從無人相信到萬追捧的神經(jīng)網(wǎng)絡

    工智能。幾乎是夜間,神經(jīng)網(wǎng)絡技術從無人相信變成了萬追捧。神經(jīng)網(wǎng)絡之父Hiton1、人工神經(jīng)網(wǎng)絡是什么?人工
    發(fā)表于 06-05 10:11

    卷積神經(jīng)網(wǎng)絡如何使用

    卷積神經(jīng)網(wǎng)絡(CNN)究竟是什么,鑒于神經(jīng)網(wǎng)絡在工程上經(jīng)歷了曲折的歷史,您為什么還會在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發(fā)表于 07-17 07:21

    【案例分享】ART神經(jīng)網(wǎng)絡與SOM神經(jīng)網(wǎng)絡

    今天學習了兩個神經(jīng)網(wǎng)絡,分別是自適應諧振(ART)神經(jīng)網(wǎng)絡與自組織映射(SOM)神經(jīng)網(wǎng)絡。整體感覺不是很難,只不過一些最基礎的概念容易理解不
    發(fā)表于 07-21 04:30

    人工神經(jīng)網(wǎng)絡實現(xiàn)方法有哪些?

    人工神經(jīng)網(wǎng)絡(Artificial Neural Network,ANN)是種類似生物神經(jīng)網(wǎng)絡的信息處理結構,它的提出是為了解決一些非線性,非平穩(wěn),復雜的實際問題。那有哪些辦法能實現(xiàn)
    發(fā)表于 08-01 08:06

    如何構建神經(jīng)網(wǎng)絡?

    原文鏈接:http://tecdat.cn/?p=5725 神經(jīng)網(wǎng)絡種基于現(xiàn)有數(shù)據(jù)創(chuàng)建預測的計算系統(tǒng)。如何構建神經(jīng)網(wǎng)絡?神經(jīng)網(wǎng)絡包括:輸入層:根據(jù)現(xiàn)有數(shù)據(jù)獲取輸入的層隱藏層:使用反
    發(fā)表于 07-12 08:02

    神經(jīng)網(wǎng)絡移植到STM32的方法

    神經(jīng)網(wǎng)絡移植到STM32最近在做的個項目需要用到網(wǎng)絡進行擬合,并且將擬合得到的結果用作控制,就在想能不能直接在單片機上做神經(jīng)網(wǎng)絡計算,這樣就可以實時計算,不依賴于上位機。所以要解決
    發(fā)表于 01-11 06:20

    神經(jīng)網(wǎng)絡到深度學習

    微軟研究人員在深度神經(jīng)網(wǎng)絡(deep neural network)上取得突破, 使其在性能上能趕上目前最先進的語音識別技術
    發(fā)表于 08-17 11:54 ?47次下載

    【人工神經(jīng)網(wǎng)絡基礎】為什么神經(jīng)網(wǎng)絡選擇了“深度”?

    由 Demi 于 星期四, 2018-09-06 09:33 發(fā)表 現(xiàn)在提到“神經(jīng)網(wǎng)絡”和“深度神經(jīng)網(wǎng)絡”,覺得兩者沒有什么區(qū)別,神經(jīng)網(wǎng)絡還能不是
    發(fā)表于 09-06 20:48 ?672次閱讀

    深度神經(jīng)網(wǎng)絡在識別物體上的能力怎樣

    深度神經(jīng)網(wǎng)絡非常善于識別物體,但是當涉及到他們的相互作用的推理時,即使是最先進神經(jīng)網(wǎng)絡也在努力。
    發(fā)表于 04-14 15:24 ?822次閱讀

    神經(jīng)網(wǎng)絡一些人類根本不會犯的錯誤

    的方式也與人類更相近。但是,神經(jīng)網(wǎng)絡還是一些人類根本不會犯的錯誤,改進空間仍很大。 對抗樣本:如果在這張熊貓圖片上添加個不可察覺的噪聲層,
    的頭像 發(fā)表于 01-05 14:10 ?2123次閱讀
    <b class='flag-5'>神經(jīng)網(wǎng)絡</b><b class='flag-5'>會</b>犯<b class='flag-5'>一些人</b>類根本不會犯的錯誤

    反向傳播神經(jīng)網(wǎng)絡和bp神經(jīng)網(wǎng)絡的區(qū)別

    神經(jīng)網(wǎng)絡在許多領域都有廣泛的應用,如語音識別、圖像識別、自然語言處理等。然而,BP神經(jīng)網(wǎng)絡也存在一些問題,如容易陷入局部最優(yōu)解、訓練時間長、對初始權重敏感等。為了解決這些問題,研究者們提出了
    的頭像 發(fā)表于 07-03 11:00 ?611次閱讀

    bp神經(jīng)網(wǎng)絡和反向傳播神經(jīng)網(wǎng)絡區(qū)別在哪

    神經(jīng)網(wǎng)絡在許多領域都有廣泛的應用,如語音識別、圖像識別、自然語言處理等。然而,BP神經(jīng)網(wǎng)絡也存在一些問題,如容易陷入局部最優(yōu)解、訓練時間長、對初始權重敏感等。為了解決這些問題,研究者們提出了
    的頭像 發(fā)表于 07-04 09:51 ?362次閱讀