深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder
Dropout(續(xù))
除了Dropout之外,還有DropConnect。兩者原理上類似,后者只隱藏神經(jīng)元之間的連接。
總的來(lái)說(shuō),Dropout類似于機(jī)器學(xué)習(xí)中的L1、L2規(guī)則化等增加稀疏性的算法,也類似于隨機(jī)森林、模擬退火之類的增加隨機(jī)性的算法。
參考:
https://zhuanlan.zhihu.com/p/23178423
Dropout解決過(guò)擬合問(wèn)題
深度學(xué)習(xí)常用術(shù)語(yǔ)解釋
深度學(xué)習(xí)中epoch、batch size、iterations的區(qū)別
one epoch:所有的訓(xùn)練樣本完成一次Forword運(yùn)算以及一次BP運(yùn)算。
batch size:一次Forword運(yùn)算以及BP運(yùn)算中所需要的訓(xùn)練樣本數(shù)目,其實(shí)深度學(xué)習(xí)每一次參數(shù)的更新所需要損失函數(shù)并不是由一個(gè){data:label}獲得的,而是由一組數(shù)據(jù)加權(quán)得到的,這一組數(shù)據(jù)的數(shù)量就是[batch size]。當(dāng)然batch size越大,所需的內(nèi)存就越大,要量力而行。
iterations(迭代):每一次迭代都是一次權(quán)重更新,每一次權(quán)重更新需要batch size個(gè)數(shù)據(jù)進(jìn)行Forward運(yùn)算得到損失函數(shù),再BP算法更新參數(shù)。
最后可以得到一個(gè)公式one epoch = numbers of iterations = N = 訓(xùn)練樣本的數(shù)量/batch size
Vanilla
Vanilla是神經(jīng)網(wǎng)絡(luò)領(lǐng)域的常見(jiàn)詞匯,比如Vanilla Neural Networks、Vanilla CNN等。Vanilla本意是香草,在這里基本等同于raw。比如Vanilla Neural Networks實(shí)際上就是BP神經(jīng)網(wǎng)絡(luò),而Vanilla CNN實(shí)際上就是最原始的CNN。
weight decay
weight decay(權(quán)值衰減)的使用既不是為了提高收斂精確度,也不是為了提高收斂速度,其最終目的是防止過(guò)擬合。在損失函數(shù)中,weight decay是放在正則項(xiàng)(regularization)前面的一個(gè)系數(shù),正則項(xiàng)一般指示模型的復(fù)雜度,所以weight decay的作用是調(diào)節(jié)模型復(fù)雜度對(duì)損失函數(shù)的影響,若weight decay很大,則復(fù)雜的模型損失函數(shù)的值也就大。
https://mp.weixin.qq.com/s/W4d2fkiJig–PuDPM11ozA
Batch Normalization
Batch Normalization是Google提出的一種神經(jīng)網(wǎng)絡(luò)優(yōu)化技巧。
原始論文:
《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》
上圖是Hinton在2015年的講座中的例子。從中可以看出,反向傳遞的梯度大小不僅和激活函數(shù)有關(guān),也和每一層的權(quán)值大小有關(guān)。
通常來(lái)說(shuō),越靠近輸出層,由于該層網(wǎng)絡(luò)已被充分訓(xùn)練,其權(quán)值越大,反之則越小。這實(shí)際上也是梯度消失的一種原因。
更一般的,如果一層的權(quán)值顯著異于相鄰的層,從系統(tǒng)的角度出發(fā),這一層也是不穩(wěn)定的。Batch Normalization將各層的權(quán)值歸一化,從而改善了神經(jīng)網(wǎng)絡(luò)的性能。它的優(yōu)點(diǎn)有:
1.提高梯度在網(wǎng)絡(luò)中的流動(dòng)。Normalization能夠使特征全部縮放到[0,1],這樣在反向傳播時(shí)候的梯度都是在1左右,避免了梯度消失現(xiàn)象。
2.提升學(xué)習(xí)速率。歸一化后的數(shù)據(jù)能夠快速的達(dá)到收斂。
3.減少模型訓(xùn)練對(duì)初始化的依賴。
類似的概念還有Weight Normalization和Layer Normalization。
以下是它們的特點(diǎn):
Batch Normalization
對(duì)于batch size比較小的時(shí)候,效果非常不好,而batch size越大,那么效果則越好,因?yàn)槠浔举|(zhì)上是要通過(guò)mini-batch得到對(duì)整個(gè)數(shù)據(jù)集的無(wú)偏估計(jì);
在訓(xùn)練階段和推理階段的計(jì)算過(guò)程是不一樣的;
在CNN上表現(xiàn)較好,而不適用于RNN甚至LSTM
Weight Normalization
計(jì)算簡(jiǎn)單,易于理解
相比于其他兩種方法,其訓(xùn)練起來(lái)不太穩(wěn)定,非常依賴于輸入數(shù)據(jù)的分布。
Layer Normalization
不依賴于batch size的大小,即使對(duì)于batch size為1的在線學(xué)習(xí),也可以完美適應(yīng);
訓(xùn)練階段和推理階段的計(jì)算過(guò)程完全一樣。
適用于RNN或LSTM,而在CNN上表現(xiàn)一般。
參考:
http://www.cnblogs.com/neopenx/p/5211969.html
從Bayesian角度淺析Batch Normalization
https://www.zhihu.com/question/38102762
深度學(xué)習(xí)中 Batch Normalization為什么效果好?
http://jiangqh.info/Batch-Normalization%E8%AF%A6%E8%A7%A3/
Batch Normalization詳解
https://mp.weixin.qq.com/s/OAn8y_uJTgyrtS2ZCyudlg
Batch Normalization原理及其TensorFlow實(shí)現(xiàn)
https://mp.weixin.qq.com/s/EBRYlCoj9rwf0NQY0B4nhQ
Layer Normalization原理及其TensorFlow實(shí)現(xiàn)
鞍點(diǎn)
鞍點(diǎn)(Saddle point)在微分方程中,沿著某一方向是穩(wěn)定的,另一條方向是不穩(wěn)定的奇點(diǎn),叫做鞍點(diǎn)。在泛函中,既不是極大值點(diǎn)也不是極小值點(diǎn)的臨界點(diǎn),叫做鞍點(diǎn)。在矩陣中,一個(gè)數(shù)在所在行中是最大值,在所在列中是最小值,則被稱為鞍點(diǎn)。在物理上要廣泛一些,指在一個(gè)方向是極大值,另一個(gè)方向是極小值的點(diǎn)。
上圖是z=x2?y2的曲面圖,其中的原點(diǎn)就是鞍點(diǎn)。上圖形似馬鞍,故名。
LeCun和Bengio的研究表明,在high-D(高維)的情況下,局部最小會(huì)隨著維度的增加,指數(shù)型的減少,在深度學(xué)習(xí)中,一個(gè)點(diǎn)是局部最小的概率非常小,同時(shí)鞍點(diǎn)無(wú)處不在。
欠擬合和過(guò)擬合
在DL領(lǐng)域,欠擬合意味著神經(jīng)網(wǎng)絡(luò)沒(méi)有學(xué)到該學(xué)習(xí)的特征,而過(guò)擬合則意味著神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到了不該學(xué)習(xí)的特征。
在之前的描述中,我們一直強(qiáng)調(diào)過(guò)擬合的風(fēng)險(xiǎn),然而實(shí)際上,欠擬合才是DL最大的敵人。
首先,神經(jīng)網(wǎng)絡(luò)對(duì)于學(xué)習(xí)樣本數(shù)量的要求非常高,基本比淺層模型多2~3個(gè)數(shù)量級(jí),因此過(guò)擬合的風(fēng)險(xiǎn)并不太大。
其次,過(guò)擬合的危害也沒(méi)有欠擬合那么高。比如下面的場(chǎng)景:
1.對(duì)同一訓(xùn)練樣本集T1,進(jìn)行兩次訓(xùn)練,分別得到模型M1,M2。
2.使用M1,M2對(duì)同一測(cè)試樣本集T2進(jìn)行預(yù)測(cè),得到預(yù)測(cè)結(jié)果集P1,P2。
3.如果P1,P2的結(jié)論基本相反的話,則說(shuō)明發(fā)生了欠擬合現(xiàn)象。而過(guò)擬合則并沒(méi)有這么夸張的效果。
Neural Network Zoo
在繼續(xù)后續(xù)講解之前,我們首先給出常見(jiàn)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖:
上圖的原地址為:
http://www.asimovinstitute.org/neural-network-zoo/
單元結(jié)構(gòu):
層結(jié)構(gòu):
上圖的原地址為:
http://www.asimovinstitute.org/neural-network-zoo-prequel-cells-layers/
CNN
概述
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,ConvNets或CNNs)屬于神經(jīng)網(wǎng)絡(luò)的范疇,已經(jīng)在諸如圖像識(shí)別和分類的領(lǐng)域證明了其高效的能力。
CNN的開(kāi)山之作是Yann LeCun的論文:
《Gradient-Based Learning Applied to Document Recognition》
注:科學(xué)界的許多重要成果的開(kāi)山之作,其名稱往往和成果的最終名稱有一定的差距。比如LeCun的這篇文章的名稱中,就沒(méi)有CNN。類似的還有Vapnik的SVM,最早被稱為Support Vector Network。
英文不好的,推薦以下文章:
http://www.hackcv.com/index.php/archives/104/
CNN的直觀解釋
關(guān)鍵點(diǎn)
這里以最經(jīng)典的LeNet-5為例,提點(diǎn)一下CNN的要點(diǎn)。
LeNet-5的caffe模板:
https://github.com/BVLC/caffe/blob/master/examples/mnist/lenet.prototxt
卷積
在《數(shù)學(xué)狂想曲(五)》中我們討論了卷積的數(shù)學(xué)含義,結(jié)合《 圖像處理理論(一)》和《 圖像處理理論(二)》,不難看出卷積或者模板(算子),在前DL時(shí)代,幾乎是圖像處理算法的基礎(chǔ)和靈魂。為了實(shí)現(xiàn)各種目的,人們手工定義或發(fā)現(xiàn)了一系列算子。
到了DL時(shí)代,卷積仍然起著非常重要的作用。但這個(gè)時(shí)候,不再需要人工指定算子,算子本身也將由學(xué)習(xí)獲得。我們需要做的只不過(guò)是指定算子的個(gè)數(shù)而已。
比如,LeNet-5的C1:6@28*28,其中的6就是算子的個(gè)數(shù)。顯然算子的個(gè)數(shù)越多,計(jì)算越慢。但太少的話,又會(huì)導(dǎo)致提取的特征數(shù)太少,神經(jīng)網(wǎng)絡(luò)學(xué)不到東西。
除此之外,卷積還包含了圖片的空間二維信息,它和后面的Pooling操作一道,起到了空間降維的作用。
實(shí)際上,傳統(tǒng)的MLP(MultiLayer Perceptron)網(wǎng)絡(luò),就是由于1D全連接的神經(jīng)元控制了太多參數(shù),而不利于學(xué)習(xí)到稀疏特征。
CNN網(wǎng)絡(luò)中,2D全連接的神經(jīng)元?jiǎng)t控制了局部感受野,有利于解離出稀疏特征。
池化
Pooling操作(也稱Subsampling)使輸入表示(特征維度)變得更小,并且網(wǎng)絡(luò)中的參數(shù)和計(jì)算的數(shù)量更加可控的減小,因此,可以控制過(guò)擬合。
它還可使網(wǎng)絡(luò)對(duì)于輸入圖像中更小的變化、冗余和變換變得不變性。
Gaussian Connections
LeNet-5最后一步的Gaussian Connections是一個(gè)當(dāng)年的歷史遺跡,目前已經(jīng)被Softmax所取代。它的含義在上面提到的Yann LeCun的原始論文中有描述。
其他
上圖展示了不同分類的圖片特征在特征空間中的分布,可以看出在CNN的低層中,這些特征是混雜在一起的;而到了CNN的高層,這些特征就被區(qū)分開(kāi)來(lái)了。
上圖是若干ML、DL算法按照不同維度劃分的情況。
CNN的反向傳播算法
由于卷積和池化兩層,不是一般的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。因此CNN的反向傳播算法實(shí)際上也是很有技巧的。
參見(jiàn):
http://www.cnblogs.com/pinard/p/6494810.html
卷積神經(jīng)網(wǎng)絡(luò)(CNN)反向傳播算法
卷積的反向傳播,有時(shí)也被稱為反卷積。
上圖是Deep convolutional inverse graphics networks的結(jié)構(gòu)圖。DCIGN實(shí)際上是一個(gè)正向CNN連上一個(gè)反向CNN,以實(shí)現(xiàn)圖片合成的目的。
參考
http://lib.csdn.net/article/deeplearning/58185
BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)
http://blog.csdn.net/Fate_fjh/article/details/52882134
卷積神經(jīng)網(wǎng)絡(luò)系列blog
http://mp.weixin.qq.com/s/YRwGwelyA3VOYZ4XGAjUBw
CNN 感受野首次可視化:深入解讀及計(jì)算指南
http://mp.weixin.qq.com/s/dvuX3Ih_DZrv0kgqFn8-lg
卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)變化——可變形卷積網(wǎng)絡(luò)deformable convolutional networks
Autoencoder
Bengio在2003年的《A neural probabilistic language model》中指出,維度過(guò)高,會(huì)導(dǎo)致每次學(xué)習(xí),都會(huì)強(qiáng)制改變大部分參數(shù)。
由此發(fā)生蝴蝶效應(yīng),本來(lái)很好的參數(shù),可能就因?yàn)橐粋€(gè)小小傳播誤差,就改的亂七八糟。
因此,數(shù)據(jù)降維是數(shù)據(jù)預(yù)處理中,非常重要的一環(huán)。常用的降維算法,除了線性的PCA算法之外,還有非線性的Autoencoder。
Autoencoder的結(jié)構(gòu)如上圖所示。它的特殊之處在于:
1.輸入樣本就是輸出樣本。
2.隱藏層的神經(jīng)元數(shù)量小于樣本的維度。
總結(jié)
以上是生活随笔為你收集整理的深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 深度学习(一)——MP神经元模型, BP
- 下一篇: Hadoop, Hbase