《深度學習原理與TensorFlow實踐》學習筆記(三)
第三部分筆記來啦~~~
邊聽課邊看筆記效果更好哦~
看完不要忘記五星好評,
順便再關注一下我們的系列課程
《深度學習從基礎到真實項目實戰》~~
(深度學習原理/TensorFlow實踐+圖像識別應用+在線答疑)
作者 | 王清
目錄
圖像識別的經典課題
計算機視覺
圖像識別課題
卷積神經網路原理
前深度學習時代
卷積操作Convolution
池化Pooling
ReLURectified Linear Units
多層卷積
Dropout
經典模型介紹及TensorFlow代碼解析
AlexNet 震驚世界的突破
VGGNet更深的結構更優秀
GoogLeNet Inception 更全面的結構更優秀
GoogLeNet
Inception-V2加入Batch Normalization
Inception-V3重新思考 Inception 結構
ResNet飆升的深度
上述模型的圖形化對比
圖像識別的經典課題
計算機視覺
核心目標:讓計算機「看懂」圖像內容。
問題挑戰:
圖像包含的信息複雜,充滿著簡單(顏色、線條、形狀等)和複雜(姿勢、場景、物體分布等)的元素,難以使用單一知識體系來概括。
圖像對於計算機來說,只是獨立的像素集合,計算機無法歸納像素之間的關聯關係。
圖像識別課題
卷積神經網路原理
前深度學習時代
傳統機器學習方法
圖像預處理:調整大小、調整明暗度、圖像降噪、圖像增強等
特徵提取:手工或利用圖像處理運算元(如,SIFT、HoG、Sobel等)
歸納識別:SVM、人工神經網路
局限
傳統機器學習演算法只能得出輸入特徵與輸出標籤之間的映射關係
特徵選取強烈依賴人類的先驗經驗和大量實踐,可移植程度低
大量特徵無法由人類歸納總結
卷積操作(Convolution)
卷積操作簡單來說,就是對於圖片中的每一個像素點,計算它的鄰域像素和濾波器矩陣(卷積核)的對應位置元素的乘積,然後將所有乘積累加,作為該像素位置的輸出值,如下圖所示。
卷積操作的動圖:http://deeplearning.stanford.edu/wiki/index.php/Feature_extraction_using_convolution
在圖像處理中,通常會用到一些經典的卷積濾波器,如低通濾波器、高通濾波器、高斯濾波器,這些濾波器會產生不容的效果,如下圖所示。上排三個依次為:原圖、低通濾波器(Low Pass Filter)、高斯濾波器(Gaussian Filter),下三排依次為:銳化濾波器(Sharpeness Filter)、邊緣檢測(Edge Detection)、浮雕濾波器(Embossing Filter)。
在線實驗,可以自定義卷積核參數測試:https://graphics.stanford.edu/courses/cs178/applets/convolution.html
池化(Pooling)
池化操作
一般有最大池化(max pooling)和平均池化(average pooling)兩種操作
通常採用2×2的窗口大小,步長為2,處理完的圖像長和寬都是原圖的一半
池化的作用
降維
使特徵提取具有「平移不變性」(translation invariant)——即使圖像有了一定程度的位移,依然可以獲得穩定的特徵集合。如人臉檢測,不會因為由於角度問題導致的五官位置不對應而無法判斷是否是同一個人。
@Max Pooling,可以看到是一個降採樣的過程,由4維矩陣變為了2維
ReLU(Rectified Linear Units)
上述提到的卷積操作是一種線性操作,而特徵空間映射到另一個特徵空間使之線性可分是需要通過非線性變換才能實現,激活函數(activation function)就是一種引入非線性的手段。
在傳統神經網路中,常用的激活函數是sigmoid函數,但容易導致「梯度消失」,使得收斂速度慢且不收斂。
ReLU的提出就是為了解決梯度消失問題。
ReLU計算公式:f(x)=max(0,x)
ReLU求導公式:
多層卷積
深度學習的精髓是利用多層特徵組合,將簡單的特徵組合成複雜的抽象特徵。深度卷積網路也是如此,整個網路是由多個特徵提取階段組成。每一個階段都包括三種操作:卷積、池化和非線性激活函數(ReLU)。這種組合方式能夠逼近複雜的非線性模型函數,同時又能夠以較簡單的方式訓練。
如下圖所示,多層卷積可以看作一個金字塔結構,隨著層次的加深,特徵圖的尺寸越來越小,但通道個數越來越多。在比較淺的層次(離輸入較近的層次),卷積會提取比較細節的特徵,而在較深的層次,會將前面的細節特徵進行二次提取和組合,相當於觀察的視野變大,就能提取更完整、更加抽象的特徵。最終由全連接層和分類器按照提取的特徵進行分類。
Dropout
Dropout是一種防止過擬合的手段。過擬合是指訓練結果在訓練集與測試集性能表現差距非常大的情況,即在訓練集上能夠得到很高的精度,但由於過度擬合,使得模型泛化性能不足,在測試集上的性能變差。
操作:在每次訓練中,隨機讓一部分隱層節點失效,可以達到改變網路結構的目的,但保留每個節點的權值。在預測時,打開全部隱層節點,使用完整的網路進行計算,相當於把多個不同的網路組合在一起,達到集成學習(ensemble)的目的。
作用:削弱節點的共同作用,防止過擬合 。
經典模型介紹及TensorFlow代碼解析
AlexNet: 震驚世界的突破
Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. 「Imagenet classification with deep convolutional neural networks.」 Advances in neural information processing systems. 2012.[https://arxiv.org/pdf/1409.1556.pdf]
背景:
LeNet + MNIST 成為 Deep Learning 界的 「Hello World」
傳統圖像識別技術陷入瓶頸
ILSVRC 2012 圖像分類第一名
Top-5 錯誤率 15.3%(第二名錯誤率 26.2%)
關鍵點及意義
驗證了深度學習的威力,開啟深度學習時代
使用 ReLU 替代 sigmoid,加速計算
使用 Dropout 技術,防止過擬合(overfitting)
提出GPU訓練&分散式並行訓練,降低訓練時間
VGGNet:更深的結構更優秀
Simonyan, Karen, and Andrew Zisserman. 「Very deep convolutional networks for large-scale image recognition.」 arXiv preprint arXiv:1409.1556 (2014). [https://arxiv.org/pdf/1409.1556.pdf]
VGGNet 是基於 AlexNet 的改進
ILSVRC 2014 圖像分類第二名、圖像定位第一名
圖像分類 TOP-5 錯誤率 7.4%
圖像定位錯誤率 25.3%
關鍵點及意義
發現更「深」的網路,能達到更高的識別準確率
全部使用3×3的卷積核,有效減少參數個數,加深網路深度,計算代價更小收斂速度更快
@AlexNet、VGG16和VGG19網路結構對比
GoogLeNet & Inception: 更全面的結構更優秀
GoogLeNet
Szegedy, Christian, et al. 「Going deeper with convolutions.」 Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.
http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf
ILSVRC 2014 圖像分類第一名
圖像分類 TOP-5 錯誤率 6.6%
關鍵點及意義
最優局部結構(如下圖),通過增加「寬度」的方式增加網路的複雜度。
1×1卷積核有效降維。AlexNet 有 6000W 參數,VGGNet 是 AlexNet 的三倍,GooLgeNet 只有 500W 參數
模型計算量更小,速度更快
GoogLeNet 的 Block 結構
在每一個卷積層中,並行使用 1X1 卷積、3X3 卷積和 5X5 卷積,同時提取不同尺度的特徵,然後通過 1X1 卷積對每一個分支進行降維(降低的是channel的維度)。
@GoogLeNet 中的 Block 結構
@完整的GoogLeNet模型結構
Inception-V2:加入Batch Normalization
Ioffe, Sergey, and Christian Szegedy. 「Batch normalization: Accelerating deep network training by reducing internal covariate shift.」 arXiv preprint arXiv:1502.03167 (2015). [http://arxiv.org/pdf/1502.03167]
圖像分類 TOP-5 錯誤率 4.9%,TOP-1 錯誤率 20.1%
Batch Normalization
操作:將batch中的所有數值轉換為 mean=0,variance=1 的正態分布
原因:
由於 mini-batch 樣本數太少,所以每一個 mini-batch 內的實際分布都各不相同,在梯度計算的時候會導致梯度方向不停變化(就像下山走Z字形),導致收斂速度減慢。
標準化後,保證數據分布始終一致,,在識別任務上會有更好的表現。
Inception-V3:重新思考 Inception 結構
Szegedy C, Vanhoucke V, Ioffe S, et al. Rethinking the Inception Architecture for Computer Vision[C]. computer vision and pattern recognition, 2015. [https://arxiv.org/pdf/1512.00567v3.pdf]
圖像分類 TOP-5 錯誤率 3.58%,TOP-1 錯誤率17.2%
關鍵點及意義
將卷積操作繼續分解成更小的卷積核
用2層 3X3 卷積替代 5X5 卷積
用 1X3 和 3X1 兩個卷積核替代 3X3 卷積核
加深網路層次,減少模型參數,減少計算,提高準確率
@將卷積操作分解成更小的卷積核
@左:1X3 和 3X1 的卷積核替代 3X3,右:2層 3X3 的卷積核替代 5X5 的卷積
ResNet:飆升的深度
He, Kaiming, et al. 「Deep residual learning for image recognition.」 arXiv preprint arXiv:1512.03385 (2015).[https://arxiv.org/pdf/1512.03385.pdf]
深度網路的退化問題
殘差塊(Residual Block)
VGGNet 證明了加深網路層次是提高精度的有效手段,但是由於梯度彌散問題,導致網路深度有限,即深度越深反而效果下降。
將 H(x) 的求解過程,轉化為H(x) = F(x) + x,通過短路的形式更好的傳遞梯度
ILSVRC 2015 圖像分類第一名
圖像分類 TOP-5 錯誤率 3.57%
關鍵點及意義
殘差結構解決深度網路的退化問題(degradation problem)
模型深度越深,識別更準確
參數更少,計算速度更快
目前主流的圖像識別模型
@34層ResNet跟34層plain網路及VGG-19結構對比
上述模型的圖形化對比
Visualizing CNN architectures side by side with MXNet
http://josephpcohen.com/w/visualizing-cnn-architectures-side-by-side-with-mxnet/
感謝《深度學習基礎與TensorFlow實踐》課程主講王琛老師~~
點擊展開全文
※原來YouTube推薦系統的內幕是這樣……
※霉霉 vs AI:誰的歌詞寫的更好
※吳軍與邁克爾·喬丹兩位頂級大牛對當下AI的一點看法
※NLP經典書籍《語音與語言處理》第三版修訂版
※谷歌標誌性「螢火蟲」無人車退役,Keras 2.0.7 強化TensorFlow開發能力
TAG:AI科技大本營 |
※學習筆記之TensorFlow
※深度學習之CapsuleNets理論與Python實踐!
※深度學習基礎-TensorFlow 概覽
※《Tensorflow:實戰Google深度學習框架》圖書推薦
※第55期:Python機器學習實踐指南、Tensorflow 實戰Google深度學習框架
※R語言攜手TensorFlow進軍深度學習
※谷歌發布機器學習規則 (Rules of Machine Learning):關於機器學習工程的最佳實踐(上)
※谷歌發布機器學習規則 (Rules of Machine Learning):關於機器學習工程的最佳實踐(下)
※深度學習綜述:Hinton、Yann LeCun和Bengio經典重讀
※wide&deep論文學習筆記
※深度學習三人行-TensorFlow愛之再體驗
※Gradle插件學習筆記(一)
※深度學習之DenseNet
※深度強化學習-Policy Gradient基本實現
※用Python和NumPy學習《深度學習》中的線性代數基礎
※深度學習戰爭:Facebook 支持的 PyTorch與Google的TensorFlow
※LeCun、Bengio、Hinton三巨頭曾合體,Nature發文綜述深度學習
※深度學習之解剖Hello World
※TensorFlow和深度學習入門教程
※資源|用Python和NumPy學習《深度學習》中的線性代數基礎