![畢業(yè)論文-基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別實(shí)踐_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/28/beee3c37-db4f-48b9-ad96-a742d72aab9a/beee3c37-db4f-48b9-ad96-a742d72aab9a1.gif)
![畢業(yè)論文-基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別實(shí)踐_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/28/beee3c37-db4f-48b9-ad96-a742d72aab9a/beee3c37-db4f-48b9-ad96-a742d72aab9a2.gif)
![畢業(yè)論文-基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別實(shí)踐_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/28/beee3c37-db4f-48b9-ad96-a742d72aab9a/beee3c37-db4f-48b9-ad96-a742d72aab9a3.gif)
![畢業(yè)論文-基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別實(shí)踐_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/28/beee3c37-db4f-48b9-ad96-a742d72aab9a/beee3c37-db4f-48b9-ad96-a742d72aab9a4.gif)
![畢業(yè)論文-基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別實(shí)踐_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-9/28/beee3c37-db4f-48b9-ad96-a742d72aab9a/beee3c37-db4f-48b9-ad96-a742d72aab9a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、內(nèi)容摘要人工智能是時(shí)下熱門的話題之一,也是計(jì)算機(jī)領(lǐng)域的重要的研究方向,這幾年機(jī)器學(xué)習(xí)與深度學(xué)習(xí),異軍突起,在解決圖像處理、文本分析、自然語言處理、語音語義判斷中均起到至關(guān)重要的作用。 而隨著網(wǎng)絡(luò)規(guī)模擴(kuò)大,移動(dòng)終端的普及,為深度學(xué)習(xí)提供了大量的數(shù)據(jù)資料;加之計(jì)算機(jī)性能的提升,運(yùn)算量的增加,進(jìn)一步地推進(jìn)深度學(xué)習(xí)在各領(lǐng)域的應(yīng)用和推廣,以前無法解決的一些問題,使用神經(jīng)網(wǎng)絡(luò)均能得到一定程度的推進(jìn)。本文就深度學(xué)習(xí)在機(jī)器視覺領(lǐng)域的應(yīng)用進(jìn)行簡單的實(shí)踐與敘述,目標(biāo)是實(shí)現(xiàn)基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別與分類。卷積神經(jīng)網(wǎng)絡(luò)在圖像識(shí)別領(lǐng)域?qū)儆谳^經(jīng)典、較成熟的模型。本文中利用卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)圖像的分類問題,實(shí)現(xiàn)使用的是谷歌
2、深度學(xué)習(xí)框架Tensorflow,使用貓狗圖像數(shù)據(jù)集合訓(xùn)練模型后,可以達(dá)到隨機(jī)輸入單張貓狗圖片,返回圖片分類結(jié)果的效果。關(guān)鍵詞:深度學(xué)習(xí);卷積神經(jīng)網(wǎng)絡(luò);Tensorflow;圖像識(shí)別AbstractArtificial intelligence is one of the hot topics of the time, and it is also an important research direction in the field of computer. In these years, machine learning and deep learning have risen, and
3、 it plays an important role in solving image processing, text analysis, Natural Language Processing and voice semantic judgment.With the expansion of the network scale, the popularization of mobile terminals provides a large amount of data for deep learning, as well as the enhancement of the compute
4、r performance, the increase of computing, further promoting the application and popularization of deep learning in various fields.In this paper, the application and practice of deep learning in the field of machine vision is briefly described. The goal is to realize image recognition and classificat
5、ion based on convolution neural network. Convolution neural network is a classical and mature model in the field of image recognition. In this paper, the image classification problem is realized by the convolution neural network. The implementation is the Google deep learning framework Tensorflow. A
6、fter using the dog image data set training model, we can enter the picture of a single cat and dog randomly and return the effect of the picture classification results. Key words:Deep learning; convolution neural network; Tensorflow目 錄一、緒論 1(一)研究的背景與目的 1(二)研究的現(xiàn)狀 1(三)文章的架構(gòu) 2二、Tensorflow簡介 2(一)張量 3(二)
7、計(jì)算圖 3(三)會(huì)話 4三、搭建神經(jīng)網(wǎng)絡(luò) 4(一)定義訓(xùn)練集 4(二)塑造前向傳播過程 4(三)定義損失函數(shù) 6(四)建立反向傳播過程 6四、神經(jīng)網(wǎng)絡(luò)優(yōu)化 7(一)正則化 7(二)指數(shù)級(jí)學(xué)習(xí)率衰減 9(三)自定義損失函數(shù) 10(四)影子參數(shù) 10(五)Sigmoid參數(shù):去線性化 12五、搭建卷積神經(jīng)網(wǎng)絡(luò) 12(一)卷積層功能介紹 12(二)池化層功能介紹 13(三)本文使用的神經(jīng)網(wǎng)絡(luò)框架 14六、實(shí)驗(yàn)過程 14七、實(shí)驗(yàn)結(jié)果 16八、實(shí)驗(yàn)總結(jié)與展望 17基于卷積神經(jīng)網(wǎng)絡(luò)的圖像識(shí)別實(shí)踐一、緒論(一)研究的背景與目的這幾年,人工智能吸引了大量的勞動(dòng)力,研究人員的涌入。人工智能在各類領(lǐng)域中被研究被應(yīng)
8、用。我們?cè)谟龅揭活悊栴}時(shí),工作的主要過程可以歸結(jié)為以下步驟,首先是一個(gè)復(fù)雜的問題,我們需要將其簡化,在簡化之后我們會(huì)處理較多該類問題,這之后我們會(huì)在大量的處理問題當(dāng)中將該類的問題處理方法歸一化,規(guī)范化;在我們規(guī)范化了問題的處理方法之后,我們會(huì)考慮將問題自動(dòng)化。按照我個(gè)人的理解,目前我們所擁有的人工智能還只能停留在最后一步上,它不能去自己分析問題,需要我們提供各類的先驗(yàn)知識(shí)將問題量化之后傳給計(jì)算機(jī),其才能做出判斷。在本實(shí)驗(yàn)中,我們將歸一化的圖片傳給計(jì)算機(jī),告訴它對(duì)錯(cuò),需要機(jī)器自己提取圖片特征來解決分類的問題。在如今的人工智能領(lǐng)域可以分為以下的幾個(gè)分支,自然語言處理,計(jì)算機(jī)視覺,機(jī)器學(xué)習(xí)等。自然語
9、言處理主要是讓計(jì)算機(jī)理解我們?nèi)粘J褂玫恼Z言應(yīng)用,本文的實(shí)驗(yàn)即屬于計(jì)算機(jī)視覺的范疇,機(jī)器學(xué)習(xí)主要研究各種數(shù)學(xué)類的各種人工智能的算法。人工智能如今主要滲透到了大數(shù)據(jù)易獲取的行業(yè)中,如金融的行業(yè)。廣為流行的人臉識(shí)別在各種應(yīng)用當(dāng)中的植入,增加了用戶的體驗(yàn)。 為了了解人工智能算法是如何解決一個(gè)實(shí)際的問題的,本文從卷積神經(jīng)網(wǎng)絡(luò)切入,卷積網(wǎng)絡(luò)是深度學(xué)習(xí)的入門,我們掌握了卷積網(wǎng)絡(luò)的相關(guān)知識(shí)算是深度學(xué)習(xí)的一個(gè)入門,深度學(xué)習(xí)只是不同類型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的搭建。通過本文的實(shí)踐,我們對(duì)計(jì)算機(jī)如何做圖片的分類有了大致的了解,對(duì)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)由了初步的認(rèn)知,這為我們后續(xù)的學(xué)習(xí)打下基礎(chǔ),敲開深度學(xué)習(xí)的大門。(二)研究的現(xiàn)狀神
10、經(jīng)網(wǎng)絡(luò)在上世紀(jì)就被提出來,在計(jì)算機(jī)視覺的領(lǐng)域中,研究大腦的成像問題時(shí),有使用貓,給貓帶上了腦電圖,分別觀看不同的圖片,在腦電圖上讀出貓的不同大腦活動(dòng)。在這樣的前提之下,提出了神經(jīng)網(wǎng)絡(luò),但是現(xiàn)階段的神經(jīng)網(wǎng)絡(luò)已經(jīng)完全脫離了生物中所謂的神經(jīng)元。起初發(fā)表了論文簡述簡單的感知器模型,只是一個(gè)簡單的線性模型。后來有研究者發(fā)現(xiàn)其不能分類異或的問題,隨之提出了激活函數(shù),之后演變出各種不同的激活函數(shù)。但是由于當(dāng)時(shí)的計(jì)算機(jī)內(nèi)存小,處理能力差,關(guān)于此類的研究一直處于停滯的狀態(tài)。隨著硬件的不斷發(fā)展,給模型的復(fù)雜化提供了保障,上世紀(jì)90年代,提出了卷積神經(jīng)網(wǎng)絡(luò)對(duì)手寫體數(shù)字的識(shí)別,又一次將其推向了高潮,之后的研究一直趨于
11、平靜。6年前,在ImageNet的圖像識(shí)別分類的比賽上,深度的卷積神經(jīng)網(wǎng)絡(luò)一舉打敗各類傳統(tǒng)的算法,將準(zhǔn)確度提高了將近10個(gè)百分點(diǎn)。一下子吸引了無數(shù)的人開始關(guān)注深度學(xué)習(xí)。原先的傳統(tǒng)機(jī)器學(xué)習(xí)做圖像分類的主要的步驟分為兩步,首先使用算法提取圖片的特征,類似于SIFT的算法等,之后使用支持向量機(jī)對(duì)特征進(jìn)行分類,研究的方向是如何提取特征和改進(jìn)SVM??吹缴疃葘W(xué)習(xí)在該數(shù)據(jù)集上的效果極好,以前提出的神經(jīng)網(wǎng)絡(luò)框架RNN,LSTM也都在自然語言處理,時(shí)間序列中取得了很好的進(jìn)展。各大互聯(lián)網(wǎng)公司開設(shè)研究院,相繼研究出了復(fù)雜的網(wǎng)絡(luò)模型機(jī)構(gòu)。如今,百花齊放,各類神經(jīng)網(wǎng)絡(luò)模型的工具tensorflow,pytorch,c
12、affe等將原先復(fù)雜的網(wǎng)絡(luò)構(gòu)建,復(fù)雜的計(jì)算過程集成的非常工程化,使搭建一個(gè)性化的神經(jīng)網(wǎng)絡(luò)框架成為可能。隨著各類比賽和業(yè)務(wù)級(jí)別的需求不斷推進(jìn),深度學(xué)習(xí)的發(fā)展還會(huì)有一個(gè)新的高度。但是其訓(xùn)練的時(shí)間和空間的需求著實(shí)很大,強(qiáng)化學(xué)習(xí)等各類不同出發(fā)點(diǎn)的解決問題的方法也在不斷地改進(jìn)。(三)文章的架構(gòu)本文主要以一個(gè)圖像識(shí)別為切入,首先介紹了實(shí)驗(yàn)的背景與目的,簡述了神經(jīng)網(wǎng)絡(luò)的發(fā)展由來。之后簡單介紹了搭建神經(jīng)網(wǎng)絡(luò)所運(yùn)用到的工具,tensorflow當(dāng)中的相關(guān)概念。之后使用全連接神經(jīng)敘述神經(jīng)網(wǎng)絡(luò)當(dāng)中的概念,后面是如何優(yōu)化現(xiàn)有的神經(jīng)網(wǎng)絡(luò)。接著是介紹深度學(xué)習(xí)的入門卷積神經(jīng)網(wǎng)絡(luò)的相關(guān)概念,最后敘述圖像識(shí)別算法的結(jié)構(gòu)和我們搭
13、建的神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)、總結(jié)與展望。二、Tensorflow簡介TensorFlow是谷歌研發(fā)的第二代人工智能學(xué)習(xí)系統(tǒng),作為第二代產(chǎn)品,其是在DistBelief框架下研發(fā)出來的,顧名思義,他的名稱代表著他的起源: Tensor(張量)對(duì)應(yīng)了N維數(shù)組,F(xiàn)low(流)意味著該系統(tǒng)由計(jì)算圖來完成基本的運(yùn)算關(guān)系的,TensorFlow可以理解為張量從一張圖流向另外一張圖的過程。此外,TensorFlow主要用于把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)傳輸進(jìn)入復(fù)雜的神經(jīng)網(wǎng)絡(luò)。TensorFlow可被用于語音識(shí)別或圖像識(shí)別等多項(xiàng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域,經(jīng)過了2011年的改進(jìn),它的應(yīng)用領(lǐng)域被大大拓寬,如智能手機(jī)等移動(dòng)終端和數(shù)千臺(tái)去中
14、心化的計(jì)算器均和運(yùn)行這個(gè)系統(tǒng),最重要的是,它是一個(gè)開源的系統(tǒng),可以說是人人都可以使用。在Tensorflow中,用張量表示數(shù)據(jù),用計(jì)算圖搭建神經(jīng)網(wǎng)絡(luò),用會(huì)話執(zhí)行計(jì)算圖,優(yōu)化線上的權(quán)重(參數(shù))得到模型(一)張量張量是Tensorflow中的一種主要數(shù)據(jù)結(jié)構(gòu),在數(shù)學(xué)中,我們有向量這個(gè)概念,如: 0,1表示一個(gè)二維向量,意思是從0指向1。物理中可以用來表示力等有方向,有維度的概念,其與多維度計(jì)算相關(guān),在Tensorflow中,我們用張量表示多維數(shù)組(列表),可以存放多維的特征,而張量的階表示數(shù)組的維度。于是,張量就可表示一個(gè)0階到n階的數(shù)組。用張量來表示輸入數(shù)據(jù)的優(yōu)勢是可以多維度的記錄數(shù)據(jù)特征,如一
15、組質(zhì)量為m1,m2,m3mn,體積分別為v1,v2,v3vn的零件,使用張量可以記為一個(gè)2列n行的矩陣A,A=m1,v1,m2,v2,m3,v3mn,vn(二)計(jì)算圖計(jì)算圖是張量的運(yùn)算工具,有趣的是,它僅負(fù)責(zé)占位,并不負(fù)責(zé)運(yùn)算結(jié)果。計(jì)算圖是系統(tǒng)中維護(hù)的一張用來表示張量運(yùn)算關(guān)系的圖,其記錄了節(jié)點(diǎn)的節(jié)點(diǎn)名、維度、長度、和數(shù)據(jù)類型。如:在一張空的計(jì)算圖中將張量(m1,v1)與(m2,v2)相加,如下圖:圖2.1計(jì)算圖圖例其計(jì)算圖的表意應(yīng)該是tensor(”add:0”,shape =(2,),dtype=char),意思是0號(hào)節(jié)點(diǎn),儲(chǔ)存了一個(gè)二維的,數(shù)據(jù)類型是字符串型的張量。 (三)會(huì)話會(huì)話可以用來
16、執(zhí)行計(jì)算圖,即得出張量的運(yùn)算結(jié)果。 計(jì)算圖搭建出神經(jīng)網(wǎng)絡(luò)的計(jì)算過程后,需要會(huì)話(session)來執(zhí)行計(jì)算圖中的節(jié)點(diǎn)運(yùn)算。如上文中,將張量(m1,v1)與(m2,v2)相加,用session語句執(zhí)行后其結(jié)果應(yīng)為(m1+m2,v1+v2)三、搭建神經(jīng)網(wǎng)絡(luò)(一)定義訓(xùn)練集訓(xùn)練集,即深度學(xué)習(xí)中,提供給訓(xùn)練模型的正確的數(shù)據(jù)集合,一般來說為了使訓(xùn)練出的模型具有實(shí)際意義,訓(xùn)練集的數(shù)據(jù)應(yīng)該是真實(shí)、有效的。在介紹實(shí)驗(yàn)中,我們使用人工生成的數(shù)據(jù)作為訓(xùn)練集采用生成隨機(jī)數(shù)的方式,目的是通過隨機(jī)生成的簡單數(shù)據(jù)集合,構(gòu)建簡單的神經(jīng)網(wǎng)絡(luò),驗(yàn)證系統(tǒng)能否正確運(yùn)行。在真實(shí)環(huán)境下,如本文我們使用大量圖片作為訓(xùn)練集合的輸入,本段僅
17、闡述原理,我們將在后文就使用真實(shí)數(shù)據(jù)的實(shí)驗(yàn)進(jìn)行詳細(xì)的描述。(二)塑造前向傳播過程簡單的神經(jīng)網(wǎng)絡(luò)可以分為三個(gè)部分,輸入層隱藏層和輸出層,前向傳播是從輸入層向輸出層的過程,其主要有三個(gè)關(guān)鍵要素,分別是輸入、參數(shù)和輸出。輸入,即把上述訓(xùn)練集預(yù)處理后的訓(xùn)練數(shù)據(jù)傳入輸入層、參數(shù)即權(quán)重,開始會(huì)使用人工的方法賦一個(gè)隨機(jī)的數(shù)值,在迭代訓(xùn)練中會(huì)趨于準(zhǔn)確、輸出輸入的訓(xùn)練集與參數(shù)共同運(yùn)算的結(jié)果。這三個(gè)部分的示意圖如下:圖1神經(jīng)網(wǎng)絡(luò)的三個(gè)部分前向傳播的意義在于構(gòu)建了訓(xùn)練集和參數(shù)關(guān)系,建立了其主要計(jì)算方式。以質(zhì)量和體積分別是m1,v1的某零件為例,其訓(xùn)練過程是將這他的質(zhì)量和體積作為訓(xùn)練集輸入到計(jì)算圖中作為第一層x1、x
18、2,其分別于對(duì)應(yīng)的參數(shù)第一層權(quán)重w1相乘,獲得了隱藏層a,隱藏層a再與其對(duì)應(yīng)的參數(shù)第二層權(quán)重w2相乘,獲得了輸出層y。為了計(jì)算出實(shí)際結(jié)果,我們給上文中的參數(shù)賦值如下表:表1示例中的參數(shù)賦值情況含義賦值關(guān)系訓(xùn)練數(shù)據(jù)的質(zhì)量特征m1=x1=0.7訓(xùn)練數(shù)據(jù)的體積特征V1=x2=0.5第一層參數(shù)W1,1(1)=0.2W1,2(1)=0.1W1,3(1)=0.4W2,1(1)=0.3W2,2(1)=0.5W2,3(1)=0.2第二層參數(shù)W1,1(2)=0.1W2,1(2)=0.1W3,1(2)=0.2此時(shí),計(jì)算圖的結(jié)構(gòu)如下:圖2計(jì)算圖例結(jié)構(gòu)(三)定義損失函數(shù)經(jīng)過了上述前向傳播過程,我們得到了一個(gè)初步的預(yù)測
19、結(jié)果,但由于第一次的運(yùn)算結(jié)果是經(jīng)由我們隨機(jī)定義的參數(shù)得出的,是不準(zhǔn)確的。所以我們需要定義一個(gè)方式來描述預(yù)測結(jié)果和表中答案之間的誤差,以不斷優(yōu)化我們的參數(shù),使其趨向于正常值,我們使用的方法是損失函數(shù)方法,本節(jié)我們將討論上述實(shí)驗(yàn)的損失函數(shù)形式,后文中我們將給出自定義的損失函數(shù)。在損失函數(shù)的選擇上,該問題,我們有如下選擇:直接做差加和、做差后取絕對(duì)值加和、取均方誤差加和, 如果選擇第一種,在同時(shí)出現(xiàn)正負(fù)誤差值得時(shí)候會(huì)被抵消,第二種因?yàn)闆]有乘方,所以在誤差小或者大的差距不是十分明顯,第三種最適用于我們現(xiàn)在的這種情況。該損失函數(shù)計(jì)算得到的是預(yù)測值與已知答案y_的差距,計(jì)算損失函數(shù)有很多方法,均方誤差MS
20、E(mean-square error)是較常用的方法。MSEy_,y=i=1n(y-y_)2n (1)(四)建立反向傳播過程經(jīng)過上述取損失函數(shù)的過程后,我們進(jìn)入反向傳播過程,其目的是訓(xùn)練網(wǎng)絡(luò)、優(yōu)化網(wǎng)絡(luò)參數(shù) ,提高模型準(zhǔn)確性。反向傳播有常用三種訓(xùn)練方法,梯度下降、momentum優(yōu)化器、adam優(yōu)化器。他的目標(biāo)是盡量減少loss函數(shù)的誤差。最初,科學(xué)家們使用固定的數(shù)值嘗試去“試”出使loss最小的w取值,但是由于數(shù)據(jù)量龐大,且人工取值較主觀、工作量大,試想,若上述的實(shí)驗(yàn)中w取為0.01,0.02,0.03各層權(quán)值組合起來會(huì)產(chǎn)生多么數(shù)量龐大的可能性組合,因?yàn)闊o法確定權(quán)值w導(dǎo)致深度學(xué)習(xí)工作在第一次
21、人工智能爆發(fā)以后呈現(xiàn)一種停滯的狀態(tài),直到上個(gè)世紀(jì)九十年代,由于機(jī)器性能的提升,機(jī)器“試數(shù)”比人的效率高了許多,這才讓人工智能迎來了又一次的革命浪潮。1.梯度下降把損失函數(shù)看做一個(gè)二元二次方程,對(duì)該方程式求導(dǎo),可以獲得其導(dǎo)數(shù)下降的方向,順著這個(gè)方向地圖下降,可以求得函數(shù)的最小是。為了把損失函數(shù)降低到最小,我們沿梯度的負(fù)方向梯度下降。圖3梯度下降示意2.學(xué)習(xí)率優(yōu)化器中都需要一個(gè)叫做學(xué)習(xí)率的參數(shù),可以理解為每次梯度下降的幅度,使用時(shí),如果學(xué)習(xí)率選擇過大會(huì)出現(xiàn)震蕩不收斂的情況,如果學(xué)習(xí)率選擇過小,會(huì)出現(xiàn)收斂速度慢的情況。我們可以選個(gè)比較小的值填入,比如0.01、0.001。在下文中我們會(huì)講到如何科學(xué)的
22、選擇學(xué)習(xí)率。 四、神經(jīng)網(wǎng)絡(luò)優(yōu)化(一)正則化要講解正則化,首先要明確過擬合的概念,下圖中的數(shù)據(jù)點(diǎn)分別表示訓(xùn)練集中的單個(gè)數(shù)據(jù),我們需要訓(xùn)練一個(gè)模型可以正確的區(qū)分紅、籃兩個(gè)標(biāo)簽的數(shù)據(jù)。圖a中的訓(xùn)練模型的分類模型的準(zhǔn)確率較低,被稱為擬合度不夠。圖b中的訓(xùn)練模型可以大致區(qū)分,是擬合度較正常的模型。圖c 中的訓(xùn)練模型過于精確,以致只能適應(yīng)這批訓(xùn)練集,該模型用于其他測試集時(shí),不會(huì)獲得優(yōu)質(zhì)的結(jié)果,被稱為過擬合。 abc 圖4三種不同程度的擬合 正則化就是用于消除函數(shù)過擬合的步驟,為了防止模型被訓(xùn)練集過擬合導(dǎo)致訓(xùn)練出的模型不夠泛化而失去它本來的效果。正則化的操作是在損失函數(shù)中給每個(gè)參數(shù)w加上權(quán)重,引入模型復(fù)雜度
23、指標(biāo),從而抑制模型噪聲,減小過擬合。使用正則化之后,loss函數(shù)的取值發(fā)生了變化,如下圖。loss=lossy,y_+REGULARIZER*loss(w) (2)正則化操作的舉例如下例如:用300個(gè)符合正態(tài)分布的點(diǎn)Xx0, x1作為數(shù)據(jù)集,根據(jù)點(diǎn)Xx0, x1計(jì)算生成標(biāo)注Y_,將數(shù)據(jù)集標(biāo)注為紅色點(diǎn)和藍(lán)色點(diǎn)。標(biāo)注規(guī)則為:當(dāng)x02+ x2 2 時(shí),y_=1,標(biāo)注為紅色;當(dāng)x02+ x122 時(shí),y_=0,標(biāo)注為藍(lán)色。我們分別用無正則化和有正則化兩種方法,擬合曲線,把紅色點(diǎn)和藍(lán)色點(diǎn)分開。在實(shí)際分類時(shí),如果前向傳播輸出的預(yù)測值y接近1則為紅色點(diǎn)概率越大,接近0則為藍(lán)色點(diǎn)概率越大,輸出的預(yù)測值y為0.
24、5是紅藍(lán)點(diǎn)概率分界線。在本例子中,我們使用了之前未用過的模塊與函數(shù):非正則化的生成結(jié)果圖5非正則化的生成結(jié)果正則化的生成結(jié)果圖6正則化的生成結(jié)果(二)指數(shù)級(jí)學(xué)習(xí)率衰減上文中提到學(xué)習(xí)率的選擇對(duì)模型訓(xùn)練效率起到了關(guān)鍵性的作用,本節(jié)將敘述如何科學(xué)的選擇學(xué)習(xí)率,如果我們可以做到動(dòng)態(tài)的改變學(xué)習(xí)率的話,這對(duì)我們訓(xùn)練參數(shù)的速度和是否會(huì)收斂起到了很重要的作用,我們可以認(rèn)為學(xué)習(xí)率初期可以設(shè)置的較大,但是隨著訓(xùn)練輪數(shù)的增加,需要減緩步伐趨于找到最優(yōu)解,避免震蕩不收斂。所以我們提出了指數(shù)級(jí)的學(xué)習(xí)率衰減,公式如下:Learning_rate=LEARNING_RATE_BASE*LEARNING_RATE_DECAY
25、*global_stepLEARNING_RATE_BATCH_SIZE (3)其中,LEARNING_RATE_BASE 為學(xué)習(xí)率初始值,而LEARNING_RATE_DECAY 為學(xué)習(xí)率衰減率,global_step 記錄了當(dāng)前訓(xùn)練輪數(shù),為不可訓(xùn)練型參數(shù)。學(xué)習(xí)率 learning_rate 更新頻率為輸入數(shù)據(jù)集總樣本數(shù)除以每次喂入樣本數(shù)。若 staircase 設(shè)置為 True 時(shí),表示 global_step/learning rate step 取整數(shù),學(xué)習(xí)率階梯型衰減;若 staircase 設(shè)置為 false 時(shí),學(xué)習(xí)率會(huì)是一條平滑下降的曲線。例如:在本例中,模型訓(xùn)練過程不設(shè)定固定
26、的學(xué)習(xí)率,使用指數(shù)衰減學(xué)習(xí)率進(jìn)行訓(xùn)練。其中,學(xué)習(xí)率初值設(shè)置為 0.1,學(xué)習(xí)率衰減率設(shè)置為 0.99,BATCH_SIZE 設(shè)置為 1。(三)自定義損失函數(shù) 上文已經(jīng)講述了,損失函數(shù)在實(shí)際當(dāng)中的應(yīng)用例子,但是在實(shí)際的運(yùn)用當(dāng)中,神經(jīng)網(wǎng)絡(luò)的任務(wù)可以分為兩種,分類和回歸,在回歸時(shí)我們可以使用上述方法,在分類時(shí)我們使用交叉熵代替上述損失函數(shù)。其公式如下:Hy,_y=-y_*log y (4)損失函數(shù)代表了一個(gè)模型的誤差范圍,一般情況下誤差的振動(dòng)幅度是一致的,預(yù)測正確與錯(cuò)誤的概率是相同的,但通過自定義損失函數(shù)可以根據(jù)問題的實(shí)際情況來主觀定制合理的損失函數(shù)。如預(yù)測商品銷量時(shí),實(shí)際商品銷量可能在10到30之間
27、,商品的成本是5,售價(jià)是20,預(yù)測商品銷量理想情況下應(yīng)該在20以上,向30的方向偏振,因?yàn)樯唐烦杀拘∮诶麧?,寧愿多產(chǎn)出,多賺錢。此時(shí),需要可以把損失函數(shù)的損失成分定義成分段函數(shù):自定義損失函數(shù)為:loss=nf(y_,y) (5)其中損失定義成分段函數(shù):f(y_,y)=PROFIT*(y_-y) y1w1 滑動(dòng)平均值=min(0.99,1/10)*0+(1 min(0.99,1/10)*1 = 0.92100輪輪數(shù):global_step=100w1:110w1 滑動(dòng)平均值=min(0.99,101/110)*0.9+(1 min(0.99,101/110)*10 = 0.826+0.818=
28、1.6443再次運(yùn)行輪數(shù):global_step=100w1:101.644w1 滑動(dòng)平均值=min(0.99,101/110)*1.644+(1 min(0.99,101/110)*10 = 2.3284再次運(yùn)行輪數(shù):global_step=101w1:1.6452.328w1 滑動(dòng)平均值=0.9當(dāng)?shù)啍?shù)更新為 100 輪時(shí),參數(shù) w1 更新為 10 后,滑動(dòng)平均值變?yōu)?1.644。隨后每執(zhí)行一次,參數(shù)w1 的滑動(dòng)平均值都向參數(shù) w1 靠近??梢?,滑動(dòng)平均追隨參數(shù)的變化而變化。在神經(jīng)網(wǎng)絡(luò)模型中,將 MOVING_AVERAGE_DECAY 設(shè)置為 0.99,參數(shù) w1 設(shè)置為 0,w1 的
29、滑動(dòng)平均值設(shè)置為 0。 開始時(shí),輪數(shù) global_step 設(shè)置為 0,參數(shù) w1 更新為 1,則 w1 的滑動(dòng)平均值為:w1 滑動(dòng)平均值=min(0.99,1/10)*0+(1 min(0.99,1/10)*1 = 0.9當(dāng)輪數(shù) global_step 設(shè)置為 100 時(shí),參數(shù) w1 更新為 10,以下代碼 global_step 保持為 100,每次執(zhí)行滑動(dòng)平均操作影子值更新,則滑動(dòng)平均值變?yōu)椋簑1 滑動(dòng)平均值=min(0.99,101/110)*0.9+(1 min(0.99,101/110)*10 = 0.826+0.818=1.644再次運(yùn)行,參數(shù) w1 更新為 1.644,則滑動(dòng)
30、平均值變?yōu)椋簑1 滑動(dòng)平均值=min(0.99,101/110)*1.644+(1 min(0.99,101/110)*10 = 2.328再次運(yùn)行,參數(shù) w1 更新為 2.328,則滑動(dòng)平均值:w1 滑動(dòng)平均值=2.956從運(yùn)行結(jié)果可知,最初參數(shù) w1 和滑動(dòng)平均值都是 0;參數(shù) w1 設(shè)定為 1 后,滑動(dòng)平均值變?yōu)?0.9;當(dāng)?shù)啍?shù)更新為 100 輪時(shí),參數(shù) w1 更新為 10 后,滑動(dòng)平均值變?yōu)?1.644。隨后每執(zhí)行一次,參數(shù)w1 的滑動(dòng)平均值都向參數(shù) w1 靠近??梢?,滑動(dòng)平均追隨參數(shù)的變化而變化。(五)Sigmoid參數(shù):去線性化Sigmoid函數(shù),即f(x)=1/1+e-x,被
31、廣泛的應(yīng)用在神經(jīng)網(wǎng)絡(luò)中,他是是神經(jīng)元的非線性作用函數(shù)。這個(gè)函數(shù)是用來去線性化的基本函數(shù),之所以要去線性化,是因?yàn)轭A(yù)測結(jié)果是訓(xùn)練集一層參數(shù)w(1)二層參數(shù)w(2)進(jìn)行矩陣相乘獲得的結(jié)果,在這種情況下,每一層輸出都是上層輸入的限行函數(shù)。也就是說,無論神經(jīng)網(wǎng)絡(luò)有多少層,輸出都是輸入的限行組合,這樣一來,隱藏層的就形同虛設(shè)。在引入非限行函數(shù)后,如sigmoid函數(shù),深層神經(jīng)網(wǎng)絡(luò)的組合就變得有意義和多樣起來,增加了神經(jīng)網(wǎng)絡(luò)的非線性。但是sigmoid函數(shù)也有其計(jì)算量大,容易接近飽和區(qū)的弊端。所以該函數(shù)在機(jī)器學(xué)習(xí)領(lǐng)域已經(jīng)不是主流的激活函數(shù)。五、搭建卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)(cnn) 由輸入層、卷基層、激活
32、函數(shù)、池化層、全連接層組成,即INPUT-CONV-POOL-FC這里我們重點(diǎn)介紹卷積層和池化層。(一)卷積層搭建卷積層的主要功能是進(jìn)行特征圖的提取,以本實(shí)驗(yàn)為例,每張輸入的貓狗圖片是a*b的像素,其深度是3(分別代表R、G、B三個(gè)顏色通道),我們每3*3個(gè)像素劃分一下,分為多個(gè)區(qū),通過一個(gè)filter與輸入圖像的卷積可以得到一個(gè)特征圖,相當(dāng)于把這張圖每塊分區(qū)的特征提取出來。我們會(huì)使用多層卷基層來得到更深層次的特征圖。卷積層的實(shí)現(xiàn)過程的圖解如下,輸入圖像和filyer的對(duì)應(yīng)位置元素相乘再求和,最后加上b,得到特征圖。如圖中所示。圖7卷積神經(jīng)網(wǎng)絡(luò)原理值得一提的是,訓(xùn)練集的圖片大小可能會(huì)有所不同,
33、為了使圖片規(guī)格達(dá)到統(tǒng)一以便進(jìn)行處理,我們對(duì)尺寸不滿足要求的圖片補(bǔ)充了空像素,這部分的二進(jìn)制數(shù)為0. (二)池化層搭建在進(jìn)行多層卷積以后,輸出的數(shù)據(jù)量會(huì)異常龐大,池化是一個(gè)可以有效壓縮輸出的操作,不僅壓縮了輸出的內(nèi)容,也增強(qiáng)了特征的可解釋性。有壓縮就必然存在數(shù) 據(jù)損失,池化是一種盡量保持有效特征的操作,可以避免丟失過多的信息。池化操作的原理如下圖:圖8池化原理MAX POOLING:獲得卷積后輸出層的特征圖后,將這些特征圖分區(qū),取分區(qū)內(nèi)最大的數(shù)值代表這個(gè)分區(qū),與其他分區(qū)代表組成新的特征圖。Maxpooling是一種較常用的池化方式,也存在minpooling和avgpooling,分別取分區(qū)內(nèi)最
34、小和中位數(shù)作為數(shù)值代表,但由于高數(shù)值的特征可以更好的代表該特征圖區(qū)域的主要特征,所以maxpooling較為常用。(三)神經(jīng)網(wǎng)絡(luò)框架經(jīng)過上文敘述,我們已經(jīng)簡單了解了本實(shí)驗(yàn)卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建過程,在本實(shí)驗(yàn)貓狗大戰(zhàn)中由于有大量離線數(shù)據(jù)集,所以沒有使用復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),我們使用的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如下圖。圖9本實(shí)驗(yàn)的神經(jīng)網(wǎng)絡(luò)框架六、實(shí)驗(yàn)過程(一)準(zhǔn)備數(shù)據(jù)集數(shù)據(jù)集分為兩個(gè)部分,測試集和訓(xùn)練集,訓(xùn)練集包含數(shù)量一致的貓狗照片共25000張,測試集包含數(shù)量一致的貓狗照片共12500張。圖10數(shù)據(jù)輸入情況(二)配置環(huán)境&建立工程首先配置環(huán)境win10(64位)+Python3.5.3+CUDA 8.0+cudnn
35、5.1+tensorflow-gpu 1.1.0+Pycharm。然后Pycharm上新建Cats_vs_Dogs工程,以下為工程目錄的結(jié)構(gòu):圖11工程目錄(三)模型建立 模型建立順序如下:圖12模型建立順序首先使用3*3的卷積核進(jìn)行步長為1的搜尋整張圖,設(shè)置n套權(quán)重,最終得到一個(gè)統(tǒng)一權(quán)值的輸出,之后進(jìn)過一步最大值的池化,縮小圖片的數(shù)據(jù)量。之后繼續(xù)進(jìn)行一次上述的操作,最終得到一張共享權(quán)值池化兩次的圖片,每一個(gè)像素點(diǎn)上都是一個(gè)值。然后將所有的像素點(diǎn)都拉開,全部作為神經(jīng)網(wǎng)絡(luò)的輸入神經(jīng)元,然后接一個(gè)全連接的隱藏層,其中隱藏層的神經(jīng)網(wǎng)絡(luò)神經(jīng)元數(shù)量人為來確定,最終輸出貓和狗分別的置信度。上一段落介紹了本
36、實(shí)驗(yàn)的前向傳播過程,在損失函數(shù)的選擇上,因?yàn)槭且粋€(gè)二分類的問題,所以我們采用了交叉熵的計(jì)算公式來作為本實(shí)驗(yàn)的損失函數(shù)。所以在全鏈接層之后連接一個(gè)softmax層計(jì)算損失函數(shù)。上述兩段的操作在model.py文件中實(shí)現(xiàn)。我們的原始數(shù)據(jù)是貓與狗的圖片,且用于訓(xùn)練的數(shù)據(jù)已經(jīng)打上了標(biāo)簽,在圖片的命名規(guī)范上可以看出來。我們是離線操作,難以達(dá)到數(shù)據(jù)的一次性讀入內(nèi)存,所以我們使用批量的數(shù)據(jù)讀取方式,在實(shí)現(xiàn)中,我們一批讀入8張圖片。因?yàn)樵瓉淼挠?xùn)練集中,貓狗的圖片數(shù)量是相等的,所以我們不需要擔(dān)心,正負(fù)數(shù)據(jù)集的不平衡導(dǎo)致最終訓(xùn)練結(jié)果偏向于數(shù)據(jù)集多的一方。首先提取出圖片中的三層的矩陣和標(biāo)簽的類型,其中輸入的圖片有嚴(yán)
37、格的大小限制,所以在輸入之前需要做一步預(yù)處理,及如果圖片過小小于我們所設(shè)置的分辨率,我們使用padding在上下左右對(duì)稱補(bǔ)0的方法加大圖片;若圖片過大,我們使用resize的方法改變圖片的大小。為了模型訓(xùn)練之后的泛化性,我們對(duì)圖片加入了各種類型的噪聲處理,主要包括旋轉(zhuǎn),亮度,對(duì)比度等。將貓狗的照片打亂,然后隨機(jī)挑選八個(gè)輸入進(jìn)行訓(xùn)練。上述的步驟在input_data.py文件中實(shí)現(xiàn)。之后就是關(guān)鍵的訓(xùn)練過程,我們使用之前的定義好的前向傳播過程和批量的圖片輸入,我們的目的是將損失函數(shù)降到最小,使用梯度下降優(yōu)化器進(jìn)行訓(xùn)練,并使用介紹中的優(yōu)化方法進(jìn)行神經(jīng)網(wǎng)絡(luò)的優(yōu)化。在上文中已經(jīng)介紹過用法就不在敘述。該部分使用train.py實(shí)現(xiàn)。七、實(shí)驗(yàn)結(jié)果我們使用tensorflow自帶的存模型的持久化工具,保存checkpoint,在測試集上跑前向傳播,最終得到貓狗的分別置信度,置信度高的是我們的最終結(jié)果,與測試集的標(biāo)簽比較。統(tǒng)計(jì)所有的判斷成功的個(gè)數(shù)除以總的個(gè)數(shù),最終該方法訓(xùn)練得到的準(zhǔn)確度為91.3%。圖13訓(xùn)練結(jié)果八、實(shí)驗(yàn)總結(jié)與展望通過此次試驗(yàn),我們體會(huì)到了深度學(xué)習(xí)的整個(gè)過程,對(duì)訓(xùn)練參數(shù)有了初步的認(rèn)識(shí),并且達(dá)到了理想的目標(biāo)。我們體會(huì)到人工智能并不是非常的神秘化,訓(xùn)練的過程只是不斷的尋求最優(yōu)解的過程,神奇之處在于,經(jīng)過一步或幾步的過程,可以自動(dòng)的去提取出一些分類的相關(guān)特征,這是目前
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店線上服務(wù)平臺(tái)建設(shè)合同
- 主持人兼職勞務(wù)合同范本
- 倉儲(chǔ)運(yùn)輸合同范文
- 高考數(shù)學(xué)(理)一輪復(fù)習(xí)教案:第十三篇 推理證明、算法、復(fù)數(shù)第2講 直接證明與間接證明
- 2025年濟(jì)南道路運(yùn)輸從業(yè)人員資格考試內(nèi)容有哪些
- 2025年西安考貨運(yùn)從業(yè)資格證題庫答案
- 孔隙結(jié)構(gòu)對(duì)大氣等離子噴涂熱障涂層沖蝕失效行為的影響
- 2025年滬教版選修4歷史下冊(cè)階段測試試卷含答案
- 2025年人教B版高三歷史下冊(cè)月考試卷含答案
- 2025年中圖版選修4地理上冊(cè)階段測試試卷含答案
- 2023年四川省綿陽市中考初中學(xué)業(yè)水平考試語文試題【含答案】
- 正大天虹方矩管鍍鋅方矩管材質(zhì)書
- 2024年山東魯商集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 山東省泰安市2022年初中學(xué)業(yè)水平考試生物試題
- 受賄案例心得體會(huì)
- 人教A版高中數(shù)學(xué)選擇性必修第一冊(cè)第二章直線和圓的方程-經(jīng)典例題及配套練習(xí)題含答案解析
- 圖書館學(xué)基礎(chǔ)簡明教程
- 畢業(yè)設(shè)計(jì)(論文)-液體藥品灌裝機(jī)的設(shè)計(jì)與制造
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 -《數(shù)一數(shù)(二)》 北師大版
- 銀行內(nèi)部舉報(bào)管理規(guī)定
- 平面幾何強(qiáng)化訓(xùn)練題集:初中分冊(cè)數(shù)學(xué)練習(xí)題
評(píng)論
0/150
提交評(píng)論