梯度消失/梯度爆炸(Vanishing / Exploding gradients)
訓(xùn)練神經(jīng)網(wǎng)絡(luò),尤其是深度神經(jīng)所面臨的一個(gè)問(wèn)題就是梯度消失或梯度爆炸,也就是你訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時(shí)候,導(dǎo)數(shù)或坡度有時(shí)會(huì)變得非常大,或者非常小,甚至于以指數(shù)方式變小,這加大了訓(xùn)練的難度。
這節(jié)課,你將會(huì)了解梯度消失或梯度爆炸的真正含義,以及如何更明智地選擇隨機(jī)初始化權(quán)重,從而避免這個(gè)問(wèn)題。
假設(shè)你正在訓(xùn)練這樣一個(gè)極深的神經(jīng)網(wǎng)絡(luò),為了節(jié)約幻燈片上的空間,我畫的神經(jīng)網(wǎng)絡(luò)每層只有兩個(gè)隱藏單元,但它可能含有更多,但這個(gè)神經(jīng)網(wǎng)絡(luò)會(huì)有參數(shù)W^([1]),W^([2]),W^([3])等等,直到W^([l]),為了簡(jiǎn)單起見(jiàn),假設(shè)我們使用激活函數(shù)g(z)=z,也就是線性激活函數(shù),我們忽略b,假設(shè)b^([l])=0,如果那樣的話,輸出:
如果你想考驗(yàn)我的數(shù)學(xué)水平,W^([1]) x=z^([1]),因?yàn)閎=0,所以我想z^([1])=W^([1]) x,a^([1])=g(z^([1])),因?yàn)槲覀兪褂昧艘粋€(gè)線性激活函數(shù),它等于z^([1]),所以第一項(xiàng)W^([1]) x=a^([1]),通過(guò)推理,你會(huì)得出W^([2]) W^([1]) x=a^([2]),因?yàn)閍^([2])=g(z^([2])),還等于g(W^([2]) a^([1])),可以用W^([1]) x替換a^([1]),所以這一項(xiàng)就等于a^([2]),這個(gè)就是a^([3])(W^([3]) W^([2]) W^([1]) x)。
所有這些矩陣數(shù)據(jù)傳遞的協(xié)議將給出y^而不是y的值。
假設(shè)每個(gè)權(quán)重矩陣
從技術(shù)上來(lái)講,最后一項(xiàng)有不同維度,可能它就是余下的權(quán)重矩陣,
因?yàn)槲覀兗僭O(shè)所有矩陣都等于它,它是1.5倍的單位矩陣,最后的計(jì)算結(jié)果就是^y,^y也就是等于1.5^(L-1)* x。如果對(duì)于一個(gè)深度神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)L值較大,那么y^的值也會(huì)非常大,實(shí)際上它呈指數(shù)級(jí)增長(zhǎng)的,它增長(zhǎng)的比率是1.5^L,因此對(duì)于一個(gè)深度神經(jīng)網(wǎng)絡(luò),y的值將爆炸式增長(zhǎng)。
相反的,如果權(quán)重是0.5,
它比1小,這項(xiàng)也就變成了0.5^L,
矩陣
再次忽略W^([L]),因此每個(gè)矩陣都小于1,假設(shè)x_1和x_2都是1,激活函數(shù)將變成1/2,1/2,1/4,1/4,1/8,1/8等,直到最后一項(xiàng)變成1/2^L ,所以作為自定義函數(shù),激活函數(shù)的值將以指數(shù)級(jí)下降,它是與網(wǎng)絡(luò)層數(shù)數(shù)量L相關(guān)的函數(shù),在深度網(wǎng)絡(luò)中,激活函數(shù)以指數(shù)級(jí)遞減。
我希望你得到的直觀理解是,權(quán)重W只比1略大一點(diǎn),或者說(shuō)只是比單位矩陣大一點(diǎn),深度神經(jīng)網(wǎng)絡(luò)的激活函數(shù)將爆炸式增長(zhǎng),如果W比1略小一點(diǎn),可能是
在深度神經(jīng)網(wǎng)絡(luò)中,激活函數(shù)將以指數(shù)級(jí)遞減,雖然我只是討論了激活函數(shù)以與L相關(guān)的指數(shù)級(jí)數(shù)增長(zhǎng)或下降,它也適用于與層數(shù)L相關(guān)的導(dǎo)數(shù)或梯度函數(shù),也是呈指數(shù)級(jí)增長(zhǎng)或呈指數(shù)遞減。
對(duì)于當(dāng)前的神經(jīng)網(wǎng)絡(luò),假設(shè)L=150,最近Microsoft對(duì)152層神經(jīng)網(wǎng)絡(luò)的研究取得了很大進(jìn)展,在這樣一個(gè)深度神經(jīng)網(wǎng)絡(luò)中,如果激活函數(shù)或梯度函數(shù)以與L相關(guān)的指數(shù)增長(zhǎng)或遞減,它們的值將會(huì)變得極大或極小,從而導(dǎo)致訓(xùn)練難度上升,尤其是梯度指數(shù)小于L時(shí),梯度下降算法的步長(zhǎng)會(huì)非常非常小,梯度下降算法將花費(fèi)很長(zhǎng)時(shí)間來(lái)學(xué)習(xí)。
總結(jié)一下,我們講了深度神經(jīng)網(wǎng)絡(luò)是如何產(chǎn)生梯度消失或爆炸問(wèn)題的,實(shí)際上,在很長(zhǎng)一段時(shí)間內(nèi),它曾是訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的阻力,雖然有一個(gè)不能徹底解決此問(wèn)題的解決方案,但是已在如何選擇初始化權(quán)重問(wèn)題上提供了很多幫助。