1. 摘要
本文嘗試解釋為什么在深度的神經(jīng)網(wǎng)絡(luò)中隨機(jī)初始化會(huì)讓梯度下降表現(xiàn)很差贝室,并且在此基礎(chǔ)上來幫助設(shè)計(jì)更好的算法。
作者發(fā)現(xiàn) sigmoid 函數(shù)不適合深度網(wǎng)絡(luò)仿吞,在這種情況下公壤,隨機(jī)初始化參數(shù)會(huì)讓較深的隱藏層陷入到飽和區(qū)域隙咸。
作者提出了一個(gè)新的參數(shù)初始化方法,稱之為 Xavier 初始化,來幫助深度網(wǎng)絡(luò)更快地收斂昨登。
2. 激活函數(shù)的作用以及訓(xùn)練過程中的飽和現(xiàn)象
2.1. 三種激活函數(shù)
2.2. Sigmoid 函數(shù)
通過觀察訓(xùn)練過程中每一個(gè)隱藏層激活值的均值和方差,我們可以發(fā)現(xiàn)第 4 層的激活值很快就進(jìn)入到了飽和區(qū)域抛杨,非常接近于 0遣钳。由于 Sigmoid 函數(shù)在接近于 0 的時(shí)候梯度很小,這樣的話反向傳播過程就會(huì)學(xué)習(xí)得很慢傅物,雖然最終網(wǎng)絡(luò)會(huì)慢慢離開飽和區(qū)域夯辖,但往往學(xué)到的解也不是最優(yōu)的。
2.3. Tanh 函數(shù)和 Softsign 函數(shù)
由于 Tanh 函數(shù)和 Softsign 函數(shù)接近于 0 的時(shí)候梯度近似線性董饰,所以它們不會(huì)遇到像 Sigmoid 上面的情況蒿褂。但是啄栓,采用 Tanh 作為激活函數(shù)時(shí)昙楚,從第一層到第四層的激活值卻也會(huì)在訓(xùn)練過程中依次進(jìn)入飽和區(qū)域诈嘿。而采用 Softsign 的話永淌,所有層都逐漸進(jìn)入飽和區(qū)域遂蛀,但這個(gè)過程會(huì)更慢一點(diǎn)李滴。
在訓(xùn)練完成后谆扎,我們可以發(fā)現(xiàn)以 Tanh 作為激活函數(shù)堂湖,最終每層的激活值大多落在飽和區(qū)域和 0 附近;以 Softsign 作為激活函數(shù)伺糠,最終每層的激活值大多落在 (-0.6, -0.8) 和 (0.6, 0.8) 區(qū)間训桶。
3. 梯度以及它們的傳播
3.1. 損失函數(shù)
作者發(fā)現(xiàn)采用似然損失比用二次的均方誤差要好舵揭,因?yàn)椴捎盟迫粨p失不容易陷入到平緩區(qū)域午绳,不會(huì)讓訓(xùn)練過程變得很慢箱叁。如下圖所示,可以看到采用二次損失的損失函數(shù)有很多平緩區(qū)域抬伺。
3.2. Xavier 初始化
針對(duì)一個(gè)對(duì)稱的激活函數(shù)灾梦,并且其在原點(diǎn)處的導(dǎo)數(shù)為 1若河,那么我們有:
根據(jù)以上定義拉鹃,可以得到:
假設(shè)初始時(shí)我們位于線性區(qū)域膏燕,權(quán)重之間互相獨(dú)立坝辫,并且輸入的特征具有一樣的方差 近忙,第 層具有 個(gè)神經(jīng)元,那么有:
可參考 Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification 對(duì)比進(jìn)行分析。
在前向過程中击纬,為了保持信息更振,讓每一層都具有一樣的方差,即:
那么我們可以得到:
同樣,考慮梯度的反向傳播姊途,我們可以得到:
為了保證每一層梯度的方差一致捷兰,也即:
我們有:
若同時(shí)考慮到前向傳播的反向傳播的約束贡茅,我們想要:
對(duì)此,我們用下面的方法來初始化參數(shù)
其中妖泄, 代表均勻分布蹈胡,其方差為
正好符合我們的預(yù)期审残。
可以看到搅轿,在前向傳播過程中璧坟,舊的初始化方法,越靠后的層激活值越容易陷入到 0 區(qū)域幻工,而采用新的初始化方法后,每一層的激活值分布基本相同当悔。
在反向傳播過程中,舊的初始化方法胳挎,越靠前的層梯度值越容易陷入到 0 區(qū)域慕爬,而采用新的初始化方法后,每一層的梯度分布基本相同磅甩。