4.神經(jīng)網(wǎng)絡(luò)特定問題
沒有任何經(jīng)驗,訓(xùn)練神經(jīng)網(wǎng)絡(luò)來實現(xiàn)合理的準確度會變得非常有挑戰(zhàn)。人們通過幾十年的實驗和研究癣蟋,可以訓(xùn)練處非常大的神經(jīng)網(wǎng)絡(luò)剥险,并且有很多的tricks.
4.1 由于梯度消失或梯度爆炸導(dǎo)致收斂比較慢
已知的神經(jīng)網(wǎng)絡(luò)訓(xùn)練的困難時梯度消失或梯度爆炸聪蘸,通常的描述梯度消失或梯度爆炸是來源于信號處理的視角澡为。梯度下降可以視為反饋糾錯機制迅脐,最外層輸出將會傳遞回之前的層,并通過權(quán)重調(diào)整來降低誤差。
當網(wǎng)絡(luò)層數(shù)較多時剩失,權(quán)重的乘積會使得乘積的結(jié)果越來越大或越來越小。乘積到無窮大或0 時的情況就是梯度爆炸和梯度消失干厚。
當w再0-0.8時會出現(xiàn)梯度消失礁蔗,大于1.2時會出現(xiàn)梯度爆炸。
通常來說梯度消失或爆炸會導(dǎo)致很大的condation number 會導(dǎo)致選擇合適的步長 變得困難设拟。
4.2 精細的初始化
接下來會討論在訓(xùn)練神經(jīng)網(wǎng)絡(luò)過程中三個主要的技巧慨仿。第一個是合理的初始化。
Naive initialization:
由于比較好的區(qū)域難以獲得纳胧,比較簡單的初始化方式包括以下幾種镰吆。
- 所有值都初始化為0,
- 選擇是只讓其中的一部分點設(shè)置為非0點
- 讓權(quán)重服從確定的隨機分布
上述的幾種初始化方式不一定總是有用跑慕,即使對某種特定的方式有用鼎姊,也不一定對所有的方式有用。
LeCun initialization
對使用sigmoid 激活函數(shù)相赁,使用初始化采用均值為0相寇,方差為 ,也就是方差為1/fan-in, fan-in 是傳入weight的節(jié)點數(shù)。
理論推導(dǎo)如下:考慮一個線性神經(jīng)元有m個input 分別是x1,x2...xm, 假設(shè)input xi 均值為0 方差為1.那么y的均值為0 钮科,方差為
唤衫。為了滿足y的方差也為1,選擇權(quán)重w的方差為1/m 期望為0绵脯。 上述的推導(dǎo)適用于現(xiàn)象的激活函數(shù)佳励,如果使用tanh的激活函數(shù)。tanh 在0附近和線性函數(shù)非常接近蛆挫。因此
的方差會近似等于1赃承。
Pre-training and Xavier initialization
Xavier initialization (or Glorot initialization )
或者有些時候被寫作
fan-in和fan-out是輸入和輸出的維度。
Xavier initialization 可以推導(dǎo)如下:
對于前向傳播悴侵,根據(jù)LeCun initialization 方差可以設(shè)置為1/fan-in瞧剖。對于線性網(wǎng)絡(luò)反向傳播。 可免。方差可以設(shè)置為1/fan-out抓于。為了平衡正向傳播和反向傳播。最終的方差為2/(fan-in+fan-out)浇借。
Kaiming initialization
LeCun and Xacier initialization 是用于sigmoid activation functions捉撮。在接近0的地方梯度接近線性。 但是對于ReLu 這種激活函數(shù)妇垢,使用前面的兩種初始化方法就不說很合適巾遭。ReLu函數(shù)相當于把信號切了一半肉康,因次有人提出了新的初始化方法
Kaiming initialization 沒有像Xavier initialization 一樣平衡信號的輸入和輸出。但是最近有人提議集合平均的方法來初始化方差 ,其中c是常數(shù)灼舍。
Infinite width networks with general non-linear activations
Kaiming 初始化方法不能直接應(yīng)用到其他的非線性激活函數(shù)中迎罗。
Finite width networks.
Dynamical isometry.
Dynamical isometry for other networks.
Computing spectrum.
4.3 Normalization 方法
第二種方法是在算法的過程中進行normalization。這種方法可以視為初始化方法的擴展片仿,一種表達的方式是batch normalization纹安。這種方式現(xiàn)在已經(jīng)成為標準的技術(shù)。
數(shù)據(jù)準備:對于線性回歸砂豌,通常對數(shù)據(jù)進行標準化厢岂。使的特征的分布均值為0,方差為1阳距。來減少hessian matrix 的條件數(shù)塔粒。
Motivation of BatchNorm layerwise normalization
在比較深的神經(jīng)網(wǎng)絡(luò)中,希望每一層的網(wǎng)絡(luò)都服從標準正態(tài)分布筐摘。未來實現(xiàn)這個目標卒茬。比較naive的方法是在更新完梯度之后normalize matrix。
Essence of BatchNorm
Add BN layers to original neural network咖熟。原始的BatchNorm paper生成 BatchNorm 減少 internal covariate shift圃酵。但是新的觀點認為BatchNorm 減少了Lipschitz constants.有人認為BatchNorm 會允許更大的學習率。不使用BatchNorm的話馍管,會使得奇藝值更大郭赐。
Other normalization methods
對于Batch normalization.對每個mini-batch 規(guī)范化。但是如果mini-batches沒有相似的統(tǒng)計結(jié)果确沸。那么BN的效果不會很好捌锭。研究者提出了其他normalization方法。例如weight normalization, layer normalization, instance normalization, group normalization and spectral normalization 和switchable normalization.
這些normalization 方法可以分為兩大類罗捎。第一類 是對神經(jīng)網(wǎng)絡(luò)的輸出立即進行normalization.batchNorm normalize the rows. Layer normalization normalized the columns. Group normalization normalizes sub matrix that consists of a few columns and a few rows.
第二類是直接normalize weight metrics.
4.4 改變網(wǎng)絡(luò)結(jié)構(gòu)
第三種方式是改變網(wǎng)絡(luò)結(jié)果观谦。在2014年人們意識到網(wǎng)絡(luò)網(wǎng)絡(luò)層數(shù)越深。結(jié)果越好桨菜,因此增加網(wǎng)絡(luò)的深度變得非常普遍豁状。然而,即使使用非常好的初始化和BN雷激,訓(xùn)練超過20-30層的網(wǎng)絡(luò)也是非常困難替蔬。在VGG中,56層的網(wǎng)絡(luò)在訓(xùn)練集和測試集上的結(jié)果會比20 層的網(wǎng)絡(luò)更差屎暇。
ResNet: ResNet的關(guān)鍵是增加一個skip-connection在每層。
F 代表原始的神經(jīng)網(wǎng)絡(luò)驻粟。
ResNet 實現(xiàn)了非常大的成功根悼。
其他結(jié)構(gòu):high-way netowrks, DenseNet and ResNext. 雖然這些結(jié)構(gòu)是人類設(shè)計的凶异,但最新的成功是直接使用神經(jīng)網(wǎng)絡(luò)的自動搜索。制動搜素包括神經(jīng)網(wǎng)絡(luò)的參數(shù)挤巡,State-of art architectures EfficientNet 可以實現(xiàn)更好的結(jié)果剩彬。
ResNet 的分析和初始化
skip connections 的好處有很多,包括更好的泛化能力矿卑,更好的信號傳播和更好的優(yōu)化landscape喉恋。在ResNet中,梯度消失和梯度爆炸的情況可以避免母廷,同時dynamic isometry可以在任何激活函數(shù)和初始化方法下實現(xiàn)轻黑。
4.5 訓(xùn)練ultra-deep 神經(jīng)網(wǎng)絡(luò)
有一些很少的方法來訓(xùn)練深度神經(jīng)網(wǎng)絡(luò):
- Proper initialization,proper architecture BatchNorm.
- 非常精細的調(diào)整初始化點。
- 修正初始化方法和ResNet
除了上述方法琴昆,還有一些其他的設(shè)計來實現(xiàn)更好的神經(jīng)網(wǎng)絡(luò)氓鄙,
數(shù)據(jù)預(yù)處理方法比如數(shù)據(jù)增強,adversrial training
優(yōu)化方法如(optimization algo,learning rate schedule , learning rate dacay)
正則化方法(l2-norm,droo out)
神經(jīng)網(wǎng)絡(luò)架構(gòu)业舍,更深抖拦,更廣,連接模式舷暮,
激活函數(shù)(RELU,Leak ReLU, tanh,swish等态罪。