[深度学习] 面试常见问题+解析汇总
什么是深度學(xué)習(xí),與傳統(tǒng)機(jī)器學(xué)習(xí)算法的區(qū)別?
(1)傳統(tǒng)機(jī)器學(xué)習(xí)算法,在一開始,性能(識(shí)別率)會(huì)隨著數(shù)據(jù)的增加而增加,但一段時(shí)間后,它的性能會(huì)進(jìn)入平臺(tái)期。這些模型無法處理海量數(shù)據(jù)。
(2)最近20年來,人類建立了數(shù)字王國,使得我們?cè)陔娔X、網(wǎng)站、手機(jī)上的活動(dòng),都制造大量數(shù)據(jù)。便宜的相機(jī)、傳感器,也產(chǎn)生大量數(shù)據(jù)。
(3)不同規(guī)模的網(wǎng)絡(luò),取得的性能也會(huì)有不同(具體如下)。
深度學(xué)習(xí)是一種特殊的機(jī)器學(xué)習(xí),它將現(xiàn)實(shí)世界表示為嵌套的層次概念體系(由較簡單概念間的聯(lián)系定義復(fù)雜概念,從一般抽象概括到高級(jí)抽象表示),從而獲得強(qiáng)大的性能與靈活性。
Deep learning is a subset of machine learning that is concerned with neural networks: how to use backpropagation and certain principles from neuroscience to more accurately model large sets of unlabelled or semi-structured data.
In that sense, deep learning represents an unsupervised learning algorithm that learns representations of data through the use of neural nets.
?
?
為什么深層神經(jīng)網(wǎng)絡(luò)難以訓(xùn)練?
1、梯度消失。梯度消失是指通過隱藏層從后向前看,梯度會(huì)變得越來越小,說明前面層的學(xué)習(xí)會(huì)顯著慢于后面層的學(xué)習(xí),所以學(xué)習(xí)會(huì)卡主,除非梯度變大。
梯度消失的原因:學(xué)習(xí)率的大小,網(wǎng)絡(luò)參數(shù)的初始化,激活函數(shù)的邊緣效應(yīng)等。在深層神經(jīng)網(wǎng)絡(luò)中,每一個(gè)神經(jīng)元計(jì)算得到的梯度都會(huì)傳遞給前一層,較淺層的神經(jīng)元接收到的梯度受到之前所有層梯度的影響。如果計(jì)算得到的梯度值非常小,隨著層數(shù)增多,求出的梯度更新信息將會(huì)以指數(shù)形式衰減,就會(huì)發(fā)生梯度消失。
2、梯度爆炸。在深度網(wǎng)絡(luò)或循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)等網(wǎng)絡(luò)結(jié)構(gòu)中,梯度可在網(wǎng)絡(luò)更新的過程中不斷累積,變成非常大的梯度,導(dǎo)致網(wǎng)絡(luò)權(quán)重值的大幅更新,使得網(wǎng)絡(luò)不穩(wěn)定;在極端情況下,權(quán)重值甚至?xí)绯?#xff0c;變?yōu)镹an值,再也無法更新。
3、權(quán)重矩陣的退化導(dǎo)致模型的有效自由度減少。
參數(shù)空間中學(xué)習(xí)的退化速度減慢,導(dǎo)致減少了模型的有效維數(shù),網(wǎng)絡(luò)的可用自由度對(duì)學(xué)習(xí)中梯度范數(shù)的貢獻(xiàn)不均衡,隨著相乘矩陣的數(shù)量(即網(wǎng)絡(luò)深度)的增加,矩陣的乘積變得越來越退化。在有硬飽和邊界的非線性網(wǎng)絡(luò)中(例如 ReLU 網(wǎng)絡(luò)),隨著深度增加,退化過程會(huì)變得越來越快。
神經(jīng)網(wǎng)絡(luò)模型優(yōu)化的常用方案
1、增加(減少)隱藏層的復(fù)雜度,如增加隱藏層數(shù),調(diào)整隱藏層的神經(jīng)元個(gè)數(shù),或者在隱藏層使用更加復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),如CNN、RNN、LSTM、GRU或者增加Attention層等等;
2、添加Dropout層,使用Dropout的原理優(yōu)化網(wǎng)絡(luò)參數(shù),防止過擬合;
3、嘗試不同的優(yōu)化器,常用的優(yōu)化器包括SGD、Adam、RMSprop(動(dòng)量相關(guān));
4、增加迭代次數(shù),一般為了快速檢驗(yàn)?zāi)P托Ч?xùn)練次數(shù)比較少,優(yōu)化過程中可以增加訓(xùn)練次數(shù);
5、調(diào)整優(yōu)化器的學(xué)習(xí)率,學(xué)習(xí)率太小會(huì)造成模型收斂速度下降,還有可能求出的是局部最優(yōu)解,訓(xùn)練模型時(shí)的損失函數(shù)下降慢;學(xué)習(xí)率過大會(huì)引起模型無法到達(dá)最優(yōu)解,在最優(yōu)解附近來回跳轉(zhuǎn),但是一般情況下學(xué)習(xí)率并不是一成不變的,而是隨著模型的訓(xùn)練在優(yōu)化;
6、增加批處理的大小,采用批處理的方式訓(xùn)練數(shù)據(jù)時(shí)每個(gè)batch的數(shù)據(jù)進(jìn)行一次反向傳播,更新參數(shù),所以每個(gè)batch的數(shù)據(jù)分布對(duì)模型訓(xùn)練有著一定的影響,調(diào)整batch_size的大小,對(duì)模型優(yōu)化有一定的作用;
7、正則化,可以優(yōu)化模型太過復(fù)雜而引起運(yùn)行時(shí)間過長的問題,也可以在一定程度上防止模型過擬合。(過擬合也就是模型把訓(xùn)練數(shù)據(jù)的內(nèi)部關(guān)系都記下來了,在訓(xùn)練集損失函數(shù)很小,但是在測試集上損失函數(shù)開始增大,也就是在測試集上的效果開始下降)
?
激活函數(shù)
1. 激活函數(shù)有哪些性質(zhì)
2. 為什么需要非線性激活函數(shù)
3. 如何選擇激活函數(shù)
3. ReLu激活函數(shù)的優(yōu)點(diǎn)
稀疏激活性:從信號(hào)方面來看,即神經(jīng)元同時(shí)只對(duì)輸入信號(hào)的少部分選擇性響應(yīng),大量信號(hào)被刻意的屏蔽了,這樣可以提高學(xué)習(xí)的精度,更好更快地提取稀疏特征。當(dāng) ?x<0 ?時(shí),ReLU 硬飽和,而當(dāng) x>0 ?時(shí),則不存在飽和問題。ReLU 能夠在 ?x>0 ?時(shí)保持梯度不衰減,從而緩解梯度消失問題。
4. 為什么Tanh收斂速度比Sigmoid快?
由上面兩個(gè)公式可知tanh(x)梯度消失的問題比sigmoid輕,所以Tanh收斂速度比Sigmoid快。
?
為什么在神經(jīng)網(wǎng)絡(luò)中,ReLU是比Sigmoid更好、更常用的激活函數(shù)?
??
?
交叉熵?fù)p失函數(shù)及其求導(dǎo)推導(dǎo)
定義:
將交叉熵看做是代價(jià)函數(shù)有兩點(diǎn)原因。
第?,它是?負(fù)的, C > 0。可以看出:式子中的求和中的所有獨(dú)?的項(xiàng)都是負(fù)數(shù)的,因?yàn)閷?duì)數(shù)函數(shù)的定義域是 (0,1),并且求和前?有?個(gè)負(fù)號(hào),所以結(jié)果是非負(fù)。
第?,如果對(duì)于所有的訓(xùn)練輸? x,神經(jīng)元實(shí)際的輸出接近?標(biāo)值,那么交叉熵將接近 0。實(shí)際輸出和?標(biāo)輸出之間的差距越?,最終的交叉熵的值就越低了。(這里假設(shè)輸出結(jié)果不是0,就是1,實(shí)際分類也是這樣的)
交叉熵代價(jià)函數(shù)有?個(gè)??次代價(jià)函數(shù)更好的特性就是它避免了學(xué)習(xí)速度下降的問題。
交叉熵函數(shù)關(guān)于權(quán)重的偏導(dǎo)數(shù):
化簡后得到:
可以看到圈中學(xué)習(xí)的速度受到??,也就是輸出中的誤差的控制。更?的誤差,更快的學(xué)習(xí)速度,特別地,這個(gè)代價(jià)函數(shù)還避免了像在?次代價(jià)函數(shù)中類似?程中??導(dǎo)致的學(xué)習(xí)緩慢。當(dāng)我們使?交叉熵的時(shí)候,?
?被約掉了,所以我們不再需要關(guān)?它是不是變得很?。這種約除就是交叉熵帶來的特效。??
Batch_Size
1. 為什么需要 Batch_Size?
Batch的選擇,首先決定的是下降的方向。
如果數(shù)據(jù)集比較小,可采用全數(shù)據(jù)集的形式,好處是:
由全數(shù)據(jù)集確定的方向能夠更好地代表樣本總體,從而更準(zhǔn)確地朝向極值所在的方向。
由于不同權(quán)重的梯度值差別巨大,因此選取一個(gè)全局的學(xué)習(xí)率很困難。Full Batch Learning 可以使用 Rprop 只基于梯度符號(hào)并且針對(duì)性單獨(dú)更新各權(quán)值。
對(duì)于更大的數(shù)據(jù)集,假如采用全數(shù)據(jù)集的形式,壞處是:
隨著數(shù)據(jù)集的海量增長和內(nèi)存限制,一次性載入所有的數(shù)據(jù)進(jìn)來變得越來越不可行。
以 Rprop 的方式迭代,會(huì)由于各個(gè) Batch 之間的采樣差異性,各次梯度修正值相互抵消,無法修正。這才有了后來 RMSProp 的妥協(xié)方案。
2. Batch_Size 值的選擇
假如每次只訓(xùn)練一個(gè)樣本,即 Batch_Size = 1。線性神經(jīng)元在均方誤差代價(jià)函數(shù)的錯(cuò)誤面是一個(gè)拋物面,橫截面是橢圓。對(duì)于多層神經(jīng)元、非線性網(wǎng)絡(luò),在局部依然近似是拋物面。此時(shí),每次修正方向以各自樣本的梯度方向修正,橫沖直撞各自為政,難以達(dá)到收斂。
既然 Batch_Size 為全數(shù)據(jù)集或者Batch_Size = 1都有各自缺點(diǎn),可不可以選擇一個(gè)適中的Batch_Size值呢?
此時(shí),可采用批梯度下降法(Mini-batches Learning)。因?yàn)槿绻麛?shù)據(jù)集足夠充分,那么用一半(甚至少得多)的數(shù)據(jù)訓(xùn)練算出來的梯度與用全部數(shù)據(jù)訓(xùn)練出來的梯度是幾乎一樣的。
3. 在合理范圍內(nèi),增大Batch_Size有何好處?
內(nèi)存利用率提高了,大矩陣乘法的并行化效率提高。
跑完一次 epoch(全數(shù)據(jù)集)所需的迭代次數(shù)減少,對(duì)于相同數(shù)據(jù)量的處理速度進(jìn)一步加快。
在一定范圍內(nèi),一般來說 Batch_Size 越大,其確定的下降方向越準(zhǔn),引起訓(xùn)練震蕩越小。
4. 盲目增大 Batch_Size 有何壞處?
內(nèi)存利用率提高了,但是內(nèi)存容量可能撐不住了。
跑完一次 epoch(全數(shù)據(jù)集)所需的迭代次數(shù)減少,要想達(dá)到相同的精度,其所花費(fèi)的時(shí)間大大增加了,從而對(duì)參數(shù)的修正也就顯得更加緩慢。
Batch_Size 增大到一定程度,其確定的下降方向已經(jīng)基本不再變化。
歸一化
1. 為什么要?dú)w一化?
避免神經(jīng)元飽和。就是當(dāng)神經(jīng)元的激活在接近 0 或者 1 時(shí)會(huì)飽和,在這些區(qū)域,梯度幾乎為 0,這樣,在反向傳播過程中,局部梯度就會(huì)接近 0,這會(huì)有效地“殺死”梯度。
保證輸出數(shù)據(jù)中數(shù)值小的不被吞食。
加快收斂。數(shù)據(jù)中常存在奇異樣本數(shù)據(jù),奇異樣本數(shù)據(jù)存在所引起的網(wǎng)絡(luò)訓(xùn)練時(shí)間增加,并可能引起網(wǎng)絡(luò)無法收斂,為了避免出現(xiàn)這種情況及后面數(shù)據(jù)處理的方便,加快網(wǎng)絡(luò)學(xué)習(xí)速度,可以對(duì)輸入信號(hào)進(jìn)行歸一化,使得所有樣本的輸入信號(hào)其均值接近于 0 或與其均方差相比很小。
2. 為什么歸一化能提高求解最優(yōu)解速度
?
上圖是代表數(shù)據(jù)是否歸一化的最優(yōu)解尋解過程(圓圈可以理解為等高線)。左圖表示未經(jīng)歸一化操作的尋解過程,右圖表示經(jīng)過歸一化后的尋解過程。
當(dāng)使用梯度下降法尋求最優(yōu)解時(shí),很有可能走“之字型”路線(垂直等高線走),從而導(dǎo)致需要迭代很多次才能收斂;而右圖對(duì)兩個(gè)原始特征進(jìn)行了歸一化,其對(duì)應(yīng)的等高線顯得很圓,在梯度下降進(jìn)行求解時(shí)能較快的收斂。
因此如果機(jī)器學(xué)習(xí)模型使用梯度下降法求最優(yōu)解時(shí),歸一化往往非常有必要,否則很難收斂甚至不能收斂。
3. 歸一化有哪些類型?
1、線性歸一化
適用范圍:比較適用在數(shù)值比較集中的情況。
缺點(diǎn):如果 max 和 min 不穩(wěn)定,很容易使得歸一化結(jié)果不穩(wěn)定,使得后續(xù)使用效果也不穩(wěn)定。
2、標(biāo)準(zhǔn)差歸一化
經(jīng)過處理的數(shù)據(jù)符合標(biāo)準(zhǔn)正態(tài)分布,即均值為 0,標(biāo)準(zhǔn)差為 1
3、非線性歸一化
適用范圍:經(jīng)常用在數(shù)據(jù)分化比較大的場景,有些數(shù)值很大,有些很小。通過一些數(shù)學(xué)函數(shù),將原始值進(jìn)行映射。該方法包括 log、指數(shù),正切等。
4. 批歸一化(Batch Normalization)算法的優(yōu)點(diǎn)
批歸一化(BN)就是在神經(jīng)網(wǎng)絡(luò)中間層也進(jìn)行歸一化處理。
優(yōu)點(diǎn):
減少了人為選擇參數(shù)。在某些情況下可以取消 dropout 和 L2 正則項(xiàng)參數(shù),或者采取更小的 L2 正則項(xiàng)約束參數(shù);
減少了對(duì)學(xué)習(xí)率的要求。現(xiàn)在我們可以使用初始很大的學(xué)習(xí)率或者選擇了較小的學(xué)習(xí)率,算法也能夠快速訓(xùn)練收斂;
可以不再使用局部響應(yīng)歸一化。BN 本身就是歸一化網(wǎng)絡(luò)(局部響應(yīng)歸一化在 AlexNet 網(wǎng)絡(luò)中存在)
破壞原來的數(shù)據(jù)分布,一定程度上緩解過擬合(防止每批訓(xùn)練中某一個(gè)樣本經(jīng)常被挑選到,文獻(xiàn)說這個(gè)可以提高 1% 的精度)。
減少梯度消失,加快收斂速度,提高訓(xùn)練精度。
?
訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)很復(fù)雜,因?yàn)樵谟?xùn)練過程中,隨著前幾層輸入的參數(shù)不斷變化,每層輸入的分布也隨之變化。一種方法是將每層輸入規(guī)范化,輸出函數(shù)均值為0,標(biāo)準(zhǔn)差為1。對(duì)每一層的每個(gè)小批量輸入都采用上述方式進(jìn)行規(guī)范化(計(jì)算每個(gè)小批量輸入的均值和方差,然后標(biāo)準(zhǔn)化)。這和神經(jīng)網(wǎng)絡(luò)的輸入的規(guī)范化類似。
批量標(biāo)準(zhǔn)化的好處
對(duì)輸入進(jìn)行規(guī)范化有助于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)。但神經(jīng)網(wǎng)絡(luò)不過是一系列的層,每層的輸出又成為下一層的輸入。也就是說,我們可以將其中每一層視作子網(wǎng)絡(luò)的第一層。把神經(jīng)網(wǎng)絡(luò)想象成一系列互相傳遞信息的網(wǎng)絡(luò)結(jié)構(gòu),因此在激活函數(shù)作用于輸出之前,先將每一層輸出規(guī)范化,再將其傳遞到下一層(子網(wǎng)絡(luò))。
?
5. Batch Normalization和Group Normalization的比較
Batch Normalization:可以讓各種網(wǎng)絡(luò)并行訓(xùn)練。但是維度進(jìn)行歸一化會(huì)帶來一些問題-----批量統(tǒng)計(jì)估算不準(zhǔn)確導(dǎo)致批量變小時(shí),BN 的誤差會(huì)迅速增加。在訓(xùn)練大型網(wǎng)絡(luò)和將特征轉(zhuǎn)移到計(jì)算機(jī)視覺任務(wù)中(包括檢測、分割和視頻),內(nèi)存消耗限制了只能使用小批量的 BN。
Group Normalization:GN將通道分組,并且每組內(nèi)計(jì)算歸一化的均值和方差。GN的計(jì)算與批量大小無關(guān),并且其準(zhǔn)確度在各種批量大小下都很穩(wěn)定。
6. Weight Normalization和Batch Normalization比較
兩者都屬于參數(shù)重寫的方式,只是采用的方式不同。
Weight Normalization 是對(duì)網(wǎng)絡(luò)權(quán)值 W 進(jìn)行 normalization;Batch Normalization 是對(duì)網(wǎng)絡(luò)某一層輸入數(shù)據(jù)進(jìn)行 normalization。
Weight Normalization相比Batch Normalization有以下三點(diǎn)優(yōu)勢:
Weight Normalization 通過重寫深度學(xué)習(xí)網(wǎng)絡(luò)的權(quán)重W的方式來加速深度學(xué)習(xí)網(wǎng)絡(luò)參數(shù)收斂,沒有引入 minbatch 的依賴,適用于 RNN(LSTM)網(wǎng)絡(luò)(Batch Normalization 不能直接用于RNN,進(jìn)行 normalization 操作,原因在于:1) RNN 處理的 Sequence 是變長的;2) RNN 是基于 time step 計(jì)算,如果直接使用 Batch Normalization 處理,需要保存每個(gè) time step 下,mini btach 的均值和方差,效率低且占內(nèi)存)。
Batch Normalization 基于一個(gè) mini batch 的數(shù)據(jù)計(jì)算均值和方差,而不是基于整個(gè) Training set 來做,相當(dāng)于進(jìn)行梯度計(jì)算式引入噪聲。因此,Batch Normalization 不適用于對(duì)噪聲敏感的強(qiáng)化學(xué)習(xí)、生成模型(Generative model:GAN,VAE)使用。相反,Weight Normalization 對(duì)通過標(biāo)量 g 和向量 v ?對(duì)權(quán)重 ?W ?進(jìn)行重寫,重寫向量 v 是固定的,因此,基于 Weight Normalization 的 Normalization 可以看做比 Batch Normalization 引入更少的噪聲。
不需要額外的存儲(chǔ)空間來保存 mini batch 的均值和方差,同時(shí)實(shí)現(xiàn) Weight Normalization 時(shí),對(duì)深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行正向信號(hào)傳播和反向梯度計(jì)算帶來的額外計(jì)算開銷也很小。因此,要比采用 Batch Normalization 進(jìn)行 normalization 操作時(shí),速度快。但是 Weight Normalization 不具備 Batch Normalization 把網(wǎng)絡(luò)每一層的輸出 Y 固定在一個(gè)變化范圍的作用。因此,采用 Weight Normalization 進(jìn)行 Normalization 時(shí)需要特別注意參數(shù)初始值的選擇。
7.? Batch Normalization在什么時(shí)候用比較合適?
在CNN中,BN應(yīng)作用在非線性映射前。在神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí)遇到收斂速度很慢,或梯度爆炸等無法訓(xùn)練的狀況時(shí)可以嘗試BN來解決。另外,在一般使用情況下也可以加入BN來加快訓(xùn)練速度,提高模型精度。
BN比較適用的場景是:每個(gè)mini-batch比較大,數(shù)據(jù)分布比較接近。在進(jìn)行訓(xùn)練之前,要做好充分的shuffle,否則效果會(huì)差很多。另外,由于BN需要在運(yùn)行過程中統(tǒng)計(jì)每個(gè)mini-batch的一階統(tǒng)計(jì)量和二階統(tǒng)計(jì)量,因此不適用于動(dòng)態(tài)的網(wǎng)絡(luò)結(jié)構(gòu)和RNN網(wǎng)絡(luò)。
???
學(xué)習(xí)率衰減常用參數(shù)有哪些
?
十 正則化
1. 為什么要正則化
深度學(xué)習(xí)可能存在過擬合問題-----高方差,有兩個(gè)解決方法,一個(gè)是正則化,另一個(gè)是準(zhǔn)備更多的數(shù)據(jù),這是非常可靠的方法,但你可能無法時(shí)時(shí)刻刻準(zhǔn)備足夠多的訓(xùn)練數(shù)據(jù)或者獲取更多數(shù)據(jù)的成本很高,但正則化通常有助于避免過擬合或減少你的網(wǎng)絡(luò)誤差。
?
左圖是高偏差,右圖是高方差,中間是Just Right。
2. 理解dropout正則化
不要依賴于任何一個(gè)特征,因?yàn)樵搯卧妮斎肟赡茈S時(shí)被清除,因此該單元通過這種方式傳播下去,并為單元的四個(gè)輸入增加一點(diǎn)權(quán)重,通過傳播所有權(quán)重,dropout將產(chǎn)生收縮權(quán)重的平方范數(shù)的效果,和之前講的L2正則化類似;實(shí)施dropout的結(jié)果實(shí)它會(huì)壓縮權(quán)重,并完成一些預(yù)防過擬合的外層正則化;L2對(duì)不同權(quán)重的衰減是不同的,它取決于激活函數(shù)倍增的大小。
3. dropout率的選擇
1、經(jīng)過交叉驗(yàn)證,隱含節(jié)點(diǎn)dropout率等于0.5的時(shí)候效果最好,原因是0.5的時(shí)候dropout隨機(jī)生成的網(wǎng)絡(luò)結(jié)構(gòu)最多。
2、dropout也可以被用作一種添加噪聲的方法,直接對(duì)input進(jìn)行操作、輸入層設(shè)為更更接近 1 的數(shù)。使得輸入變化不會(huì)太大(0.8)
3、對(duì)參數(shù)w的訓(xùn)練進(jìn)行球形限制(max-normalization),對(duì) dropout 的訓(xùn)練非常有用。
4、使用pretrain方法也可以幫助dropout訓(xùn)練參數(shù),在使用dropout時(shí),要將所有參數(shù)都乘以1/p
4. dropout有什么缺點(diǎn)
dropout一大缺點(diǎn)就是代價(jià)函數(shù)J不再被明確定義,每次迭代,都會(huì)隨機(jī)移除一些節(jié)點(diǎn),如果再三檢查梯度下降的性能,實(shí)際上是很難進(jìn)行復(fù)查的。定義明確的代價(jià)函數(shù)J每次迭代后都會(huì)下降,因?yàn)槲覀兯鶅?yōu)化的代價(jià)函數(shù)J實(shí)際上并沒有明確定義,或者說在某種程度上很難計(jì)算,所以我們失去了調(diào)試工具來繪制這樣的圖片。我通常會(huì)關(guān)閉dropout函數(shù),將keep-prob的值設(shè)為1,運(yùn)行代碼,確保J函數(shù)單調(diào)遞減。然后打開dropout函數(shù),希望在dropout過程中,代碼并未引入bug。我覺得你也可以嘗試其它方法,雖然我們并沒有關(guān)于這些方法性能的數(shù)據(jù)統(tǒng)計(jì),但你可以把它們與dropout方法一起使用。
十一 如何理解 Internal Covariate Shift?
深度神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練為什么會(huì)很困難?其中一個(gè)重要的原因是,深度神經(jīng)網(wǎng)絡(luò)涉及到很多層的疊加,而每一層的參數(shù)更新會(huì)導(dǎo)致上層的輸入數(shù)據(jù)分布發(fā)生變化,通過層層疊加,高層的輸入分布變化會(huì)非常劇烈,這就使得高層需要不斷去重新適應(yīng)底層的參數(shù)更新。為了訓(xùn)好模型,我們需要非常謹(jǐn)慎地去設(shè)定學(xué)習(xí)率、初始化權(quán)重、以及盡可能細(xì)致的參數(shù)更新策略。
oogle 將這一現(xiàn)象總結(jié)為 Internal Covariate Shift,簡稱 ICS。什么是 ICS 呢?
大家都知道在統(tǒng)計(jì)機(jī)器學(xué)習(xí)中的一個(gè)經(jīng)典假設(shè)是“源空間(source domain)和目標(biāo)空間(target domain)的數(shù)據(jù)分布(distribution)是一致的”。如果不一致,那么就出現(xiàn)了新的機(jī)器學(xué)習(xí)問題,如 transfer learning / domain adaptation 等。而 covariate shift 就是分布不一致假設(shè)之下的一個(gè)分支問題,它是指源空間和目標(biāo)空間的條件概率是一致的,但是其邊緣概率不同。
大家細(xì)想便會(huì)發(fā)現(xiàn),的確,對(duì)于神經(jīng)網(wǎng)絡(luò)的各層輸出,由于它們經(jīng)過了層內(nèi)操作作用,其分布顯然與各層對(duì)應(yīng)的輸入信號(hào)分布不同,而且差異會(huì)隨著網(wǎng)絡(luò)深度增大而增大,可是它們所能“指示”的樣本標(biāo)記(label)仍然是不變的,這便符合了covariate shift的定義。由于是對(duì)層間信號(hào)的分析,也即是“internal”的來由。
那么ICS會(huì)導(dǎo)致什么問題?
簡而言之,每個(gè)神經(jīng)元的輸入數(shù)據(jù)不再是“獨(dú)立同分布”。
其一,上層參數(shù)需要不斷適應(yīng)新的輸入數(shù)據(jù)分布,降低學(xué)習(xí)速度。
其二,下層輸入的變化可能趨向于變大或者變小,導(dǎo)致上層落入飽和區(qū),使得學(xué)習(xí)過早停止。
其三,每層的更新都會(huì)影響到其它層,因此每層的參數(shù)更新策略需要盡可能的謹(jǐn)慎。
?
?
?
?
?
參考: 算法崗面試:Deep Learning 27類常見問題+解析匯總
總結(jié)
以上是生活随笔為你收集整理的[深度学习] 面试常见问题+解析汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三级能效空调一小时耗电情况如何(演三级片
- 下一篇: 永远的七日之都瞬攻略有哪些(如何评价电影