曆史
對卷積神經網絡的研究可追溯至日本學者福島邦彥(Kunihiko Fukushima)提出的neocognitron模型。在其1979和1980年發表的論文中,福島仿造生物的視覺皮層(visual cortex)設計了以“neocognitron”命名的神經網絡。neocognitron是一個具有深度結構的神經網絡,并且是最早被提出的深度學習算法之一,其隐含層由S層(Simple-layer)和C層(Complex-layer)交替構成。其中S層單元在感受野(receptive field)内對圖像特征進行提取,C層單元接收和響應不同感受野返回的相同特征。neocognitron的S層-C層組合能夠進行特征提取和篩選,部分實現了卷積神經網絡中卷積層(convolution layer)和池化層(pooling layer)的功能,被認為是啟發了卷積神經網絡的開創性研究。
第一個卷積神經網絡是1987年由Alexander Waibel等提出的時間延遲網絡(Time Delay Neural Network, TDNN)。TDNN是一個應用于語音識别問題的卷積神經網絡,使用FFT預處理的語音信号作為輸入,其隐含層由2個一維卷積核組成,以提取頻率域上的平移不變特征。由于在TDNN出現之前,人工智能領域在反向傳播算法(Back-Propagation, BP)的研究中取得了突破性進展,因此TDNN得以使用BP框架内進行學習。在原作者的比較試驗中,TDNN的表現超過了同等條件下的隐馬爾可夫模型(Hidden Markov Model, HMM),而後者是二十世紀80年代語音識别的主流算法。
1988年,Wei Zhang提出了第一個二維卷積神經網絡:平移不變人工神經網絡(SIANN),并将其應用于檢測醫學影像。獨立于Zhang (1988),Yann LeCun在1989年同樣構建了應用于計算機視覺問題的卷積神經網絡,即LeNet的最初版本。LeNet包含兩個卷積層,2個全連接層,共計6萬個學習參數,規模遠超TDNN和SIANN,且在結構上與現代的卷積神經網絡十分接近。LeCun (1989)對權重進行随機初始化後使用了随機梯度下降(Stochastic Gradient Descent, SGD)進行學習,這一策略被其後的深度學習研究所保留。此外,LeCun (1989)在論述其網絡結構時首次使用了“卷積”一詞,“卷積神經網絡”也因此得名。
LeCun (1989)的工作在1993年由貝爾實驗室(AT&T Bell Laboratories)完成代碼開發并被部署于NCR(National Cash Register Coporation)的支票讀取系統。但總體而言,由于數值計算能力有限、學習樣本不足,加上同一時期以支持向量機(Support Vector Machine, SVM)為代表的核學習(kernel learning)方法的興起,這一時期為各類圖像處理問題設計的卷積神經網絡停留在了研究階段,應用端的推廣較少。
在LeNet的基礎上,1998年Yann LeCun及其合作者構建了更加完備的卷積神經網絡LeNet-5并在手寫數字的識别問題中取得成功。LeNet-5沿用了LeCun (1989) 的學習策略并在原有設計中加入了池化層對輸入特征進行篩選。LeNet-5及其後産生的變體定義了現代卷積神經網絡的基本結構,其構築中交替出現的卷積層-池化層被認為能夠提取輸入圖像的平移不變特征。LeNet-5的成功使卷積神經網絡的應用得到關注,微軟在2003年使用卷積神經網絡開發了光學字符讀取(Optical Character Recognition, OCR)系統。其它基于卷積神經網絡的應用研究也得到展開,包括人像識别、手勢識别等。
在2006年深度學習理論被提出後,卷積神經網絡的表征學習能力得到了關注,并随着數值計算設備的更新得到發展。自2012年的AlexNet開始,得到GPU計算集群支持的複雜卷積神經網絡多次成為ImageNet大規模視覺識别競賽(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)的優勝算法,包括2013年的ZFNet 、2014年的VGGNet、GoogLeNet和2015年的ResNet。
結構
輸入層
卷積神經網絡的輸入層可以處理多維數據,常見地,一維卷積神經網絡的輸入層接收一維或二維數組,其中一維數組通常為時間或頻譜采樣;二維數組可能包含多個通道;二維卷積神經網絡的輸入層接收二維或三維數組;三維卷積神經網絡的輸入層接收四維數組。由于卷積神經網絡在計算機視覺領域應用較廣,因此許多研究在介紹其結構時預先假設了三維輸入數據,即平面上的二維像素點和RGB通道。
與其它神經網絡算法類似,由于使用梯度下降算法進行學習,卷積神經網絡的輸入特征需要進行标準化處理。具體地,在将學習數據輸入卷積神經網絡前,需在通道或時間/頻率維對輸入數據進行歸一化,若輸入數據為像素,也可将分布于的原始像素值歸一化至區間。輸入特征的标準化有利于提升卷積神經網絡的學習效率和表現。
隐含層
卷積神經網絡的隐含層包含卷積層、池化層和全連接層3類常見構築,在一些更為現代的算法中可能有Inception模塊、殘差塊(residual block)等複雜構築。在常見構築中,卷積層和池化層為卷積神經網絡特有。卷積層中的卷積核包含權重系數,而池化層不包含權重系數,因此在文獻中,池化層可能不被認為是獨立的層。以LeNet-5為例,3類常見構築在隐含層中的順序通常為:輸入-卷積層-池化層-全連接層-輸出。
卷積層(convolutional layer)
1. 卷積核(convolutional kernel)
卷積層的功能是對輸入數據進行特征提取,其内部包含多個卷積核,組成卷積核的每個元素都對應一個權重系數和一個偏差量(bias vector),類似于一個前饋神經網絡的神經元(neuron)。卷積層内每個神經元都與前一層中位置接近的區域的多個神經元相連,區域的大小取決于卷積核的大小,在文獻中被稱為“感受野(receptive field)”,其含義可類比視覺皮層細胞的感受野,卷積核在工作時,會有規律地掃過輸入特征,在感受野内對輸入特征做矩陣元素乘法求和并疊加偏差量:
式中的求和部分等價于求解一次交叉相關(cross-correlation)。為偏差量,和表示第 層的卷積輸入和輸出,也被稱為特征圖(feature map),為的尺寸,這裡假設特征圖長寬相同。對應特征圖的像素,為特征圖的通道數,,so和是卷積層參數,對應卷積核大小、卷積步長(stride)和填充(padding)層數。
上式以二維卷積核作為例子,一維或三維卷積核的工作方式與之類似。理論上卷積核也可以先翻轉180度,再求解交叉相關,其結果等價于滿足交換律的線性卷積(linear convolution),但這樣做在增加求解步驟的同時并不能為求解參數取得便利,因此線性卷積核使用交叉相關代替了卷積。
特殊地,當卷積核是大小,步長且不包含填充的單位卷積核時,卷積層内的交叉相關計算等價于矩陣乘法,并由此在卷積層間構建了全連接網絡:
由單位卷積核組成的卷積層也被稱為網中網(Network-In-Network, NIN)或多層感知器卷積層(multilayer perceptron convolution layer, mlpconv)。單位卷積核可以在保持特征圖尺寸的同時減少圖的通道數從而降低卷積層的計算量。完全由單位卷積核構建的卷積神經網絡是一個包含參數共享的多層感知器(Muti-Layer Perceptron, MLP)。
在線性卷積的基礎上,一些卷積神經網絡使用了更為複雜的卷積,包括平鋪卷積(tiled convolution)、反卷積(deconvolution)和擴張卷積(dilated convolution)。平鋪卷積的卷積核隻掃過特征圖的一部份,剩餘部分由同層的其它卷積核處理,因此卷積層間的參數僅被部分共享,有利于神經網絡捕捉輸入圖像的旋轉不變(shift-invariant)特征。反卷積或轉置卷積(transposed convolution)将單個的輸入激勵與多個輸出激勵相連接,對輸入圖像進行放大。由反卷積和向上池化層(up-pooling layer)構成的卷積神經網絡在圖像語義分割(semantic segmentation)領域有應用,也被用于構建卷積自編碼器(Convolutional AutoEncoder, CAE)。擴張卷積在線性卷積的基礎上引入擴張率以提高卷積核的感受野,從而獲得特征圖的更多信息,在面向序列數據使用時有利于捕捉學習目标的長距離依賴(long-range dependency)。使用擴張卷積的卷積神經網絡主要被用于自然語言處理(Natrual Language Processing, NLP)領域,例如機器翻譯、語音識别等。
2. 卷積層參數
卷積層參數包括卷積核大小、步長和填充,三者共同決定了卷積層輸出特征圖的尺寸,是卷積神經網絡的超參數。其中卷積核大小可以指定為小于輸入圖像尺寸的任意值,卷積核越大,可提取的輸入特征越複雜。
卷積步長定義了卷積核相鄰兩次掃過特征圖時位置的距離,卷積步長為1時,卷積核會逐個掃過特征圖的元素,步長為n時會在下一次掃描跳過n-1個像素。
由卷積核的交叉相關計算可知,随着卷積層的堆疊,特征圖的尺寸會逐步減小,例如16×16的輸入圖像在經過單位步長、無填充的5×5的卷積核後,會輸出12×12的特征圖。為此,填充是在特征圖通過卷積核之前人為增大其尺寸以抵消計算中尺寸收縮影響的方法。常見的填充方法為按0填充和重複邊界值填充(replication padding)。填充依據其層數和目的可分為四類:
有效填充(valid padding):即完全不使用填充,卷積核隻允許訪問特征圖中包含完整感受野的位置。輸出的所有像素都是輸入中相同數量像素的函數。使用有效填充的卷積被稱為“窄卷積(narrow convolution)”,窄卷積輸出的特征圖尺寸為(L-f)/s+1。
相同填充/半填充(same/half padding):隻進行足夠的填充來保持輸出和輸入的特征圖尺寸相同。相同填充下特征圖的尺寸不會縮減但輸入像素中靠近邊界的部分相比于中間部分對于特征圖的影響更小,即存在邊界像素的欠表達。使用相同填充的卷積被稱為“等長卷積(equal-width convolution)”。
全填充(full padding):進行足夠多的填充使得每個像素在每個方向上被訪問的次數相同。步長為1時,全填充輸出的特征圖尺寸為L+f-1,大于輸入值。使用全填充的卷積被稱為“寬卷積(wide convolution)”
任意填充(arbitrary padding):介于有效填充和全填充之間,人為設定的填充,較少使用。
帶入先前的例子,若16×16的輸入圖像在經過單位步長的5×5的卷積核之前先進行相同填充,則會在水平和垂直方向填充兩層,即兩側各增加2個像素()變為20×20大小的圖像,通過卷積核後,輸出的特征圖尺寸為16×16,保持了原本的尺寸。
3. 激勵函數(activation function)
卷積層中包含激勵函數以協助表達複雜特征,其表示形式如下:
類似于其它深度學習算法,卷積神經網絡通常使用線性整流函數(Rectified Linear Unit, ReLU),其它類似ReLU的變體包括有斜率的ReLU(Leaky ReLU, LReLU)、參數化的ReLU(Parametric ReLU, PReLU)、随機化的ReLU(Randomized ReLU, RReLU)、指數線性單元(Exponential Linear Unit, ELU)等。在ReLU出現以前,Sigmoid函數和雙曲正切函數(hyperbolic tangent)也有被使用。
激勵函數操作通常在卷積核之後,一些使用預激活(preactivation)技術的算法将激勵函數置于卷積核之前。在一些早期的卷積神經網絡研究,例如LeNet-5中,激勵函數在池化層之後。
池化層(pooling layer)
在卷積層進行特征提取後,輸出的特征圖會被傳遞至池化層進行特征選擇和信息過濾。池化層包含預設定的池化函數,其功能是将特征圖中單個點的結果替換為其相鄰區域的特征圖統計量。池化層選取池化區域與卷積核掃描特征圖步驟相同,由池化大小、步長和填充控制。
1. Lp池化(Lp pooling)
Lp池化是一類受視覺皮層内階層結構啟發而建立的池化模型,其一般表示形式為:
式中步長、像素的含義與卷積層相同,是預指定參數。當時,Lp池化在池化區域内取均值,被稱為均值池化(average pooling);當時,Lp池化在區域内取極大值,被稱為極大池化(max pooling)。均值池化和極大池化是在卷積神經網絡的設計中被長期使用的池化方法,二者以損失特征圖的部分信息或尺寸為代價保留圖像的背景和紋理信息。此外時的L2池化在一些工作中也有使用。
2. 随機/混合池化
混合池化(mixed pooling)和随機池化(stochastic pooling)是Lp池化概念的延伸。随機池化會在其池化區域内按特定的概率分布随機選取一值,以确保部分非極大的激勵信号能夠進入下一個構築。混合池化可以表示為均值池化和極大池化的線性組合:
有研究表明,相比于均值和極大池化,混合池化和随機池化具有正則化的功能,有利于避免卷積神經網絡出現過拟合。
3. 譜池化(spectral pooling)
池化是基于FFT的池化方法,可以和FFT卷積一起被用于構建基于FFT的卷積神經網絡。在給定特征圖尺寸,和池化層輸出尺寸時,譜池化對特征圖的每個通道分别進行DFT變換,并從頻譜中心截取n×n大小的序列進行DFT逆變換得到池化結果。。譜池化有濾波功能,可以在保存輸入特征的低頻變化信息的同時,調整特征圖的大小。基于成熟的FFT算法,譜池化能夠以很小的計算量完成。
Inception模塊(Inception module)
Inception模塊是對多個卷積層和池化層進行堆疊所得的隐含層構築。具體而言,一個Inception模塊會同時包含多個不同類型的卷積和池化操作,并使用相同填充使上述操作得到相同尺寸的特征圖,随後在數組中将這些特征圖的通道進行疊加并通過激勵函數。由于上述做法在一個構築中引入了多個卷積核,因此為簡化計算,Inception模塊通常設計了瓶頸層,首先使用單位卷積核,即NIN結構減少特征圖的通道數,再進行其它卷積操作。Inception模塊最早被應用于GoogLeNet并在ImageNet數據集中取得了成功,并啟發了(或推廣得到了)基于深度可分卷積(depthwise separable convolution)搭建的一系列輕量級卷積神經網絡,包括Xception和MobileNet。
全連接層(fully-connected layer)
卷積神經網絡中的全連接層等價于傳統前饋神經網絡中的隐含層。全連接層位于卷積神經網絡隐含層的最後部分,并隻向其它全連接層傳遞信号。特征圖在全連接層中會失去空間拓撲結構,被展開為向量并通過激勵函數。
按表征學習觀點,卷積神經網絡中的卷積層和池化層能夠對輸入數據進行特征提取,全連接層的作用則是對提取的特征進行非線性組合以得到輸出,即全連接層本身不被期望具有特征提取能力,而是試圖利用現有的高階特征完成學習目标。
在一些卷積神經網絡中,全連接層的功能可由全局均值池化(global average pooling)取代,全局均值池化會将特征圖每個通道的所有值取平均,即若有7×7×256的特征圖,全局均值池化将返回一個256的向量,其中每個元素都是7×7,步長為7,無填充的均值池化。
輸出層
卷積神經網絡中輸出層的上遊通常是全連接層,因此其結構和工作原理與傳統前饋神經網絡中的輸出層相同。對于圖像分類問題,輸出層使用邏輯函數或歸一化指數函數(softmax function)輸出分類标簽。在物體識别(object detection)問題中,輸出層可設計為輸出物體的中心坐标、大小和分類。在圖像語義分割中,輸出層直接輸出每個像素的分類結果。
理論
學習範式
監督學習(supervised learning)
卷積神經網絡在監督學習中使用BP框架進行學習,其計算流程在LeCun (1989) 中就已經确定,是最早在BP框架進行學習的深度算法之一。卷積神經網絡中的BP分為三部分,即全連接層與卷積核的反向傳播和池化層的反向通路(backward pass)。全連接層的BP計算與傳統的前饋神經網絡相同,卷積層的反向傳播是一個與前向傳播類似的交叉相關計算:
式中為代價函數(cost function)計算的誤差、為激勵函數的導數、是學習速率(learning rate),若卷積核的前向傳播使用卷積計算,則反向傳播也對卷積核翻轉以進行卷積運算。卷積神經網絡的誤差函數可以有多種選擇,常見的包括Softmax損失函數(softmax loss)、鉸鍊損失函數(hinge loss)、三重損失函數(triplet loss)等。
池化層在反向傳播中沒有參數更新,因此隻需要根據池化方法将誤差分配到特征圖的合适位置即可,對極大池化,所有誤差會被賦予到極大值所在位置;對均值池化,誤差會平均分配到整個池化區域。
卷積神經網絡通常使用BP框架内的随機梯度下降(Stochastic Gradient Descent, SGD)和其變體,例如Adam算法(Adaptive moment estimation)。SGD在每次叠代中随機選擇樣本計算梯度,在學習樣本充足的情形下有利于信息篩選,在叠代初期能快速收斂,且計算複雜度更小。
非監督學習(unsupervised learning)
卷積神經網絡最初是面向監督學習問題設計的,但其也發展出了非監督學習範式,包括卷積自編碼器(Convolutional AutoEncoders, CAE)、卷積受限玻爾茲曼機(Convolutional Restricted Boltzmann Machines, CRBM)/卷積深度置信網絡(Convolutional Deep Belief Networks, CDBN)和深度卷積生成對抗網絡(Deep Convolutional Generative Adversarial Networks, DCGAN)。這些算法也可以視為在非監督學習算法的原始版本中引入卷積神經網絡構築的混合算法。
CAE的構建邏輯與傳統AE類似,首先使用卷積層和池化層建立常規的卷積神經網絡作為編碼器,随後使用反卷積和向上池化(up-pooling)作為解碼器,以樣本編碼前後的誤差進行學習,并輸出編碼器的編碼結果實現對樣本的維度消減(dimentionality reduction)和聚類(clustering)。在圖像識别問題,例如MNIST中,CAE與其編碼器同樣結構的卷積神經網絡在大樣本時表現相當,但在小樣本問題中具有更好的識别效果。
CRBM是以卷積層作為隐含層的受限玻爾茲曼機(Boltzmann Machines, RBM),在傳統RBMs的基礎上将隐含層分為多個“組(group)”,每個組包含一個卷積核,卷積核參數由該組對應的所有二元節點共享。CDBN是以CRBM作為構築進行堆疊得到的階層式生成模型,為了在結構中提取高階特征,CDBN加入了概率極大池化層( probabilistic max-pooling layer),和其對應的能量函數。CRBMs和CDBMs使用逐層貪婪算法(greedy layer-wise training)進行學習,并可以使用稀疏正則化(sparsity regularization)技術。在Caltech-101數據的物體識别問題中,一個24-100的兩層CDBN識别準确率持平或超過了很多包含高度特化特征的分類和聚類算法。
生成對抗網絡( Generative Adversarial Networks, GAN)可被用于卷積神經網絡的非監督學習,DCGAN從一組概率分布,即潛空間(latent space)中随機采樣,并将信号輸入一組完全由轉置卷積核組成的生成器;生成器生成圖像後輸入以卷積神經網絡構成的判别模型,判别模型判斷生成圖像是否是真實的學習樣本。當生成模型能夠使判别模型無法判斷其生成圖像與學習樣本的區别時學習結束。研究表明DCGANs能夠在圖像處理問題中提取輸入圖像的高階層表征,在CIFAR-10數據的試驗中,對DCGAN判别模型的特征進行處理後做為其它算法的輸入,能以很高的準确率對圖像進行分類。
優化
正則化(regularization)
在神經網絡算法的各類正則化方法都可以用于卷積神經網絡以防止過度拟合,常見的正則化方法包括Lp正則化(Lp-norm regularization)、随機失活(spatial dropout)和随機連接失活(drop connect)。
Lp正則化在定義損失函數時加入隐含層參數以約束神經網絡的複雜度:
式中為損失函數,包含弗羅貝尼烏斯範數(Frobenius norm)的求和項被稱為正則化項,其中是正則化參數,用以确定正則化項的約束力。可證明,當時,正則化項是凸函數(convex function);特别地,當時,L2正則化又被成為Tikhonov正則化(Tikhonov regularization)。時的Lp正則化有利于卷積核權重的稀疏化,但此時的正則化向不是凸函數。
卷積神經網絡中的空間随機失活(spatial dropout)是前饋神經網絡中随機失活理論的推廣。在全連接網絡的學習中,随機失活會随機将神經元的輸出歸零,而空間随機失活在叠代中會随機選取特征圖的通道使其歸零。進一步地,随機連接失活直接作用于卷積核,在叠代中使卷積核的部分權重歸零。研究表明空間随機失活和随機連接失活提升了卷積神經網絡的泛化能力,在學習樣本不足時有利于提升學習表現。
分批歸一化(Batch Normalization, BN)
數據的标準化是神經網絡輸入管道中預處理的常見步驟,但在深度網絡中,随着輸入數據在隐含層内的逐級傳遞,其均值和标準差會發生改變,産生協變漂移(covariate shift)現象。協變漂移被認為是深度網絡發生梯度消失(vanishing gradient)的原因之一。BN以引入額外學習參數為代價部分解決了此類問題,其策略是在隐含層中首先将特征标準化,然後使用兩個線性參數将标準化的特征放大作為新的輸入,神經網絡會在學習過程中更新其BN參數。卷積神經網絡中的BN參數與卷積核參數具有相同的性質,即特征圖中同一個通道的像素共享一組BN參數。此外使用BN時卷積層不需要偏差項,其功能由BN參數代替。
跳躍連接(skip connection)
跳躍連接或短路連接(shortcut connection)來源于循環神經網絡(Recurrent Neural Network, RNN)中的跳躍連接和各類門控算法,是被用于緩解深度結構中梯度消失問題的技術。卷積神經網絡中的跳躍連接可以跨越任意數量的隐含層,這裡以相鄰隐含層間的跳躍進行說明:
式中是特征圖的轉換系數,當和 的尺寸不同時,轉換系數将尺寸更小的特征圖,通常是轉換為的尺寸,确保矩陣元素運算成立。當的輸出值小而 的輸出值大時,卷積層的輸出近似于等值函數,對該層的特征傳遞沒有負面影響,因此設定了層的學習基線,使該層在叠代中至少不會退化。在BP框架内,部分誤差在反向傳播時可以跳過 層直接作用于層,補償了其在深度結構中逐級傳播造成的梯度損失,因此有利于深度結構的誤差傳播。包含跳躍連接的多個卷積層的組合被稱為殘差塊(residual block),是一些卷積神經網絡算法,例如ResNet的構築單元。
加速
通用加速技術
卷積神經網絡可以使用和其它深度學習算法類似的加速技術以提升運行效率,包括量化(quantization)、遷移學習(transfer learning)等。量化即在計算中使用低數值精度以提升計算速度,該技術在一些深度算法中有得到嘗試。對于卷積神經網絡,一個極端的例子是XNOR-Net,即僅由異或門(XNOR)搭建的卷積神經網絡。遷移學習一般性的策略是将非标簽數據遷移至标簽數據以提升神經網絡的表現,卷積神經網絡中遷移學習通常為使用在标簽數據下完成學習的卷積核權重初始化新的卷積神經網絡,對非标簽數據進行遷移,或應用于其它标簽數據以縮短學習過程。
FFT卷積
卷積神經網絡的卷積和池化計算都可以通過FFT轉換至頻率域内進行,此時卷積核權重與BP算法中梯度的FFT能夠被重複利用,逆FFT也隻需在輸出結果時使用,降低了計算複雜度。此外,作為應用較廣的科學和工程數值計算方法,一些數值計算工具包含了GPU設備的FFT,能提供進一步加速。FFT卷積在處理小尺寸的卷積核時可使用Winograd算法降低内存開銷。
權重稀疏化
在卷積神經網絡中對權重進行稀疏化,能夠減少卷積核的冗餘,降低計算複雜度,使用該技術的構築被稱為稀疏卷積神經網絡(Sparse Convolutional Neural Networks)。在對ImageNet數據的學習中,一個以90%比率稀疏化的卷積神經網絡的運行速度是同結構傳統卷積神經網絡的2至10倍,而輸出的分類精度僅損失了2%。
構築與算法
一維構築
時間延遲網絡(Time Delay Neural Network, TDNN)
TDNN是一類應用于語音識别問題的一維卷積神經網絡,也是曆史上最早被提出的卷積神經網絡算法之一。這裡以TDNN的原始版本Waibel et al. (1987)為例進行介紹。
TDNN的學習目标為對FFT變換的3個語音音節/b,d,g/進行分類,其隐含層完全由單位步長,無填充的卷積層組成。在文獻中,TDNN的卷積核尺寸使用“延遲(delay)”表述,由尺寸為3的一維卷積核構成的隐含層被定義為“時間延遲為2的隐含層”,即感受野包含無延遲輸入和2個延遲輸入。在此基礎上,TDNN有兩個卷積層,時間延遲分别為2和4,神經網絡中每個輸入信号與8個隐含層神經元相連。TDNN沒有全連接層,而是将尾端卷積層的輸出直接相加通過激勵函數得到分類結果。按原作,輸入TDNN的預處理數據為15個10毫秒采樣的樣本(frame),每個樣本包含16個通道參數(filterbank coefficients),此時TDNN的結構如下:
(3)×16×8的卷積層(步長為1,無填充,Sigmoid函數)
(5)×8×3的卷積層(步長為1,無填充,Sigmoid函數)
對9×3的特征圖求和輸出
列表中數字的含義為:(卷積核尺寸)×卷積核通道(與輸入數據通道數相同)×卷積核個數。TDNN的輸出層和兩個卷積層均使用Sigmoid函數作為激勵函數。除上述原始版本外,TDNN的後續研究中出現了應用于字符識别和物體識别的算法,其工作方式是将空間在通道維度展開并使用時間上的一維卷積核,即時間延遲進行學習。
WaveNet
WaveNet是被用于語音建模的一維卷積神經網絡,其特點是采用擴張卷積和跳躍連接提升了神經網絡對長距離依賴的學習能力。WaveNet面向序列數據設計,其結構和常見的卷積神經網絡有較大差異,這裡按Van Den Oord et al. (2016)做簡單介紹:
WaveNet以經過量化和獨熱編碼(one-hot encoding)的音頻作為輸入特征,具體為一個包含采樣和通道的二維數組。輸入特征在WaveNet中首先進入線性卷積核,得到的特征圖會通過多個擴張卷積塊(dilated stack),每個擴張卷積塊包含一個過濾器(filter)和一個門(gate),兩者都是步長為1,相同填充的線性卷積核,但前者使用雙曲正切函數作為激勵函數,後者使用Sigmoid函數。特征圖從過濾器和門輸出後會做矩陣元素乘法并通過由NIN構建的瓶頸層,所得結果的一部分會由跳躍連接直接輸出,另一部分與進入該擴張卷積塊前的特征圖進行線性組合進入下一個構築。WaveNet的末端部分将跳躍連接和擴張卷積塊的所有輸出相加并通過兩個ReLU-NIN結構,最後由歸一化指數函數輸出結果并使用交叉熵作為損失函數進行監督學習。WaveNet是一個生成模型(generative model),其輸出為每個序列元素相對于其之前所有元素的條件概率,與輸入序列具有相同的維度:
WaveNet被證實能夠生成接近真實的英文、中文和德文語音。在經過算法和運行效率的改進後,自2017年11月起,WaveNet開始為谷歌的商業應用“谷歌助手(Google Assistant)”提供語音合成。
二維構築
LeNet-5
LeNet-5是一個應用于圖像分類問題的卷積神經網絡,其學習目标是從一系列由32×32×1灰度圖像表示的手寫數字中識别和區分0-9。LeNet-5的隐含層由2個卷積層、2個池化層構築和2個全連接層組成,按如下方式構建:
(3×3)×1×6的卷積層(步長為1,無填充),2×2均值池化(步長為2,無填充),tanh激勵函數
(5×5)×6×16的卷積層(步長為1,無填充),2×2均值池化(步長為2,無填充),tanh激勵函數
2個全連接層,神經元數量為120和84
從現代深度學習的觀點來看,LeNet-5規模很小,但考慮LeCun et al. (1998)的數值計算條件,LeNet-5在該時期仍具有相當的複雜度。LeNet-5使用雙曲正切函數作為激勵函數,使用均方差(Mean Squared Error, MSE)作為誤差函數并對卷積操作進行了修改以減少計算開銷,這些設置在随後的卷積神經網絡算法中已被更優化的方法取代。在現代機器學習庫的範式下,LeNet-5是一個易于實現的算法,這裡提供一個使用TensorFlow和Keras的計算例子:
該例子使用MNIST數據代替LeCun et al. (1998)的原始數據,使用交叉熵(categorical cross-entropy)作為損失函數。
ILSVRC中的優勝算法
ILSVRC為各類應用于計算機視覺的人工智能算法提供了比較的平台,其中有多個卷積神經網絡算法在圖像分類和物體識别任務中獲得優勝,包括AlexNet、ZFNet、VGGNet、GoogLeNet和ResNet,這些算法在ImageNet數據中展現了良好的學習性能,也是卷積神經網絡發展中具有代表意義的算法。
對AlexNet、ZFNet的編程實現與LeNet-5類似,對VGGNet、GoogLeNet和ResNet的編程實現較為繁瑣,一些機器學習庫提供了完整的封裝模型和預學習的權重,這裡提供一些使用TensorFlow和Keras的例子:
1. AlexNet
AlexNet是2012年ILSVRC圖像分類和物體識别算法的優勝者,也是LetNet-5之後受到人工智能領域
關注的現代卷積神經網絡算法。AlexNet的隐含層由5個卷積層、3個池化層和3個全連接層組成,按如下方式構建:
(11×11)×3×96的卷積層(步長為4,無填充,ReLU),3×3極大池化(步長為2、無填充),LRN
(5×5)×96×256的卷積層(步長為1,相同填充,ReLU),3×3極大池化(步長為2、無填充),LRN
(3×3)×256×384的卷積層(步長為1,相同填充,ReLU)
(3×3)×384×384的卷積層(步長為1,相同填充,ReLU)
(3×3)×384×256的卷積層(步長為1,相同填充,ReLU),3×3極大池化(步長為2、無填充)
3個全連接層,神經元數量為4096、4096和1000
AlexNet在卷積層中選擇ReLU作為激勵函數,使用了随機失活,和數據增強(data data augmentation)技術,這些策略在其後的卷積神經網絡中被保留和使用。AlexNet也是首個基于GPU進行學習的卷積神經網絡,Krizhevsky (2012) 将AlexNet按結構分為兩部分,分别在兩塊GPU設備上運行。此外AlexNet的1-2部分使用了局部響應歸一化(local response normalization, LRN),在2014年後出現的卷積神經網絡中,LRN已由分批歸一化取代。
2. ZFNet
ZFNet是2013年ILSVRC圖像分類算法的優勝者,其結構與AlexNet相近,僅将第一個卷積層的卷積核大小調整為7×7、步長減半:
(7×7)×3×96的卷積層(步長為2,無填充,ReLU),3×3極大池化(步長為2、無填充),LRN
(5×5)×96×256的卷積層(步長為1,相同填充,ReLU),3×3極大池化(步長為2、無填充),LRN
(3×3)×256×384的卷積層(步長為1,相同填充,ReLU)
(3×3)×384×384的卷積層(步長為1,相同填充,ReLU)
(3×3)×384×256的卷積層(步長為1,相同填充,ReLU),3×3極大池化(步長為2、無填充)
3個全連接層,神經元數量為4096、4096和1000
ZFNet對卷積神經網絡的貢獻不在其構築本身,而在于其原作者通過反卷積考察了ZFNet内部的特征提取細節,解釋了卷積神經網絡的特征傳遞規律,即由簡單的邊緣、夾角過渡至更為複雜的全局特征。
3. VGGNet
VGGNet是牛津大學視覺幾何團隊(Visual Geometry Group, VGG)開發的一組卷積神經網絡算法,包括VGG-11、VGG-11-LRN、VGG-13、VGG-16和VGG-19。其中VGG-16是2014年ILSVRC物體識别算法的優勝者,其規模是AlexNet的2倍以上并擁有規律的結構,這裡以VGG-16為例介紹其構築。VGG-16的隐含層由13個卷積層、3個全連接層和5個池化層組成,按如下方式構建:
(3×3)×3×64的卷積層(步長為1,相同填充,ReLU),(3×3)×64×64的卷積層(步長為1,相同填充,ReLU),2×2極大池化(步長為2、無填充)
(3×3)×64×128的卷積層(步長為1,相同填充,ReLU),(3×3)×128×128的卷積層(步長為1,相同填充,ReLU),2×2極大池化(步長為2、無填充)
(3×3)×128×256的卷積層(步長為1,相同填充,ReLU),(3×3)×256×256的卷積層(步長為1,相同填充,ReLU),(3×3)×256×256的卷積層(步長為1,相同填充,ReLU),2×2極大池化(步長為2、無填充)
(3×3)×256×512的卷積層(步長為1,相同填充,ReLU),(3×3)×512×512的卷積層(步長為1,相同填充,ReLU),(3×3)×512×512的卷積層(步長為1,相同填充,ReLU),2×2極大池化(步長為2、無填充)
(3×3)×512×512的卷積層(步長為1,相同填充,ReLU),(3×3)×512×512的卷積層(步長為1,相同填充,ReLU),(3×3)×512×512的卷積層(步長為1,相同填充,ReLU),2×2極大池化(步長為2、無填充)
3個全連接層,神經元數量為4096、4096和1000
VGGNet構築中僅使用3×3的卷積核并保持卷積層中輸出特征圖尺寸不變,通道數加倍,池化層中輸出的特征圖尺寸減半,簡化了神經網絡的拓撲結構并取得了良好效果。
4. GoogLeNet
GoogLeNet是2014年ILSVRC圖像分類算法的優勝者,是首個以Inception模塊進行堆疊形成的大規模卷積神經網絡。GoogLeNet共有四個版本:Inception v1、Inception v2、Inception v3、Inception v4,這裡以Inception v1為例介紹。首先,Inception v1的Inception模塊被分為四部分:
N1個(1×1)×C的卷積核
B3個(1×1)×C的卷積核(BN,ReLU),N3個(3×3)×96的卷積核(步長為1,相同填充,BN,ReLU)
B5個(1×1)×C的卷積核(BN,ReLU),N5個(5×5)×16的卷積核(步長為1,相同填充,BN,ReLU)
3×3的極大池化(步長為1,相同填充),Np個(1×1)×C的卷積核(BN,ReLU)
在此基礎上,對3通道的RGB圖像輸入,Inception v1按如下方式構建:
(7×7)×3×64的卷積層(步長為2,無填充,BN,ReLU),3×3的極大池化(步長為2,相同填充),LRN
(3×3)×64×192的卷積層(步長為1,相同填充,BN,ReLU),LRN,3×3極大池化(步長為2,相同填充)
Inception模塊(N1=64,B3=96,N3=128,B5=16,N5=32,Np=32)
Inception模塊(N1=128,B3=128,N3=192,B5=32,N5=96,Np=64)
3×3極大池化(步長為2,相同填充)
Inception模塊(N1=192,B3=96,N3=208,B5=16,N5=48,Np=64)
旁枝:5×5均值池化(步長為3,無填充)
Inception模塊(N1=160,B3=112,N3=224,B5=24,N5=64,Np=64)
Inception模塊(N1=128,B3=128,N3=256,B5=24,N5=64,Np=64)
Inception模塊(N1=112,B3=144,N3=288,B5=32,N5=64,Np=64)
旁枝:5×5均值池化(步長為3,無填充)
Inception模塊(N1=256,B3=160,N3=320,B5=32,N5=128,Np=128)
Inception模塊(N1=384,B3=192,N3=384,B5=48,N5=128,Np=128)
全局均值池化,1個全連接層,神經元數量為1000,權重40%随機失活
GoogLeNet中的Inception模塊啟發了一些更為現代的算法,例如2017年提出的Xception。Inception v1的另一特色是其隐含層中的兩個旁枝輸出,旁枝和主幹的所有輸出會通過指數歸一化函數得到結果,對神經網絡起正則化的作用。
5. 殘差神經網絡(Residual Network, ResNet)
ResNet來自微軟的人工智能團隊Microsoft Research,是2015年ILSVRC圖像分類和物體識别算法的優勝者,其表現超過了GoogLeNet的第三代版本Inception v3。ResNet是使用殘差塊建立的大規模卷積神經網絡,其規模是AlexNet的20倍、VGG-16的8倍,在ResNet的原始版本中,其殘差塊由2個卷積層、1個跳躍連接、BN和激勵函數組成,ResNet的隐含層共包含16個殘差塊,按如下方式構建:
(7×7)×3×64的卷積層(步長為2,無填充,ReLU,BN),3×3的極大池化(步長為2,相同填充)
3個殘差塊:3×3×64×64卷積層(步長為1,無填充,ReLU,BN),3×3×64×64卷積層(步長為1,無填充)
1個殘差塊:3×3×64×128(步長為2,無填充,ReLU,BN),3×3×128×128(步長為1,無填充,ReLU,BN)
3個殘差塊:3×3×128×128(步長為1,無填充,ReLU,BN),3×3×128×128(步長為1,無填充,ReLU,BN)
1個殘差塊:3×3×128×256(步長為2,無填充,ReLU,BN),3×3×256×256(步長為1,無填充,ReLU,BN)
5個殘差塊:3×3×256×256(步長為1,無填充,ReLU,BN),3×3×256×256(步長為1,無填充,ReLU,BN)
1個殘差塊:3×3×256×512(步長為2,無填充,ReLU,BN),3×3×512×512(步長為1,無填充,ReLU,BN)
2個殘差塊:3×3×512×512(步長為1,無填充,ReLU,BN),3×3×512×512(步長為1,無填充,ReLU,BN)
全局均值池化,1個全連接層,神經元數量為1000
ResNet受到關注的原因是其在隐含層中通過跳躍連接構建的殘差塊。殘差塊的堆疊緩解了深度神經網絡普遍出現的梯度消失(gradient vanishing)問題,被其後的諸多算法使用,包括GoogLeNet中的Inception v4。
在ResNet的基礎上諸多研究嘗試了改進算法,包括預激活ResNet(preactivation ResNet)、寬ResNet(wide ResNet)、随機深度ResNets(Stochastic Depth ResNets, SDR)和RiR(ResNet in ResNet)等。預激活ResNet将激勵函數和BN計算置于卷積核之前以提升學習表現和更快的學習速度;寬ResNet使用更多通道的卷積核以提升原ResNet的寬度,并嘗試在學習中引入随機失活等正則化技術;SDR在學習中随機使卷積層失活并用等值函數取代以達到正則化的效果;RiR使用包含跳躍連接和傳統卷積層的并行結構建立廣義殘差塊,對ResNet進行了推廣。上述改進算法都報告了比傳統ResNet更好的學習表現,但尚未在使用基準數據的大規模比較,例如ILSVRC中得到驗證。
全卷積構築
部分計算機視覺問題,例如圖像語義分割(semantic segmentation)和超分辨率圖像生成(super resolution imaging)要求輸入與輸出均為格點數據且輸入端的特征圖大小可變。全卷積構築為解決上述問題而設計的神經網絡算法。
SRCNN(Super Resolution CNN)
SRCNN是最早被提出的全卷積構築之一,被應用于超分辨率圖像生成。其構築分為3部分:特征提取端、非線性映射和特征重構,其中特征提取端将低分辨率輸入按插值算法升采樣至目标分辨率并使用9x9的卷積核提取特征;非線性映射是一個瓶頸層,進行低分辨率特征和高分辨率特征的線性變換。特征重構端是一個轉置卷積,将高分辨率特征重構是目标分辨率并輸出結果。
UNet
UNet是一個包含4層降采樣、4層升采樣和類似跳躍連接結構的全卷積網絡,其特點是卷積層在降采樣和升采樣部分完全對稱,且降采樣端的特征圖可以跳過深層采樣,被拼接至對應的升采樣端。UNet在其提出之初主要被用于醫學影像的語義分割,并在之後的應用研究中被擴展至3維視頻數據的語義分割和超分辨率圖像生成。UNet是一個泛用性較好的全卷積網絡,也衍生出了一些面向特定問題的改進版本,例如在降采樣端引入殘差塊構築的HDense-UNet、包含深監督設計和模型剪枝的UNet++等。
性質
連接性
卷積神經網絡中卷積層間的連接被稱為稀疏連接(sparse connection),即相比于前饋神經網絡中的全連接,卷積層中的神經元僅與其相鄰層的部分,而非全部神經元相連。具體地,卷積神經網絡第l層特征圖中的任意一個像素(神經元)都僅是l-1層中卷積核所定義的感受野内的像素的線性組合。卷積神經網絡的稀疏連接具有正則化的效果,提高了網絡結構的穩定性和泛化能力,避免過度拟合,同時,稀疏連接減少了權重參數的總量,有利于神經網絡的快速學習,和在計算時減少内存開銷。
卷積神經網絡中特征圖同一通道内的所有像素共享一組卷積核權重系數,該性質被稱為權重共享(weight sharing)。權重共享将卷積神經網絡和其它包含局部連接結構的神經網絡相區分,後者雖然使用了稀疏連接,但不同連接的權重是不同的。權重共享和稀疏連接一樣,減少了卷積神經網絡的參數總量,并具有正則化的效果。
在全連接網絡視角下,卷積神經網絡的稀疏連接和權重共享可以被視為兩個無限強的先驗(pirior),即一個隐含層神經元在其感受野之外的所有權重系數恒為0(但感受野可以在空間移動);且在一個通道内,所有神經元的權重系數相同。
表征學習
作為深度學習的代表算法,卷積神經網絡具有表征學習能力,即能夠從輸入信息中提取高階特征。具體地,卷積神經網絡中的卷積層和池化層能夠響應輸入特征的平移不變性,即能夠識别位于空間不同位置的相近特征。能夠提取平移不變特征是卷積神經網絡在計算機視覺問題中得到應用的原因之一。
平移不變特征在卷積神經網絡内部的傳遞具有一般性的規律。在圖像處理問題中,卷積神經網絡前部的特征圖通常會提取圖像中有代表性的高頻和低頻特征;随後經過池化的特征圖會顯示出輸入圖像的邊緣特征(aliasing artifacts);當信号進入更深的隐含層後,其更一般、更完整的特征會被提取。反卷積和反池化(un-pooling)可以對卷積神經網絡的隐含層特征進行可視化。一個成功的卷積神經網絡中,傳遞至全連接層的特征圖會包含與學習目标相同的特征,例如圖像分類中各個類别的完整圖像。
生物學相似性
卷積神經網絡中基于感受野設定的稀疏連接有明确對應的神經科學過程——視覺神經系統中視覺皮層(visual cortex)對視覺空間(visual space)的組織。視覺皮層細胞從視網膜上的光感受器接收信号,但單個視覺皮層細胞不會接收光感受器的所有信号,而是隻接受其所支配的刺激區域,即感受野内的信号。隻有感受野内的刺激才能夠激活該神經元。多個視覺皮層細胞通過系統地将感受野疊加完整接收視網膜傳遞的信号并建立視覺空間。事實上機器學習的“感受野”一詞即來自其對應的生物學研究。卷積神經網絡中的權重共享的性質在生物學中沒有明确證據,但在對與大腦學習密切相關的目标傳播(target-propagation, TP)和反饋調整(feedback alignment, FA) 機制的研究中,權重共享提升了學習效果。
應用
計算機視覺
圖像識别(image classification)
卷積神經網絡長期以來是圖像識别領域的核心算法之一,并在學習數據充足時有穩定的表現。對于一般的大規模圖像分類問題,卷積神經網絡可用于構建階層分類器(hierarchical classifier),也可以在精細分類識别(fine-grained recognition)中用于提取圖像的判别特征以供其它分類器進行學習。對于後者,特征提取可以人為地将圖像的不同部分分别輸入卷積神經網絡,也可以由卷積神經網絡通過非監督學習自行提取。
對于字符檢測(text detection)和字符識别(text recognition)/光學字符讀取,卷積神經網絡被用于判斷輸入的圖像是否包含字符,并從中剪取有效的字符片斷。其中使用多個歸一化指數函數直接分類的卷積神經網絡被用于谷歌街景圖像的門牌号識别、包含條件随機場(Conditional Random Fields, CRF)圖模型的卷積神經網絡可以識别圖像中的單詞,卷積神經網絡與循環神經網絡(Recurrent Neural Network, RNN)相結合可以分别從圖像中提取字符特征和進行序列标注(sequence labelling)。
物體識别(object recognition)
卷積神經網絡可以通過三類方法進行物體識别:滑動窗口(sliding window)、選擇性搜索(selective search)和YOLO(You Only Look Once)。滑動窗口出現最早,并被用于手勢識别等問題,但由于計算量大,已經被後兩者淘汰。選擇性搜索對應區域卷積神經網絡(Region-based CNN),該算法首先通過一般性步驟判斷一個窗口是否可能有目标物體,并進一步将其輸入複雜的識别器中。YOLO算法将物體識别定義為對圖像中分割框内各目标出現概率的回歸問題,并對所有分割框使用同一個卷積神經網絡輸出各個目标的概率,中心坐标和框的尺寸。基于卷積神經網絡的物體識别已被應用于自動駕駛和交通實時監測系統。
此外,卷積神經網在圖像語義分割(semantic segmentation)、場景分類(scene labeling)和圖像顯著度檢測(Visual Saliency Detection)等問題中也有應用,其表現被證實超過了很多使用特征工程的分類系統。
行為認知(action recognition)
在針對圖像的行為認知研究中,卷積神經網絡提取的圖像特征被應用于行為分類(action classification)。在視頻的行為認知問題中,卷積神經網絡可以保持其二維結構并通過堆疊連續時間片段的特征進行學習、建立沿時間軸變化的3D卷積神經網絡、或者逐幀提取特征并輸入循環神經網絡,三者在特定問題下都可以表現出良好的效果。
姿态估計(pose estimation)
姿态估計在圖像中将人的姿态用坐标的形式輸出,最早在姿态估計中使用的卷積神經網絡是DeepPose,DeepPose的結構類似于AlexNet,以完整的圖片作為輸出,按監督學習的方式訓練并輸出坐标點。此外也有關于局部姿态估計的卷積神經網絡應用研究。對于視頻數據,有研究使用滑動窗口的卷積神經網絡進行逐幀的姿态估計。
神經風格遷移(neural style transfer)
神經風格遷移是卷積神經網絡的一項特殊應用,其功能是在給定的兩份圖像的基礎上創作第三份圖像,并使其内容和風格與給定的圖像盡可能地接近。
神經風格遷移在本質上不是一個機器學習問題,而是對卷積神經網絡表征學習能力的應用。具體地,神經風格遷移在預學習的卷積神經網絡中提取高階層表征,通過表征定義内容(content loss)和風格(style loss)損失,并在第三份圖像(通常初始化為白噪聲)中對内容和風格的線性組合進行逐格點優化以輸出結果。
神經風格遷移除進行藝術創作外,也被用于照片的後處理和超分辨率圖像生成。
自然語言處理
總體而言,由于受到窗口或卷積核尺寸的限制,無法很好地學習自然語言數據的長距離依賴和結構化語法特征,卷積神經網絡在自然語言處理(Natural Language Processing, NLP)中的應用要少于循環神經網絡,且在很多問題中會在循環神經網絡的構架上進行設計,但也有一些卷積神經網絡算法在多個NLP主題中取得成功。
在語音處理(speech processing)領域,卷積神經網絡的表現被證實優于隐馬爾可夫模型(Hidden Markov Model, HMM)、高斯混合模型(Gaussian Mixture Model, GMM )和其它一些深度算法。有研究使用卷積神經網絡和HMM的混合模型進行語音處理,模型使用了小的卷積核并将替池化層用全連接層代替以提升其學習能力。卷積神經網絡也可用于語音合成(speech synthesis)和語言建模(language modeling),例如WaveNet使用卷積神經網絡構建的生成模型輸出語音的條件概率,并采樣合成語音。卷積神經網絡與長短記憶模型(Long Short Term Memory model, LSTM)相結合可以很好地對輸入句子進行補全。其它有關的工作包括genCNN、ByteNet等。
其它
物理學
卷積神經網絡在包含大數據問題的物理學研究中有得到關注。在高能物理學中,卷積神經網絡被用于粒子對撞機(particle colliders)輸出的噴流圖(jet image)的分析和特征學習,有關研究包括誇克(quark)/膠子(gluon)分類、W玻色子(W boson)識别和中微子相互作用(neutrino interaction)研究等。卷積神經網絡在天體物理學中也有應用,有研究使用卷積神經網絡對天文望遠鏡圖像進行星系形态學(galaxy morphology)分析和提取星系模型(galactic model)參數。利用遷移學習技術,預訓練的卷積神經網絡可以對LIGO(Laser Interferometer Gravitational-wave Observatory)數據中的噪聲(glitch)進行檢測,為數據的預處理提供幫助。
遙感科學
卷積神經網絡在遙感科學,尤其是衛星遙感中有得到應用,并被認為在解析遙感圖像的幾何、紋理和空間分布特征時,有計算效率和分類準确度方面的優勢。依據遙感圖像的來源和目的,卷積神經網絡被用于下墊面使用和類型改變(land use/land cover change) 研究以及物理量,例如海冰覆蓋率(sea-ice concentration)的遙感反演。此外卷積神經網絡被用于遙感圖像的物體識别和圖像語義分割,後兩者是直接的計算機視覺問題,這裡不再贅述。
大氣科學
在大氣科學中,卷積神經網絡被用于數值模式格點輸出的後處理問題,包括統計降尺度(Statistical Downscaling, SD)、預報校準、極端天氣檢測等。
在統計降尺度方面,以SRCNN、UNet為代表的全卷積網絡可以将插值到高分辨率的(低分辨率)原始氣象數據和高分辨率的數字高程模型(Degital Elevation Model, DEM)作為輸入,并輸出高分辨率的氣象數據,其準确率超過了傳統的空間分解誤差訂正(Bias Corrected Spatial Disaggregation, BCSD)方法。
在極端天氣檢測方面,仿AlexNet結構的卷積神經網絡在監督學習和半監督學習中被證實能以很高的準确度識别氣候模式輸出和再分析數據(reanalysis data)中的熱帶氣旋(tropical cyclones)、大氣層河流(atmospheric rivers)和鋒面(weather fronts)現象。
包含卷積神經網絡的編程模塊
現代主流的機器學習庫和界面,包括TensorFlow、Keras、Thenao、Microsoft-CNTK等都可以運行卷積神經網絡算法。此外一些商用數值計算軟件,例如MATLAB也有卷積神經網絡的構建工具可用。



















