国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于TensorFlow的卷積神經(jīng)網(wǎng)絡(luò)的研究與實現(xiàn)

2018-11-05 07:48:58鄭攀海郭凌丁立兵
電子技術(shù)與軟件工程 2018年18期
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò)

鄭攀海 郭凌 丁立兵

摘要: 本文基于TensorFlow設(shè)計一種卷積神經(jīng)網(wǎng)絡(luò)。通過介紹卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),研究卷積神經(jīng)網(wǎng)絡(luò)中的前向傳播和反向傳播算法,推導(dǎo)了前向傳播和反向傳播的數(shù)學(xué)公式,并利用TensorFlow買現(xiàn)一種卷積神經(jīng)網(wǎng)絡(luò)。在CIFAR10數(shù)據(jù)集上訓(xùn)練6 000次的topl準確率為74.3%,驗證了方法的有效性。

【關(guān)鍵詞】TensorFlow 卷積神經(jīng)網(wǎng)絡(luò) 前向傳播 反向傳播

近年來卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、目標檢測、圖像語義分割等領(lǐng)域取得了一系列突破性的研究成果。卷積神經(jīng)網(wǎng)絡(luò)強大的特征學(xué)習(xí)與分類能力引起了廣泛的關(guān)注,具有重要的分析與研究價值[1]。

卷積神經(jīng)網(wǎng)絡(luò)的概念最早源于19世紀60年代科學(xué)家研究貓的視覺皮層細胞時,提出的感受野[2,3]概念。即每一個視覺神經(jīng)元,只會處理一小塊區(qū)域的視覺圖像。20世紀80年代,日本科學(xué)家提出的神經(jīng)認知機制[4]是最早實現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)。神經(jīng)認知機制中包含兩類神經(jīng)元,第一類用來抽取特征的S-cells,對應(yīng)卷積核濾波操作。第二類是用來抗變形的C-cells,對應(yīng)激活函數(shù)和最大池化操作。通常用全連接網(wǎng)絡(luò)將像素點作為輸入特征處理圖像問題[5],沒有充分利用到圖像空間上的局部相關(guān)性,這種方法的最大問題就是參數(shù)太多,導(dǎo)致訓(xùn)練時間長,甚至不能訓(xùn)練和過擬合等一系列問題。而卷積神經(jīng)網(wǎng)絡(luò)有效利用了圖像在空間結(jié)構(gòu)上的關(guān)系,從而減少需要學(xué)習(xí)的參數(shù)量,提高BP算法的效率。在LeNet-5,VGGNer,InceptionNet,ResNet[6,7,8,9]等系列經(jīng)典的圖像處理算法中都使用了卷積層做為圖像的特征提取代替人工提取。

機器學(xué)習(xí)的一個重要問題就是模型轉(zhuǎn)化成程序需要花費大量的時間、精力。而谷歌第二代分布式機器學(xué)習(xí)系統(tǒng)TensorFlow[10]很好的緩解了這個問題。TensorFlow于2015年11月在GitHub開源。自開源以來用戶量急劇增加,遠遠領(lǐng)先其他深度學(xué)習(xí)開源框架。TensorFlow的核心概念是計算圖,計算圖是對計算模型的一種抽象。圖上每一個運算操作作為節(jié)點,節(jié)點與節(jié)點之間的連接稱為邊,在邊中流動的數(shù)據(jù)稱為張量。會話(Session)是用戶使用TensFlow時的交互接口,在TensorFlow中使用會話來執(zhí)行定義好的計算圖的運算。TensorFlow對神經(jīng)網(wǎng)絡(luò)中常用的梯度下降算法,BP算法和卷積神經(jīng)網(wǎng)絡(luò)都有很好的封裝,從而開發(fā)人員可以簡單而快速的將設(shè)計的神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)換成程序,并進行研究和測試。這極大的縮短開發(fā)周期和促進了機器學(xué)習(xí)的普及。

本文的主要工作是基于TensorFlow,討論卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),推導(dǎo)了卷積神經(jīng)網(wǎng)絡(luò)的前向傳播和反向傳播算法,對TensorFlow在實現(xiàn)神經(jīng)網(wǎng)絡(luò)中常用的函數(shù)做了介紹,設(shè)計了一種卷積神經(jīng)網(wǎng)絡(luò),并在CIFARl0數(shù)據(jù)集上進行訓(xùn)練。

1 卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)

卷積神經(jīng)網(wǎng)絡(luò)與全連接神經(jīng)網(wǎng)絡(luò)類似,從眾多經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)歸納出用于圖片分類問題的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu),卷積神經(jīng)網(wǎng)絡(luò)由輸入層、若干卷積層、池化層和全連接層組成[11]。下面主要介紹卷積神經(jīng)網(wǎng)絡(luò)核心卷積層以及池化層。

1.1 卷積層及其前向傳播算法

卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心部分,也被稱為過濾器(filter)或者卷積核,即動物視覺中的感受野。圖l給出了卷積核的結(jié)構(gòu)示意圖。卷積核在數(shù)學(xué)中就是三維矩陣,矩陣的長度與寬度一般由人工指定。常用的大小是3x3或5X5。深度與前一層網(wǎng)絡(luò)節(jié)點矩陣深度一致。卷積的好處是不管圖片尺寸如何,需要訓(xùn)練的權(quán)值數(shù)量僅與卷積核的大小、卷積核的數(shù)量有關(guān),從而減少了網(wǎng)絡(luò)中的參數(shù)。

卷積神經(jīng)網(wǎng)絡(luò)的前向傳播算法中需要指定卷積核的深度,卷積核矩陣的尺寸。為了增加對邊緣像素的利用一般會在輸入矩陣的周圍加上若干圈O,再進行計算,這個過程稱為填充(padding)。卷積過程中每次移動的像素距離的大小我們定義為步幅(stride)。

圖2是前向傳播的過程示意圖,由圖2可以歸納出前向傳播算法的公式:

其中參數(shù)hik是經(jīng)過卷積核后更高維的特征圖中像素點的權(quán)值;aij是輸入該層網(wǎng)絡(luò)的圖像的像素點權(quán)值;Wij是該像素點對應(yīng)的權(quán)重,即是需要訓(xùn)練的神經(jīng)網(wǎng)絡(luò)參數(shù);n是卷積核的尺寸,s是步幅,σ是激活函數(shù),b是偏置項;1i是輸入矩陣的長,ki是輸入矩陣的寬,p是填充項,1、k分別是高維特征圖矩陣的長和寬。

由圖2可以看出卷積核具有權(quán)值共享,即一個卷積層可以有多個不同的卷積核,而每一個卷積核都對應(yīng)一個濾波后映射出的新圖像。同一個新圖像中每一個像素都來自完全相同的卷積核。權(quán)值共享可以有效減少網(wǎng)絡(luò)的參數(shù)降低模型復(fù)雜度,減輕過擬合的問題。但是權(quán)值共享后會導(dǎo)致一種卷積核只能提取一種特征。為了增加卷積神經(jīng)網(wǎng)絡(luò)的表達能力,需要設(shè)計多個核,在網(wǎng)絡(luò)中的表現(xiàn)就是增加了特征圖的深度。

以python語言為例在使用TensoFlow前以import tensorfiow as tf將其導(dǎo)入到程序中。在TensorFlow中函數(shù)tf.nn.conv2d()可以實現(xiàn)卷積網(wǎng)絡(luò)前向傳播算法,調(diào)用格式如下: tf.nn.conv2d(input, filter, strides, padding)

(1)

其中mput是上一層網(wǎng)絡(luò)的輸出,filter是該層網(wǎng)絡(luò)的卷積核,strides是每次移動的步長,padding有兩個參數(shù),SAME表示添加全O填充,VALID表示不填充。

1.2 池化層及其前向傳播算法

引入池化層能有效的縮小特征圖矩陣的尺寸,減小最后全連接層中的參數(shù)數(shù)量,防止過擬合問題。池化層的前向傳播過程與卷積層前向傳播過程類似,通過過濾器在圖片上滑動完成。池化層過濾器中的計算不是節(jié)點的加權(quán)和,而是采用更加簡單的最大值或者平均值運算,相應(yīng)的被稱為最大池化層和平均池化層。在TensorFlow中函數(shù)tfnn.max_pool實現(xiàn)了最大池化層的前向傳播算法調(diào)用格式如下:

tf.nn.max_pool(input,filter,strides,padding)

這里的參數(shù)意義與(1)式一致。

1.3 梯度下降算法和反向傳播算法

神經(jīng)網(wǎng)絡(luò)的優(yōu)化過程分為兩階段。第一階段通過前向傳播算法計算得到預(yù)測值,將預(yù)測值和真實值之間做對比得出兩者之間的差距。第二階段通過反向傳播算法計算損失函數(shù)對每一個參數(shù)的梯度,再根據(jù)梯度和學(xué)習(xí)率使用梯度下降算法更新每一個參數(shù)。在實際應(yīng)用中梯度下降算法計算時間長,為了加速更新過程可以使用隨機梯度下降算法和動量梯度下降算法。假設(shè)用0表示神經(jīng)網(wǎng)絡(luò)參數(shù),J(0)表示在給定參數(shù)取值下,訓(xùn)練數(shù)據(jù)集上損失函數(shù)的大小。神經(jīng)網(wǎng)絡(luò)的訓(xùn)練目標可以抽象為尋找參數(shù)θ,使得J(θ)最小。梯度下降算法參數(shù)更新公式為:

其中η定義為學(xué)習(xí)率即每次參數(shù)更新的幅度。

BP算法是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的核心算法,主要的思想是網(wǎng)絡(luò)最后輸出的結(jié)果與真實值比較計算誤差,利用鏈式求導(dǎo)法將誤差反向逐級傳下去。圖3為反向傳播示意圖,其中conv.表示第i層卷積,下面將結(jié)合圖3推導(dǎo)反向傳播算法。

假設(shè)第i層權(quán)重系數(shù)為w.,偏置系數(shù)為bi,輸出為fi(x),則根據(jù)前向傳播算法可得:

定義C(x)為代價函數(shù),根據(jù)梯度下降算法得參數(shù)更新公式:

在TensorFlow中可采用下述三種優(yōu)化器實現(xiàn)反向傳播算法:

tftrain.GradientDescentOptimizer(learningrate).minimize(loss),

tf.train.MomentumOptimizer(learningrate,momentum).minimize(loss),

tf.train.AdamOptimizer(learning_rate)minimize(loss)

其中l(wèi)eaming_rate是學(xué)習(xí)率,是神經(jīng)網(wǎng)絡(luò)中重要的超參數(shù),學(xué)習(xí)率過大可能導(dǎo)致模型不收斂,學(xué)習(xí)率過小可能導(dǎo)致模型收斂速度慢。loss值為需要優(yōu)化的損失函數(shù)。以上為基于灰度圖像提出了卷積神經(jīng)網(wǎng)絡(luò)的前向傳播和反向傳播算法。對于RGB圖像,可以將其視為三張互不相關(guān)的灰度圖進行并行處理。

2 利用卷積神經(jīng)網(wǎng)絡(luò)對ClFAR-10識別

本文的訓(xùn)練數(shù)據(jù)集采用CIFAR-10數(shù)據(jù)集。CIFAR-10數(shù)據(jù)集包含60000張32*32的彩色圖像,其中訓(xùn)練集50000張,測試集10000張,含有10類圖片分別是airplane、automobile、bird. cat、deer. dog、frog、horse. ship.truck。其中每類的圖片6000張,每張圖片上只含一類目標。

2.1 設(shè)計卷積神經(jīng)網(wǎng)絡(luò)

一個卷積神經(jīng)網(wǎng)絡(luò)主要由輸入層、卷積層、池化層、全連接層、Softmax[12]層組成。輸入層是整個神經(jīng)網(wǎng)絡(luò)的輸入,對于處理圖像的卷積神經(jīng)網(wǎng)絡(luò)一般是由圖片的像素點。全連接層是由全連接神經(jīng)網(wǎng)絡(luò)所構(gòu)成的,在經(jīng)過多輪的卷積層和池化層處理得到信息含量更高的特征后,利用全連接神經(jīng)網(wǎng)絡(luò)給出最后的分類結(jié)果。交叉熵函數(shù)是分類問題中使用較廣泛的損失函數(shù),刻畫了兩個概率分布之間的距離。

softmax的定義公式:

其中zi表示輸出為第i類的概率。

從定義式可以看出原始神經(jīng)網(wǎng)絡(luò)被用作置信度來生成新的輸出,而新的輸出滿足概率分布的定義。這個新的輸出,可以認為是經(jīng)過神經(jīng)網(wǎng)絡(luò)的推導(dǎo)一個樣例為不同類別的概率。這樣就將神經(jīng)網(wǎng)絡(luò)的輸出變成了概率分布,從而可以使用交叉熵函數(shù)來預(yù)測概率分布和真實答案的概率分布之間的距離。交叉熵一般會與sofimax回歸一起使用,Tensorflow對這兩個功能進行了統(tǒng)一封裝。定義了交叉熵損失函數(shù)調(diào)用代碼如下:

cross_entropy= tf.nn.softmax_crossentropy_with_logits(y,_y)

其中y代表了原始神經(jīng)網(wǎng)絡(luò)的輸出結(jié)果,-y代表標準答案。

表1給出了一種用于解決CIFAR-10識別問題的卷積神經(jīng)網(wǎng)絡(luò)模型,使用局部響應(yīng)歸一化層LRN對結(jié)果處理[13],LRN最早是Alex提出,原理是模仿生物神經(jīng)系統(tǒng)的“側(cè)抑制”機制,引入對神經(jīng)元活動的正反饋機制,讓其中響應(yīng)比較大的值權(quán)重更新最大,抑制反饋較小的神經(jīng)元的更新。增強模型泛化能力。

整個模型的激活函數(shù)采用RELU函數(shù),池化層采用最大池化。為了防止模型過于復(fù)雜在模型中加入刻畫模型復(fù)雜程度的指標R(w)。在優(yōu)化損失函數(shù)時不是直接優(yōu)化J(θ),而是優(yōu)化J(θ)+λR(W),其中λ表示模型復(fù)雜損失在總損失中所占的比例。常用刻畫R(w)函數(shù)有兩種,一種是Ll正則化計算公式是:

另一種是L2正則化計算公式是:

本文采用的是L2正則化。

深度學(xué)習(xí)在圖像識別上領(lǐng)先其他算法的主要因素是對海量數(shù)據(jù)的高效利用,我們采用了對圖片進行翻轉(zhuǎn),色彩調(diào)整,大小調(diào)整,亮度調(diào)整,隨機剪裁等圖像處理方式,得到更多樣本提高了模型的泛化能力。

2.2 實驗結(jié)果

圖4給出了模型的訓(xùn)練6000次結(jié)果top-l準確率達到74.3%。

對實驗結(jié)果利用TensorFlow中的數(shù)據(jù)可視化工具Tensorboard進行觀察。Tensorboard設(shè)計的交互過程能將運行過程中的計算圖、各種指標隨著時間的變化趨勢以圖像的形式清晰的展示出來。圖5為損失函數(shù)在訓(xùn)練過程變化趨勢,在Tensorboard中由圖5可見loss值不斷呈下降趨勢。

4 結(jié)語

目前,機器學(xué)習(xí)己廣泛的運用于工業(yè)界與學(xué)術(shù)界。本文研究了卷積神經(jīng)網(wǎng)絡(luò)并利用TensorFlow快速實現(xiàn)并訓(xùn)練神經(jīng)網(wǎng)絡(luò),對深度學(xué)習(xí)算法的發(fā)展與未來應(yīng)用具有一定的意義。

參考文獻

[1]李彥冬,郝宗波,雷航,卷積神經(jīng)網(wǎng)絡(luò)研究綜述[J].計算機應(yīng)用,2016, 36(09): 2508-2515+2565.

[2] Hubel D H,Wiesel T N.Receptivefields, binocular interaction andfunctional architectures in catsvisual cortex[J].Journal of Physiology,1962,160 (01):106-154.

[3]張振,陳哲,呂莉,王鑫,徐立中,基于視覺感受野的自適應(yīng)背景抑制方法[J].儀器儀表學(xué)報,2014, 35( 01):191-199.

[4]孟丹,基于深度學(xué)習(xí)的圖像分類方法研究[D].華東師范大學(xué),2017.

[5] Fukushima K,Miyake S.Neocognitron: ASelf-Organizing Neural Network Modelfor a Mechanism of Visual PatternRecognition [J]. IEEE Transactions onSystems Man&Cybernetics;, 1982,SMC-13 (05): 826-834.

[6]Lecun Y,Bottou L,Bengio Y,et al.Gradient-based learning applied todocument

recognition [C]. Proceedingsof the IEEE, 1998, 86 (11): 2278-2324.

[7]Simonyan K,Zisserman A.Very DeepConvolutional Networks for Large-Scale Image Recognition [J]. ComputerScience,2 014.

[8] Szegedy C,Liu W,Jia Y,et al. Goingdeeper with convolutions [C]. IEEEConference on Computer Vision andPattern Recognition, 2015:1-9.

[9]He K,Zhang X,Ren S,et al. IdentityMappings in Deep ResidualNetworks [C]. European Conferenceon Computer Vision. Springer,Cham。2016: 630-645.

[10]姜新猛,基于TensorFlow的卷積神經(jīng)網(wǎng)絡(luò)的應(yīng)用研究[D].華中師范大學(xué),2 017.

[11]孫亞軍,劉志勤,曹磊,全連接和隨機連接神經(jīng)網(wǎng)絡(luò)并行實現(xiàn)的性能分析[J].計算機科學(xué),2000,7 (03): 96-97.

[12]冉鵬,王靈,李昕,劉鵬偉,改進Sof tmax分類器的深度卷積神經(jīng)網(wǎng)絡(luò)及其在人臉識別中的應(yīng)用[J].上海大學(xué)學(xué)報,2018, 24 (30): 352-366.

[13]龍賀兆.基于稀疏深層網(wǎng)絡(luò)的SAR圖像分類方法[D].西安電子科技大學(xué),2015.

猜你喜歡
卷積神經(jīng)網(wǎng)絡(luò)
基于深度神經(jīng)網(wǎng)絡(luò)的微表情識別
卷積神經(jīng)網(wǎng)絡(luò)中減少訓(xùn)練樣本時間方法研究
卷積神經(jīng)網(wǎng)絡(luò)語言模型研究
基于卷積神經(jīng)網(wǎng)絡(luò)的車輛檢索方法研究
基于卷積神經(jīng)網(wǎng)絡(luò)溫室智能大棚監(jiān)控系統(tǒng)的研究
基于深度卷積神經(jīng)網(wǎng)絡(luò)的物體識別算法
深度學(xué)習(xí)算法應(yīng)用于巖石圖像處理的可行性研究
基于深度卷積網(wǎng)絡(luò)的人臉年齡分析算法與實現(xiàn)
軟件工程(2016年8期)2016-10-25 15:47:34
深度學(xué)習(xí)技術(shù)下的中文微博情感的分析與研究
軟件(2016年5期)2016-08-30 06:27:49
基于卷積神經(jīng)網(wǎng)絡(luò)的樹葉識別的算法的研究
丹阳市| 齐齐哈尔市| 富蕴县| 大名县| 黑水县| 湖口县| 五原县| 来凤县| 盖州市| 汶上县| 嘉黎县| 四平市| 宁国市| 来凤县| 桂平市| 门源| 通辽市| 灵丘县| 鹤岗市| 体育| 科技| 蒲江县| 永定县| 宿州市| 张家口市| 从江县| 哈尔滨市| 秀山| 冷水江市| 金乡县| 娱乐| 青田县| 隆子县| 四会市| 宁陕县| 九台市| 四平市| 五原县| 临夏县| 石嘴山市| 涪陵区|