本頁使用了標題或全文手工轉換

卷積神經網路

維基百科,自由的百科全書
跳至導覽 跳至搜尋

卷積神經網路(Convolutional Neural Network, CNN)是一種前饋神經網路,它的人工神經元可以回應一部分覆蓋範圍內的周圍單元,[1]對於大型圖像處理有出色表現。

卷積神經網路由一個或多個卷積層和頂端的全連通層(對應經典的神經網路)組成,同時也包括關聯權重和池化層(pooling layer)。這一結構使得卷積神經網路能夠利用輸入資料的二維結構。與其他深度學習結構相比,卷積神經網路在圖像和語音辨識方面能夠給出更好的結果。這一模型也可以使用反向傳播演算法進行訓練。相比較其他深度、前饋神經網路,卷積神經網路需要考量的參數更少,使之成為一種頗具吸引力的深度學習結構[2]

定義[編輯]

「卷積神經網路」表示在網路採用稱為卷積的數學運算。卷積是一種特殊的線性操作。卷積網路是一種特殊的神經網路,它們在至少一個層中使用卷積代替一般矩陣乘法

概覽[編輯]

發展[編輯]

結構[編輯]

卷積層[編輯]

卷積層是一組平行的特徵圖(feature map),它通過在輸入圖像上滑動不同的卷積核並執行一定的運算而組成。此外,在每一個滑動的位置上,卷積核與輸入圖像之間會執行一個元素對應乘積並求和的運算以將感受野內的資訊投影到特徵圖中的一個元素。這一滑動的過程可稱爲步幅 Z_s,步幅 Z_s 是控制輸出特徵圖尺寸的一個因素。卷積核的尺寸要比輸入圖像小得多,且重疊或平行地作用於輸入圖像中,一張特徵圖中的所有元素都是通過一個卷積覈計算得出的,也即一張特徵圖共享了相同的權重和偏置項。

線性整流層[編輯]

線性整流層(Rectified Linear Units layer, ReLU layer)使用線性整流(Rectified Linear Units, ReLU)作為這一層神經的激勵函式(Activation function)。它可以增強判定函式和整個神經網路的非線性特性,而本身並不會改變卷積層。

事實上,其他的一些函式也可以用於增強網路的非線性特性,如雙曲正切函式 , ,或者Sigmoid函式。相比其它函式來說,ReLU函式更受青睞,這是因為它可以將神經網路的訓練速度提升數倍[3],而並不會對模型的泛化準確度造成顯著影響。

池化層[編輯]

每隔2個元素進行的2x2最大池化

池化(Pooling)是卷積神經網路中另一個重要的概念,它實際上是一種形式的降採樣。有多種不同形式的非線性池化函式,而其中「最大池化(Max pooling)」是最為常見的。它是將輸入的圖像劃分為若干個矩形區域,對每個子區域輸出最大值。直覺上,這種機制能夠有效地原因在於,在發現一個特徵之後,它的精確位置遠不及它和其他特徵的相對位置的關係重要。池化層會不斷地減小資料的空間大小,因此參數的數量和計算量也會下降,這在一定程度上也控制了過擬合。通常來說,CNN的卷積層之間都會周期性地插入池化層。

池化層通常會分別作用於每個輸入的特徵並減小其大小。目前最常用形式的池化層是每隔2個元素從圖像劃分出的區塊,然後對每個區塊中的4個數取最大值。這將會減少75%的資料量。

除了最大池化之外,池化層也可以使用其他池化函式,例如「平均池化」甚至「L2-範數池化」等。過去,平均池化的使用曾經較為廣泛,但是最近由於最大池化在實踐中的表現更好,平均池化已經不太常用。

由於池化層過快地減少了資料的大小,目前文獻中的趨勢是使用較小的池化濾鏡,[4]甚至不再使用池化層。[5]

損失函式層[編輯]

損失函式層(loss layer)用於決定訓練過程如何來「懲罰」網路的預測結果和真實結果之間的差異,它通常是網路的最後一層。各種不同的損失函式適用於不同類型的任務。例如,Softmax交叉熵損失函式常常被用於在K個類別中選出一個,而Sigmoid交叉熵損失函式常常用於多個獨立的二分類問題。歐幾里德損失函式常常用於結果取值範圍為任意實數的問題。

應用[編輯]

影像辨識[編輯]

卷積神經網路通常在影像辨識系統中使用。

視訊分析[編輯]

相比影像辨識問題,視訊分析要難許多。CNN也常被用於這類問題。

自然語言處理[編輯]

卷積神經網路也常被用於自然語言處理。 CNN的模型被證明可以有效的處理各種自然語言處理的問題,如語意分析[6]、搜尋結果提取[7]、句子建模[8] 、分類[9]、預測[10]、和其他傳統的NLP任務[11] 等。

藥物發現[編輯]

卷積神經網路已在藥物發現中使用。卷積神經網路被用來預測的分子與蛋白質之間的相互作用,以此來尋找靶向位點,尋找出更可能安全和有效的潛在治療方法。

圍棋[編輯]

卷積神經網路在電腦圍棋領域也被使用。2016年3月,AlphaGo對戰李世乭的比賽,展示了深度學習在圍棋領域的重大突破。

微調(fine-tuning)[編輯]

卷積神經網路(例如Alexnet、VGG網路)在網路的最後通常為softmax分類器。微調一般用來調整softmax分類器的分類數。例如原網路可以分類出2種圖像,需要增加1個新的分類從而使網路可以分類出3種圖像。微調(fine-tuning)可以留用之前訓練的大多數參數,從而達到快速訓練收斂的效果。例如保留各個卷積層,只重構卷積層後的全連接層與softmax層即可。

經典模型[編輯]

可用包[編輯]

  • roNNie: 是一個簡易入門級框架,使用Tensorflow 計算層.可於python下載 pip3 ronnie
  • Caffe: Caffe包含了CNN使用最廣泛的庫。它由伯克利視覺和學習中心(BVLC)研發,擁有比一般實現更好的結構和更快的速度。同時支援CPUGPU計算,底層由C++實現,並封裝了Python和MATLAB的介面。
  • Torch7(www.torch.ch)
  • OverFeat
  • Cuda-convnet
  • MatConvnet
  • Theano:用Python實現的神經網路包[12]
  • TensorFlow
  • Paddlepaddle(www.paddlepaddle.org)
  • Keras

參考[編輯]

  1. ^ Convolutional Neural Networks (LeNet) - DeepLearning 0.1 documentation. DeepLearning 0.1. LISA Lab. [31 August 2013]. 
  2. ^ Convolutional Neural Network. [2014-09-16]. 
  3. ^ Krizhevsky, A.; Sutskever, I.; Hinton, G. E. Imagenet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems. 2012, 1: 1097–1105. (原始內容存檔於2015-02-16). 
  4. ^ Graham, Benjamin. Fractional Max-Pooling. 2014-12-18. arXiv:1412.6071 [cs.CV]. 
  5. ^ Springenberg, Jost Tobias; Dosovitskiy, Alexey; Brox, Thomas; Riedmiller, Martin. Striving for Simplicity: The All Convolutional Net. 2014-12-21. arXiv:1412.6806 [cs.LG]. 
  6. ^ Grefenstette, Edward; Blunsom, Phil; de Freitas, Nando; Hermann, Karl Moritz. A Deep Architecture for Semantic Parsing. 2014-04-29. arXiv:1404.7296 [cs.CL]. 
  7. ^ Learning Semantic Representations Using Convolutional Neural Networks for Web Search – Microsoft Research. research.microsoft.com. [2015-12-17]. 
  8. ^ Kalchbrenner, Nal; Grefenstette, Edward; Blunsom, Phil. A Convolutional Neural Network for Modelling Sentences. 2014-04-08. arXiv:1404.2188 [cs.CL]. 
  9. ^ Kim, Yoon. Convolutional Neural Networks for Sentence Classification. 2014-08-25. arXiv:1408.5882 [cs.CL]. 
  10. ^ Collobert, Ronan, and Jason Weston. "A unified architecture for natural language processing: Deep neural networks with multitask learning."Proceedings of the 25th international conference on Machine learning. ACM, 2008.
  11. ^ Collobert, Ronan; Weston, Jason; Bottou, Leon; Karlen, Michael; Kavukcuoglu, Koray; Kuksa, Pavel. Natural Language Processing (almost) from Scratch. 2011-03-02. arXiv:1103.0398 [cs.LG]. 
  12. ^ 深度網路:Theano專案首頁。