TensorFlow從1到2 - 2 - 消失的梯度

TensorFlow從0到N專題入口

上一篇1 深度神經(jīng)網(wǎng)絡(luò)我們知道膝昆,通過(guò)追加隱藏層來(lái)構(gòu)建更加“智能”的深度神經(jīng)網(wǎng)絡(luò),并不奏效运挫。

真正的問(wèn)題不在“深度”本身廷痘,而是由梯度下降算法所指導(dǎo)的訓(xùn)練過(guò)程,容易遭遇梯度消失問(wèn)題(Vanishing Gradient Problem)构灸,以及與之成對(duì)存在的梯度爆炸問(wèn)題(Exploding Gradient Problem)上渴。

本篇分析梯度消失和爆炸問(wèn)題,并引入整流線性單元(ReLU)喜颁。

Vanishing Gradient

重現(xiàn)梯度消失

為了凸顯這個(gè)問(wèn)題稠氮,我們需要一個(gè)特別的網(wǎng)絡(luò)架構(gòu),抽出網(wǎng)絡(luò)中由藍(lán)色神經(jīng)元構(gòu)成的路徑半开,形成一個(gè)每層只有一個(gè)神經(jīng)元的多層網(wǎng)絡(luò)隔披,如下圖所示:

接下來(lái)采用鏈?zhǔn)椒▌t進(jìn)行反向傳播,來(lái)獲得最靠前的隱藏層神經(jīng)元參數(shù)的梯度形式:

整理得到下式:

這個(gè)形式可以清晰的反應(yīng)出在反向傳播過(guò)程中寂拆,靠后的層如何影響靠前的層:神經(jīng)元梯度會(huì)受到其后每層神經(jīng)元的累積乘性影響奢米,越靠近輸出層的,乘性因子越多纠永。這將導(dǎo)致靠前面的神經(jīng)元層梯度的不穩(wěn)定——容易過(guò)小或者過(guò)大鬓长,從而產(chǎn)生梯度消失或梯度爆炸。

以梯度消失為例尝江。假設(shè)網(wǎng)絡(luò)參數(shù)初始化符合標(biāo)準(zhǔn)正態(tài)分布N(0,1)涉波,且神經(jīng)元的激活函數(shù)采用Sigmoid函數(shù),則有|w| < 1茂装,而Sigmoid的導(dǎo)數(shù)σ' < 1/4(見(jiàn)下面的Sigmoid導(dǎo)數(shù)曲線)怠蹂。

Sigmoid導(dǎo)數(shù)曲線

根據(jù)上述,得到下面推斷:網(wǎng)絡(luò)越深少态,靠近輸入層的神經(jīng)元的梯度的絕對(duì)值越小,也就意味著神經(jīng)元學(xué)習(xí)緩慢易遣,甚至停止學(xué)習(xí)彼妻。這種情況下靠前的隱藏層都是不愛(ài)“學(xué)習(xí)”的無(wú)效層,如下所示:

對(duì)前面的網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)行訓(xùn)練迭代60次侨歉,并監(jiān)測(cè)各隱藏層偏置上的梯度屋摇,會(huì)得到與理論分析相同的結(jié)果。如下圖所示幽邓,從左到右炮温,從上到下,依次是第1個(gè)到第4個(gè)隱藏層偏置bl上的梯度求模的值牵舵,曲線顯示越靠前的層偏置向量b的模越小柒啤,所用代碼tf_2-2_one_path.py

梯度爆炸

梯度爆炸問(wèn)題畸颅,效果與梯度消失恰恰相反——越靠前的隱藏層的梯度越大担巩。

一個(gè)簡(jiǎn)單的解釋是:訓(xùn)練過(guò)程中隨著權(quán)重w的不斷更新,分布不再服從初始化時(shí)的N(0, 1)没炒。一旦出現(xiàn)權(quán)重w的標(biāo)準(zhǔn)差遠(yuǎn)遠(yuǎn)大于1涛癌,那么越靠前的隱藏層將獲得很大的梯度(絕對(duì)值),導(dǎo)致權(quán)重更新幅度非常大送火,神經(jīng)元很難學(xué)到穩(wěn)定的概念拳话。

總的來(lái)說(shuō),不管是梯度消失還是梯度爆炸种吸,深度網(wǎng)絡(luò)中靠近輸入層的神經(jīng)元弃衍,其梯度的內(nèi)在結(jié)構(gòu)“不穩(wěn)定”是學(xué)習(xí)困難的根本原因。

Sigmoid三宗罪

前面的神經(jīng)網(wǎng)絡(luò)以及相應(yīng)的問(wèn)題都是基于S型神經(jīng)元骨稿,即采用Sigmoid作為各層的激活函數(shù)笨鸡。下面來(lái)說(shuō)說(shuō)Sigmoid的3個(gè)主要缺陷。

1.輸出區(qū)間不以0為中心

Sigmoid的輸出范圍為(0, 1)坦冠,總是正數(shù)形耗,不以0為中心。由此可推斷辙浑,一個(gè)由S型神經(jīng)元構(gòu)成的網(wǎng)絡(luò)中激涤,第一個(gè)隱藏層之后層的輸入永遠(yuǎn)為正值。這會(huì)帶來(lái)一個(gè)問(wèn)題:網(wǎng)絡(luò)中一個(gè)神經(jīng)元中的所有權(quán)重(除第一個(gè)隱藏層之外)判呕,其上梯度的符號(hào)相同倦踢,要么都為正,要么都為負(fù)侠草,造成“zig-zagging dynamics”(之字形動(dòng)態(tài))辱挥。

所謂“zig-zagging”,就是指權(quán)重向量的更新方向受到限制边涕,對(duì)于某些方向上(各分量梯度符號(hào)不同)的目標(biāo)解晤碘,需要“之”字迂回多次才能達(dá)到褂微。這就好比兩個(gè)人的腿綁在一起,對(duì)于各自的目標(biāo)园爷,兩人必須步調(diào)一致妥協(xié)達(dá)成宠蚂,而不能各干各的。

以一個(gè)輸出層S型神經(jīng)元為例童社,來(lái)證明權(quán)重上梯度的符號(hào)相同求厕。

神經(jīng)元輸入輸出定義如下,其中σ表示Sigmoid函數(shù):

如下式所示扰楼,輸入xi恒為正呀癣,σ'(z)恒為正,神經(jīng)元的任一權(quán)重wi上的梯度符號(hào)也不依賴權(quán)重自身(求導(dǎo)后消去)灭抑,最終要么都為正十艾,要么都為負(fù):

2.神經(jīng)元容易飽和,停止學(xué)習(xí)

Sigmoid曲線

回顧下熟悉的Sigmoid曲線腾节。從圖上看忘嫉,當(dāng)神經(jīng)元加權(quán)和|z| > 2時(shí),Sigmoid曲線趨于平緩案腺,此時(shí)σ'(z) → 0庆冕,神經(jīng)元趨于飽和,權(quán)重和偏置更新幅度非常小劈榨,學(xué)習(xí)幾乎停滯访递。如下式所示,以一個(gè)輸出層神經(jīng)元為例同辣,如果σ'(z) → 0拷姿,在權(quán)重w上的梯度也趨于0。

此外旱函,從上一節(jié)中Sigmoid導(dǎo)數(shù)曲線可以看出响巢,其最大值也不過(guò)0.25,使得梯度在反向傳播過(guò)程中衰減較快棒妨。

3.計(jì)算耗時(shí)

Sigmoid表達(dá)式中包含了指數(shù)函數(shù)ex踪古,增加了計(jì)算復(fù)雜度。

神奇ReLU

忍了S型神經(jīng)元那么久券腔,它的終結(jié)者神奇ReLU終于出場(chǎng)了伏穆,它的全稱整流線性單元,Rectified Linear Units纷纫。

采用整流器Rectifier作為激活函數(shù)的神經(jīng)元(單元)被稱為ReLU枕扫,很多時(shí)候人們也直接用ReLU指代整流線性函數(shù)。整流函數(shù)形式非常簡(jiǎn)單:f(x) = max(0,x)辱魁。如下圖藍(lán)色曲線所示铡原,其中綠色的曲線是Softplus曲線偷厦,可以看做ReLU的平滑版本商叹。

ReLU

關(guān)于ReLU的與神經(jīng)科學(xué)的關(guān)系燕刻,有3篇中文文章值得一讀:

從應(yīng)用的角度來(lái)說(shuō),ReLU有幾個(gè)很棒的特性:

  • 在輸入大于0時(shí)剖笙,它的導(dǎo)數(shù)為1卵洗,永不飽和;
  • 計(jì)算簡(jiǎn)單高效弥咪;
  • 訓(xùn)練收斂極快(與前面2點(diǎn)有關(guān))过蹂;

ReLU在輸入>0時(shí)導(dǎo)數(shù)為1(相比Sigmoid導(dǎo)數(shù)最大值為0.25),具有高效的反向傳播聚至,且平衡了各層更新速率的差異酷勺,很大程度上消除了梯度消失問(wèn)題。

ReLU也并非完美扳躬,首先它的輸出區(qū)間也不以0為中心脆诉。

更加嚴(yán)重的問(wèn)題是,在它的負(fù)區(qū)間上贷币,梯度為0击胜,一旦進(jìn)入到這個(gè)區(qū)間學(xué)習(xí)將完全停止。如果某次權(quán)重大幅度更新后役纹,導(dǎo)致ReLU神經(jīng)元上的權(quán)重W非常信妓ぁ(絕對(duì)值很大的負(fù)數(shù)),使得整個(gè)數(shù)據(jù)集的輸入都無(wú)法激活它促脉,我們稱這種情況為Dying ReLU Problem辰斋。

ReLU也不是救星

嘗試將前面實(shí)驗(yàn)的網(wǎng)絡(luò)隱藏層激活函數(shù)都換成ReLU,實(shí)驗(yàn)結(jié)果如下表所示瘸味。識(shí)別精度比Sigmoid版本有了2個(gè)百分點(diǎn)的大幅提升宫仗,而且訓(xùn)練過(guò)程中收斂速度確實(shí)很快,幾次迭代下來(lái)就可以讓識(shí)別精度達(dá)到95%硫戈。

隱層數(shù)量 每隱層神經(jīng)元數(shù) 迭代次數(shù) 識(shí)別精度 代碼
1 隱層x1 100 30 97.57% tf_2-2_1_hidden_layers_relu.py
2 隱層x2 100,100 30 97.92% tf_2-2_2_hidden_layers_relu.py
3 隱層x3 100,100,100 30 97.9% tf_2-2_3_hidden_layers_relu.py
4 隱層x4 100,100,100,100 60 97.81% tf_2-2_4_hidden_layers_relu.py
5 隱層x4 500,300,150,50 60 97.98% tf_2-2_4_hidden_layers_relu_2.py
6 隱層x4 2048,1024,512,256 60 98.07% tf_2-2_4_hidden_layers_relu_3.py

但是遺憾的是锰什,繼續(xù)增加隱藏層的數(shù)量,與Sigmoid類似丁逝,識(shí)別精度卻并未出現(xiàn)明顯的提升汁胆。雖然ReLU克服了梯度消失問(wèn)題,但那并不是唯一的問(wèn)題霜幼,太多的因素都在影響訓(xùn)練深度網(wǎng)絡(luò)訓(xùn)練的難度嫩码。如果單靠追加ReLU隱藏層就能構(gòu)建深度網(wǎng)絡(luò),也就沒(méi)卷積神經(jīng)網(wǎng)絡(luò)什么事了罪既。

盡管從理論上講铸题,深度網(wǎng)絡(luò)具備極強(qiáng)的分層概念表示能力铡恕,但是這并不保證學(xué)習(xí)過(guò)程總能通向成功。我們的訓(xùn)練過(guò)程丢间,可能并沒(méi)有學(xué)習(xí)到層次化的概念探熔,或者學(xué)習(xí)了錯(cuò)誤的層次化概念。

這或許是基于梯度下降訓(xùn)練全連接網(wǎng)絡(luò)的宿命烘挫。我們知道诀艰,全連接網(wǎng)絡(luò)的每個(gè)神經(jīng)元都會(huì)接收上一層所有神經(jīng)元的輸出,進(jìn)行輸入輸出的映射饮六,所以在增加深度(隱藏層)的同時(shí)其垄,會(huì)造成參數(shù)量成倍增加,從而加大了訓(xùn)練難度卤橄。

現(xiàn)實(shí)中绿满,全連接網(wǎng)絡(luò)(FC)通常較淺,接受相對(duì)低維的特征數(shù)據(jù)窟扑,或者小分辨率的圖像數(shù)據(jù)喇颁,用于回歸或者分類。對(duì)于大分辨率圖像來(lái)說(shuō)辜膝,也都會(huì)事先進(jìn)行特征提取无牵,再將低維特征數(shù)據(jù)輸入網(wǎng)絡(luò),而不是構(gòu)建端到端的深度網(wǎng)絡(luò)架構(gòu)厂抖。

深度的復(fù)興

2006年茎毁,Hinton的深度信念網(wǎng)絡(luò)(Deep Belief Network,DBN)忱辅,通過(guò)對(duì)每層神經(jīng)元單獨(dú)進(jìn)行訓(xùn)練完成學(xué)習(xí)過(guò)程七蜘,成為了第一批成功應(yīng)用深度架構(gòu)訓(xùn)練的非卷積模型之一,由此開(kāi)啟了深度學(xué)習(xí)的復(fù)興墙懂,而將深度學(xué)習(xí)帶入巔峰的則是接下來(lái)要介紹的:卷積神經(jīng)網(wǎng)絡(luò)橡卤。

上一篇 1 深度神經(jīng)網(wǎng)絡(luò)
下一篇 3 深度學(xué)習(xí)革命的開(kāi)端:卷積神經(jīng)網(wǎng)絡(luò)


共享協(xié)議:署名-非商業(yè)性使用-禁止演繹(CC BY-NC-ND 3.0 CN)
轉(zhuǎn)載請(qǐng)注明:作者黑猿大叔(簡(jiǎn)書)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市损搬,隨后出現(xiàn)的幾起案子碧库,更是在濱河造成了極大的恐慌,老刑警劉巖巧勤,帶你破解...
    沈念sama閱讀 223,002評(píng)論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嵌灰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡颅悉,警方通過(guò)查閱死者的電腦和手機(jī)沽瞭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剩瓶,“玉大人驹溃,你說(shuō)我怎么就攤上這事城丧。” “怎么了豌鹤?”我有些...
    開(kāi)封第一講書人閱讀 169,787評(píng)論 0 365
  • 文/不壞的土叔 我叫張陵亡哄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我傍药,道長(zhǎng)磺平,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 60,237評(píng)論 1 300
  • 正文 為了忘掉前任拐辽,我火速辦了婚禮,結(jié)果婚禮上擦酌,老公的妹妹穿的比我還像新娘俱诸。我一直安慰自己,他們只是感情好赊舶,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布睁搭。 她就那樣靜靜地躺著,像睡著了一般笼平。 火紅的嫁衣襯著肌膚如雪园骆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,821評(píng)論 1 314
  • 那天寓调,我揣著相機(jī)與錄音锌唾,去河邊找鬼。 笑死夺英,一個(gè)胖子當(dāng)著我的面吹牛晌涕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痛悯,決...
    沈念sama閱讀 41,236評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼余黎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了载萌?” 一聲冷哼從身側(cè)響起惧财,我...
    開(kāi)封第一講書人閱讀 40,196評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扭仁,沒(méi)想到半個(gè)月后垮衷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斋枢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評(píng)論 3 343
  • 正文 我和宋清朗相戀三年帘靡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓤帚。...
    茶點(diǎn)故事閱讀 40,928評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡描姚,死狀恐怖涩赢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轩勘,我是刑警寧澤筒扒,帶...
    沈念sama閱讀 36,583評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站绊寻,受9級(jí)特大地震影響花墩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜澄步,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評(píng)論 3 336
  • 文/蒙蒙 一冰蘑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧村缸,春花似錦祠肥、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,755評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至东羹,卻和暖如春剂桥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背属提。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,869評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工权逗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垒拢。 一個(gè)月前我還...
    沈念sama閱讀 49,378評(píng)論 3 379
  • 正文 我出身青樓旬迹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親求类。 傳聞我的和親對(duì)象是個(gè)殘疾皇子奔垦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容