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