版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單元8神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)電氣與信息工程系CONTENTS
目錄010203任務(wù)8.1MINIST數(shù)據(jù)集導(dǎo)入與數(shù)據(jù)預(yù)處理任務(wù)8.2訓(xùn)練神經(jīng)網(wǎng)絡(luò)任務(wù)8.3深度學(xué)習(xí)引例描述
人類可以很輕松地分辨出手寫的數(shù)字是多少,但是對電子計算機(jī)來說,實(shí)現(xiàn)手寫數(shù)字乃至手寫文字的分類卻是艱難的。試想,如果計算機(jī)能夠像人類的大腦一樣“思考”,擁有一層層連接的“神經(jīng)元”,模擬人腦的思考活動,那么它能不能對手寫的數(shù)字甚至文字進(jìn)行判斷、分類呢?使用算法模擬人腦進(jìn)行智能運(yùn)算的結(jié)構(gòu)與模型被稱為神經(jīng)網(wǎng)絡(luò)。本單元通過使用神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)手寫數(shù)字識別來使大學(xué)了解當(dāng)下人工智能的熱點(diǎn)話題——神經(jīng)網(wǎng)絡(luò)問題。(a)(b)(a:人與電子計算機(jī)對話。電子計算機(jī):我不認(rèn)得這是什么?人:這些數(shù)字很好認(rèn)啊b:我學(xué)會使用神經(jīng)網(wǎng)絡(luò)啦,這是3?。﹫D8-1情景描述任務(wù)8.1MNIST數(shù)據(jù)集導(dǎo)入與數(shù)據(jù)預(yù)處理任務(wù)情景
人工神經(jīng)網(wǎng)絡(luò)(ArtificialNeuralNetwork,ANN)在本書中簡稱神經(jīng)網(wǎng)絡(luò)(NeuralNetwork,NN),是一種模擬生物神經(jīng)網(wǎng)絡(luò)的算法結(jié)構(gòu)與模型。由于其擁有強(qiáng)大的適應(yīng)性和處理能力,所以其在圖像處理、分類等方面有著廣泛的應(yīng)用。MNIST數(shù)據(jù)集是經(jīng)典的機(jī)器學(xué)習(xí)數(shù)據(jù)集,本任務(wù)旨在對MNIST數(shù)據(jù)集進(jìn)行數(shù)據(jù)的讀取與導(dǎo)入,分離出需要用到的訓(xùn)練集與測試集、標(biāo)簽值與特征值。該數(shù)據(jù)集由美國國家標(biāo)準(zhǔn)與技術(shù)研究院整理,自1998年起,該數(shù)據(jù)集被廣泛地應(yīng)用于機(jī)器學(xué)習(xí)與深度學(xué)習(xí)等領(lǐng)域,在k-NN算法、SVM算法、神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等方面都得到了廣泛的應(yīng)用。任務(wù)情景MNIST數(shù)據(jù)集(該數(shù)據(jù)集可從華信教育資源網(wǎng)該書資源處下載)一共統(tǒng)計了來自250個不同的人手寫的數(shù)字圖片,其中,50%來自高中生,50%來自人口普查局的工作人員。MNIST的四個文件如圖8-2所示。圖8-2MNIST的四個文件訓(xùn)練集train-images.idx3-ubyte和train-labels.idx1-ubyte共包含60
000張圖像和標(biāo)簽,測試集t10k-images.idx3-ubyte和t10k-labes.idx1-ubyte共包含10
000張圖像和標(biāo)簽,測試集中的前5000個數(shù)據(jù)為美國人口普查局的員工手寫數(shù)據(jù),后5000個數(shù)據(jù)為大學(xué)生手寫數(shù)據(jù)。
實(shí)現(xiàn)idx文件的讀取與解析,要求能夠讀取數(shù)據(jù)的條數(shù)與矩陣的大小,并輸出一部分訓(xùn)練集的手寫數(shù)字圖片。訓(xùn)練集的大小如圖8-3所示。圖8-3訓(xùn)練集的大小部分訓(xùn)練集標(biāo)簽如圖8-4所示。圖8-4部分訓(xùn)練集標(biāo)簽任務(wù)布置前8張訓(xùn)練集手寫數(shù)字圖片展示如圖8-5所示。圖8-5前8張訓(xùn)練集手寫數(shù)字圖片展示任務(wù)布置測試集的大小如圖8-6所示。圖8-6測試集的大小圖8-7部分訓(xùn)練集標(biāo)簽部分測試集標(biāo)簽如圖8-7所示。任務(wù)布置前8張測試集手寫數(shù)字圖片展示如圖8-8所示。圖8-8前8張測試集手寫數(shù)字圖片展示任務(wù)布置知識準(zhǔn)備1.idx文件讀取下載得到的四個文件并不是常用的csv文件或者圖片文件,而是idx1-ubyte和idx3-ubyte為后綴的文件,這是一種idx數(shù)據(jù)格式的文件。根據(jù)MNIST官網(wǎng),idx1-ubype文件的數(shù)據(jù)格式如圖8-9所示。圖8-9idx1-ubyte文件的數(shù)據(jù)格式知識準(zhǔn)備其中,第0~3個字節(jié)表示的是32位整形數(shù)據(jù),Idx3-ubyte文件的數(shù)據(jù)格式如圖8-10所示。圖8-10Idx3-ubyte文件的數(shù)據(jù)格式測試集的文件類型與訓(xùn)練集相同。根據(jù)數(shù)據(jù)集的文件格式,我們需要讀取magicnumber,這是一種對文件協(xié)議的描述,要先采用struct.unpack()函數(shù)讀取magic值,再采用np.fromfile()函數(shù)將字節(jié)讀入NumPyarray
中。知識準(zhǔn)備課堂隨練8-1讀取本地文件夾下的train-labels.idx1-ubyte標(biāo)簽數(shù)據(jù)集。運(yùn)行結(jié)果知識準(zhǔn)備課堂隨練8-2讀取本地文件夾下的train-images.idx3-ubyte訓(xùn)練集。運(yùn)行結(jié)果知識準(zhǔn)備
接下來,對數(shù)據(jù)進(jìn)行圖形化展示。在MNIST數(shù)據(jù)集中,每張圖片都是由28×28個像素點(diǎn)構(gòu)成的,在讀入數(shù)據(jù)時,將其展開成784維度的向量。若想展示圖片,則將其繼續(xù)重組為28×28的像素矩陣,再展示出來。圖8-11展示的第二張圖片課堂隨練8-3通過plot展示一張訓(xùn)練集中的圖片。其中,j表示展示的是第幾張圖片,當(dāng)j=1時,展示的第二張圖片如圖8-11所示。知識準(zhǔn)備
以上是我們采用struct直接讀取下載好的ubyte文件的程序代碼。下面我們介紹一個適用于神經(jīng)網(wǎng)絡(luò)的庫keras。keras庫一般集成在TensorFlow上,是一個由Python編寫的開源的神經(jīng)網(wǎng)絡(luò)庫,可以作為TensorFlow、Microsoft-CNTK和Theano的高階應(yīng)用程序接口,用于深度學(xué)習(xí)模型的設(shè)計、調(diào)試、評估、應(yīng)用和可視化。keras的安裝步驟如下:(1)在AnacondaNavigator中選擇Environments選項。(2)從未下載中找到keras并下載應(yīng)用,也可以在AnacondaPrompt中輸入命令pipinstallkeras進(jìn)行下載。知識準(zhǔn)備可以僅通過以下命令讀取數(shù)據(jù):為了方便,本單元我們采用keras模塊進(jìn)行神經(jīng)網(wǎng)絡(luò)的搭建。知識準(zhǔn)備2.?dāng)?shù)據(jù)預(yù)處理
通過shape函數(shù),我們可以看到由mnist.load_data()函數(shù)得到的訓(xùn)練集的維度是60000×28×28,測試集的維度是10000×28×28,其中,第一維是指數(shù)據(jù)集的長度(即樣本的個數(shù)),第二維與第三維是指圖片的寬度與高度。對于多層感知機(jī)(MLP),需要輸入二維向量,因此在數(shù)據(jù)預(yù)處理的過程中,我們需要使用reshape函數(shù)將28×28的數(shù)組轉(zhuǎn)化成784長度的向量。課堂隨練8-4將維度為X.shape[0]*X.shape[1]*X.shape[2]的數(shù)據(jù)X轉(zhuǎn)化成二維數(shù)據(jù)。知識準(zhǔn)備
同時,讀取數(shù)據(jù)集之后的灰度值在0~255范圍內(nèi),但為了使模型的訓(xùn)練效果更好,通常將訓(xùn)練數(shù)值歸一化映射到0~1范圍內(nèi)。像素的歸一化可總結(jié)為機(jī)器學(xué)習(xí)中一般的歸一化方法:x'=(x-X_min)/(X_max-X_min)。課堂隨練8-5將數(shù)組array=[1,2,3,4,5]中的數(shù)據(jù)歸一化。知識準(zhǔn)備3.獨(dú)熱編碼
獨(dú)熱編碼又被稱為一位有效編碼,可以將其理解為對N種分類或狀態(tài)使用N位狀態(tài)寄存器進(jìn)行的編碼,每種類別或者狀態(tài)都有獨(dú)立的寄存器的位置,并且不能兩種狀態(tài)并存,即同一時刻只能一位有效。通常情況下,使用二進(jìn)制向量來表示獨(dú)熱編碼,將類別映射到二進(jìn)制向量中的整數(shù)值,該位為1,其他位置標(biāo)記為0。下面將通過幾個例子來對獨(dú)熱編碼進(jìn)行說明:(1)假設(shè)對人的性別【男、女】進(jìn)行獨(dú)熱編碼,類別狀態(tài)有2個,即有2位的狀態(tài)寄存器,可以有如下表示:男表示為[1,0],女表示為[0,1]。知識準(zhǔn)備(2)假設(shè)對圖形的形狀【方形、圓形、三角形】進(jìn)行獨(dú)熱編碼,類別狀態(tài)有3個,即有3位的狀態(tài)寄存器,可以有如下表示:方形表示為[1,0,0],圓形表示為[0,1,0],三角形表示為:[0,0,1]。(3)假設(shè)對人的情感狀態(tài)【憤怒、驚訝、沮喪、快樂、恐懼、悲傷】進(jìn)行獨(dú)熱編碼,類別狀態(tài)有6個,即有6位的狀態(tài)寄存器,可以有如下表示:憤怒表示為[1,0,0,0,0,0],驚訝表示為[0,1,0,0,0,0],沮喪表示為[0,0,1,0,0,0],快樂表示為[0,0,0,1,0,0],恐懼表示為[0,0,0,0,1,0],悲傷表示為[0,0,0,0,0,1]。知識準(zhǔn)備MNIST數(shù)據(jù)集包括的標(biāo)簽表示為0~9,即10個類別,轉(zhuǎn)化成獨(dú)熱編碼則有10位的狀態(tài)寄存器。在keras庫中,我們使用keras.np_utils.to_categorical函數(shù)將整形標(biāo)簽值轉(zhuǎn)化為獨(dú)熱編碼,例如當(dāng)某個訓(xùn)練數(shù)據(jù)的標(biāo)簽值為數(shù)字6時,其獨(dú)熱編碼表示為[0,0,0,0,0,0,1,0,0,0]。課堂隨練8-6將標(biāo)簽值[1,2]轉(zhuǎn)化為獨(dú)熱編碼。任務(wù)實(shí)施Step1:引入相關(guān)模塊,本次實(shí)驗(yàn)為了方便采用開源的神經(jīng)網(wǎng)絡(luò)庫keras,將MNIST數(shù)據(jù)集引入其中。Step2:加載數(shù)據(jù)集,輸出訓(xùn)練集樣本數(shù)與測試集樣本數(shù)。Step3:將三維數(shù)據(jù)集轉(zhuǎn)化為二維數(shù)據(jù)集。Step4:將歸一化像素值歸一化。Step5:將標(biāo)簽值轉(zhuǎn)化為獨(dú)熱編碼。任務(wù)實(shí)施使用獨(dú)熱編碼前后的標(biāo)簽值如圖8-12所示。(a)使用獨(dú)熱編碼前的標(biāo)簽值(b)使用獨(dú)熱編碼后的標(biāo)簽值圖8-12獨(dú)熱編碼前后的標(biāo)簽值任務(wù)8.2訓(xùn)練神經(jīng)網(wǎng)絡(luò)任務(wù)情景
本任務(wù)旨在使讀者了解神經(jīng)網(wǎng)絡(luò)的算法原理及其模型的搭建,并使讀者學(xué)會使用Python搭建神經(jīng)網(wǎng)絡(luò)。訓(xùn)練集為MNIST數(shù)據(jù)集,調(diào)整參數(shù)可以得到較好的效果。
人工神經(jīng)網(wǎng)絡(luò)簡稱神經(jīng)網(wǎng)絡(luò),顧名思義,是一種模仿人腦處理信息的方式來處理數(shù)據(jù)的系統(tǒng)。任務(wù)布置要求可以簡單查看模型摘要,模型摘要如圖8-13所示。圖8-13模型摘要任務(wù)布置
要求通過建立模型,訓(xùn)練多層的神經(jīng)網(wǎng)絡(luò),對MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練,得到測試集的預(yù)測準(zhǔn)確率,通過調(diào)整Epoch值、激活函數(shù)等觀看預(yù)測結(jié)果。Epoch值為q時的訓(xùn)練結(jié)果如圖8-14所示。圖8-14Epoch值為9時的訓(xùn)練結(jié)果知識準(zhǔn)備1.神經(jīng)元
人工神經(jīng)網(wǎng)絡(luò)(本書中簡稱神經(jīng)網(wǎng)絡(luò))由人工神經(jīng)元(本書中簡稱神經(jīng)元)組成,這些神經(jīng)元在概念上源自生物神經(jīng)元。每個神經(jīng)元都有輸入并能產(chǎn)生單個輸出,該輸出可以發(fā)送到多個其他神經(jīng)元。神經(jīng)元模型示意圖如圖8-15所示。其中,表示輸入信息,可以是圖像、文檔、語言或者來自其他神經(jīng)元的信息;表示對輸入信息賦予的權(quán)重;對輸入信息加權(quán)求和得到的結(jié)果與閾值比較,將比較結(jié)果通過函數(shù)進(jìn)行映射后得到輸出;稱為激勵函數(shù)(激活函數(shù))。該神經(jīng)元的輸出,其中,圖8-15神經(jīng)元模型示意圖知識準(zhǔn)備
圖8-15所示的模型是1943年由心理學(xué)家WarrenMcCulloch和數(shù)學(xué)家WalterPitts提出的M-P模型。在M-P模型中,神經(jīng)元只有兩種狀態(tài)——興奮和抑制,因此輸出y也只有0和1兩種結(jié)果,早期的激活函數(shù)只是一個階躍函數(shù),這個函數(shù)的特性是在輸入為零時會發(fā)生跳轉(zhuǎn),形狀像一個臺階。在圖8-16中,當(dāng)階躍函數(shù)的輸入小于或等于0時,輸出為0,而在其他情況下,輸出為1。圖8-15神經(jīng)元模型示意圖圖8-16階躍函數(shù)示意圖知識準(zhǔn)備
當(dāng)神經(jīng)元感覺到溫度經(jīng)過了一定的“閾值”處理(例如對于大于43℃的水,我們會覺得燙),通過激活函數(shù)發(fā)出判斷:手離開(1)或者不離開(0)。這種只有0和1的二分類問題可以通過階躍函數(shù)來實(shí)現(xiàn),可如果我們希望感受到不同的溫度,例如20℃左右,大于30℃,40多攝氏度這種非線性的結(jié)果,那么這時簡單的階躍函數(shù)不能滿足非線性的需求。
從生物學(xué)的角度,可以這樣理解階躍函數(shù):將手放在一個水要燒開的鍋的鍋蓋上,鍋蓋的溫度就是神經(jīng)元的輸入,神經(jīng)元感受到燙后會發(fā)出指令:手離開(1)或者不離開(0)。知識準(zhǔn)備常用的激活函數(shù)還包括以下幾種。1)sigmoid函數(shù)圖8-17sigmoid函數(shù)示意圖sigmoid函數(shù)可以將輸入的整個實(shí)數(shù)范圍內(nèi)的任意值映射到[0,1]范圍內(nèi),當(dāng)輸入值較大時,會返回一個接近于1的值;當(dāng)輸入值較小時,會返回一個接近于0的值。在TensorFlow中,通過tf.sigmoid(x)直接調(diào)用sigmoid函數(shù)。sigmoid函數(shù)的數(shù)學(xué)公式為知識準(zhǔn)備2)softmax函數(shù)softmax函數(shù)實(shí)際上是在sigmoid函數(shù)的基礎(chǔ)上所做的提升,它可以將所有輸出映射成概率的形式,即值在[0,1]范圍內(nèi)且概率總和為1。在TensorFlow中,可以通過tf.nn.softmax()來調(diào)用softmax函數(shù)。softmax函數(shù)的數(shù)學(xué)公式為知識準(zhǔn)備3)tanh函數(shù)tanh函數(shù)與sigmoid函數(shù)相似,但它能將值映射到[-1,1]范圍內(nèi)。與sigmoid函數(shù)相比,它的輸出均值是0,使得其收斂速度比sigmoid函數(shù)快,減少了迭代次數(shù),但冪運(yùn)算的問題依然存在。tanh函數(shù)的數(shù)學(xué)公式為圖8-18tanh函數(shù)示意圖知識準(zhǔn)備4)ReLU函數(shù)ReLU函數(shù),是目前使用最頻繁的激活函數(shù),ReLU函數(shù)在x<0時,輸出始終為0。由于x>0時,ReLU函數(shù)的導(dǎo)數(shù)為1,即保持輸出為x,所以ReLU函數(shù)能夠在x>0時保持梯度不斷衰減,從而緩解梯度消失的問題,還能加快收斂速度。ReLU函數(shù)的數(shù)學(xué)公式為圖8-19ReLU函數(shù)示意圖知識準(zhǔn)備2.多層神經(jīng)網(wǎng)絡(luò)
單層的感知機(jī)模型因?yàn)榧せ詈瘮?shù)通常只有兩個輸出,所以一般只用于二分類的輸出,若我們將多個感知機(jī)組合,再加上可輸出值為0與1之間的連續(xù)值的激活函數(shù),就可以實(shí)現(xiàn)從輸入到輸出的任意非線性的映射。
下面我們將學(xué)習(xí)將多個單層的感知機(jī)組合成為多層感知機(jī)的組合,這種特殊類型的全連接網(wǎng)絡(luò)被稱為多層感知機(jī)(Multi-LayerPerceptron,MLP)模型。圖8-20所示為一個三層的MLP模型。圖8-20一個三層的MLP模型知識準(zhǔn)備
在MLP模型中,除了輸入層和輸出層,中間還可以有很多隱藏層。在圖8-20中,輸入層上的全部單元都連接著隱藏層,隱藏層上的全部單元都連接著輸出層,當(dāng)MLP模型中有一個以上的隱藏層時,稱其為深度神經(jīng)網(wǎng)絡(luò)。
從原則上講,只要隱藏層中神經(jīng)元的個數(shù)足夠多,且神經(jīng)元的激活函數(shù)為非線性函數(shù),這樣的多層神經(jīng)網(wǎng)絡(luò)可以逼近任何函數(shù)。MLP可以從運(yùn)行過程區(qū)分模型的結(jié)構(gòu),模型的結(jié)構(gòu)分為前向部分和后向部分,前向部分稱為前向傳播算法,指的是從輸入層開始計算逐步向后輸出的過程;后向部分稱為反向傳播算法,指的是通過神經(jīng)網(wǎng)絡(luò)反向求導(dǎo)降低誤差來更新神經(jīng)網(wǎng)絡(luò)參數(shù)的過程。
能否解決確定神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程中的參數(shù)這一問題是影響神經(jīng)網(wǎng)絡(luò)發(fā)展的關(guān)鍵,誤差反向傳播算法的發(fā)明使得多層神經(jīng)網(wǎng)絡(luò)得以快速發(fā)展。知識準(zhǔn)備1)前向傳播算法
前向傳播算法就是將上一層的輸出作為下一層的輸入,并計算下一層的輸出,直到運(yùn)算到輸出層為止。在圖8-20中,隱藏層Layer2的輸出
、和的計算公式(其中,假設(shè)激活函數(shù)為sigmoid函數(shù),用符號表示)為輸出層Layer3的輸出
、的計算公式為將其寫成矩陣
乘法的形式為圖8-21前向傳播算法示意圖知識準(zhǔn)備2)反向傳播算法
反向傳播算法是一種與最佳化方法(如梯度下降算法)結(jié)合使用的,用來訓(xùn)練神經(jīng)網(wǎng)絡(luò)的常見方法。該方法對網(wǎng)絡(luò)中所有權(quán)重計算代價函數(shù)的梯度。這個梯度會反饋給最佳化方法,用來更新權(quán)重以最小化代價函數(shù)?!胺聪騻鞑ァ边@個術(shù)語經(jīng)常被誤解為用于多層神經(jīng)網(wǎng)絡(luò)的整個學(xué)習(xí)算法。實(shí)際上,反向傳播算法僅指用于計算梯度的方法。而隨機(jī)梯度下降算法是使用該梯度來學(xué)習(xí)的。另外,反向傳播算法還經(jīng)常被誤解為僅適用于多層神經(jīng)網(wǎng)絡(luò),但是從原則上講,它可以計算任何函數(shù)的導(dǎo)數(shù)(對于一些函數(shù),正確的響應(yīng)為報告函數(shù)的導(dǎo)數(shù)是未定義的)。知識準(zhǔn)備
微積分中的鏈?zhǔn)椒▌t用于計算復(fù)合函數(shù)的導(dǎo)數(shù)。反向傳播算法是一種計算鏈?zhǔn)椒▌t的算法,使用高效的特定運(yùn)輸順序。設(shè)是實(shí)數(shù),
和是從實(shí)數(shù)映射
到實(shí)數(shù)的函數(shù)。假設(shè)
且,那么鏈?zhǔn)椒▌t為假設(shè)用最常用的MSE來作為代價函數(shù),代價函數(shù)記為,其中,為對訓(xùn)練樣本計算的輸出;為訓(xùn)練樣本的真實(shí)值。加入系數(shù)是為了抵消微分出來的指數(shù)。知識準(zhǔn)備(1)輸出層的梯度輸出層的梯度的計算公式如下:其中,為Hadamard積符號,即兩個維度相同的矩陣對應(yīng)元素的乘積。在求解輸出層梯度時,有公共的部分,記為知識準(zhǔn)備(2)隱藏層的梯度。
我們已經(jīng)將輸出層的梯度計算出來,那么如何計算層的梯度、層的梯度呢?
之前已經(jīng)求出了輸出層的誤差,根據(jù)誤差反向傳播的原理,可以將當(dāng)前層的誤差理解為上一層所有神經(jīng)元誤差的復(fù)合函數(shù),即用上一層的誤差來表示當(dāng)前層誤差,并依次遞推。采用數(shù)學(xué)歸納法,假設(shè)
層的已經(jīng)求出,那么我們該如何求出第
層的
呢?知識準(zhǔn)備而
和的關(guān)系如下:由此得出則。在得出的遞推關(guān)系式后,就可以求出層的
和的對應(yīng)梯度:知識準(zhǔn)備對反向傳播算法的歸納如下:
輸入總層數(shù)L,各隱藏層與輸出層的神經(jīng)元個數(shù),激活函數(shù),代價函數(shù),迭代步長,最大迭代次數(shù)MAX,以及停止迭代閾值。輸出的個訓(xùn)練樣本為(1)初始化參數(shù)W、b。(2)前向傳播算法。forto:(3)通過代價函數(shù)計算輸出層的梯度。知識準(zhǔn)備(4)執(zhí)行反向傳播算法。forto2:(5)更新W、b。通過梯度下降算法更新權(quán)重W和偏置的值,為學(xué)習(xí)率(步長),。(6)如果所有W、b的變化值都小于停止迭代閾值e,則跳出迭代循環(huán)。(7)輸出隱藏層與輸出層的線性關(guān)系系數(shù)矩陣W和偏置b。知識準(zhǔn)備代碼實(shí)例1:利用Python實(shí)現(xiàn)三層感知機(jī)對MNIST數(shù)據(jù)集中手寫數(shù)字的識別代碼實(shí)例2:利用TensorFlow實(shí)現(xiàn)三層感知機(jī)對MNIST數(shù)據(jù)集中手寫數(shù)字的識別任務(wù)實(shí)施(1)搭建神經(jīng)網(wǎng)絡(luò)模型,創(chuàng)建一個函數(shù),建立三層感知機(jī)模型(含有一個隱藏層),在keras庫中有兩種深度學(xué)習(xí)的模型:序列模型和通用模型,序列模型是實(shí)現(xiàn)全連接網(wǎng)絡(luò)的最好方式,序列模型各層之間是依次順序的線性關(guān)系,序列模型是多個網(wǎng)絡(luò)層的線性堆棧,可以從keras庫中導(dǎo)入序列模型。(2)建立輸入層與第一個隱藏層。keras庫中已經(jīng)內(nèi)建了各種神經(jīng)網(wǎng)絡(luò)層,只需將各層的模型添加到整體框架中,并設(shè)置各層的參數(shù),即可完成封裝。需要先添加輸入層和隱藏層,因?yàn)樘砑虞斎雽蛹刺砑虞斎氲墓?jié)點(diǎn)數(shù),這里需要搭配一個隱蔽層來完成參數(shù)的設(shè)置,輸入神經(jīng)元的個數(shù)由輸入神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)來決定。其中,784表示輸出個數(shù),即下一層的輸入個數(shù);input_dim參數(shù)表示本層為輸入層;kernel_initializer表示使用正態(tài)分布的隨機(jī)數(shù)來初始化權(quán)重和方差;activation表示使用activation定義激活函數(shù),在此層,我們可以使用ReLU函數(shù)。任務(wù)實(shí)施(3)建立輸出層。輸出層與前一個隱藏層相連,不用設(shè)定輸入個數(shù),第一個參數(shù)用于設(shè)定輸出神經(jīng)單元的個數(shù),這里的10為用獨(dú)熱碼表示的10種樣本標(biāo)簽。之后,我們可以通過summary()函數(shù)查看模型摘要,并查看每層的參數(shù)。(4)使用compile函數(shù)定義訓(xùn)練方式。使用loss參數(shù)設(shè)定代價函數(shù),此處選擇交叉熵的方式;optimizer參數(shù)表示使用的是何種優(yōu)化器,Adam優(yōu)化器可以使訓(xùn)練的收斂速度更快;將metrics參數(shù)設(shè)定為'accuracy',即使用準(zhǔn)確率來評估模型。優(yōu)化器的選擇還包括隨機(jī)梯度下降、AdaGrad、RMSprop等多種方式,不同的優(yōu)化器適用于不同的情況。在實(shí)際應(yīng)用中,Adam優(yōu)化器最常用。任務(wù)實(shí)施(5)訓(xùn)練模型。使用fit()函數(shù)訓(xùn)練模型,epochs參數(shù)表示訓(xùn)練周期,batch_size表示每批訓(xùn)練的數(shù)據(jù)的項數(shù)(以下簡稱每批項數(shù)),訓(xùn)練周期和每批項數(shù)都可以根據(jù)測試進(jìn)行調(diào)整,此處只訓(xùn)練9次。需要注意的是,訓(xùn)練周期的增加確實(shí)會使準(zhǔn)確率變高,但同時會帶來過擬合的問題,因此要均衡考慮過擬合程度和訓(xùn)練時間的問題。(6)評估模型。使用evaluate函數(shù)評估準(zhǔn)確率,其中,scores[0]輸出的為損失率,scores[0]輸出的為準(zhǔn)確率
。任務(wù)8.3深度學(xué)習(xí)任務(wù)情景相信很多人對“深度學(xué)習(xí)”這個詞語已經(jīng)不陌生了,但是,“人工智能”、“深度學(xué)習(xí)”、“機(jī)器學(xué)習(xí)”及“神經(jīng)網(wǎng)絡(luò)”這些詞語之間有什么關(guān)系呢?在此,本將任務(wù)作為拓展部分來為大家簡單介紹在人工智能領(lǐng)域發(fā)光發(fā)熱的深度學(xué)習(xí)。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)研究中的一個新領(lǐng)域,其動機(jī)在于建立模擬人腦進(jìn)行分析、學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò),模仿人腦的機(jī)制來解釋數(shù)據(jù),如圖像、聲音和文本。深度學(xué)習(xí)是無監(jiān)督學(xué)習(xí)的一種。深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究。包含多個隱藏層的MLP就是一種深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象的高層表示屬性類別或特征,從而發(fā)現(xiàn)數(shù)據(jù)的分布式特征。任務(wù)情景下面我們通過深度學(xué)習(xí)中著名的卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetwork,CNN)進(jìn)行MNIST集中手寫數(shù)字的識別。卷積神經(jīng)網(wǎng)絡(luò)的基本模塊是由輸入層、輸出層和多個隱藏層組成的,隱藏層可分為卷積層、池化層、線性整流(ReLU)層和全連接層。與其他圖像分類算法相比,卷積神經(jīng)網(wǎng)絡(luò)算法使用相對較少的預(yù)處理操作。這意味著卷積神經(jīng)網(wǎng)絡(luò)可以學(xué)習(xí)使用傳統(tǒng)算法中手工設(shè)計的過濾器。它們
可用于圖像和視頻識別,推薦系統(tǒng),圖像分類,醫(yī)學(xué)圖像分析,以及自然語言處理。知識準(zhǔn)備1.與MLP的對比
MLP有幾個缺點(diǎn),特別是在圖像處理方面。MLP對每個輸入使用一個感知機(jī)(例如,對于圖像中的像素,在RGB情況下乘以3)。對于大圖像,權(quán)重迅速變得難以管理。想象一個圖像,該圖像擁有224×224×3個像素,且用全連接層作為直接第一個隱藏層,具有100
000個感知機(jī),連接總數(shù)將是224×224×3×100
000=1
502
800
000個(約150億個),這是不可能處理的。另外,MLP對輸入圖像及其移位版本的反應(yīng)不同,它們不是平移不變的,且當(dāng)圖像變平為MLP時,空間信息會丟失??拷墓?jié)點(diǎn)很重要,因?yàn)樗鼈冇兄诙x圖像的特征。因此,我們需要掌握一種利用圖像特征(像素)的空間相關(guān)性的方法。知識準(zhǔn)備
可以用以下3點(diǎn)概括用全連接神經(jīng)網(wǎng)絡(luò)處理大尺寸圖像所具有的3個明顯的缺點(diǎn):(3)大量的參數(shù)很快會導(dǎo)致網(wǎng)絡(luò)過擬合。(1)將圖像展開為向量會丟失空間信息。(2)參數(shù)過多導(dǎo)致效率低下及訓(xùn)練困難。知識準(zhǔn)備
與常規(guī)神經(jīng)網(wǎng)絡(luò)不同,卷積神經(jīng)網(wǎng)絡(luò)的各層中的神經(jīng)元是按三維排列的,具有寬度、高度和深度。其中的寬度和高度是很好理解的,因?yàn)楸旧砭矸e就是一個二維模板。但是卷積神經(jīng)網(wǎng)絡(luò)中的深度指的是激活數(shù)據(jù)體的第三個維度,而不是整個網(wǎng)絡(luò)的深度,整個網(wǎng)絡(luò)的深度指的是網(wǎng)絡(luò)的層數(shù)。舉個例子來理解寬度、高度和深度的概念,假如用CIFAR-10中的圖像作為卷積神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)體,該輸入數(shù)據(jù)體的維度是32×32×3(寬度×高度×深度)。我們將看到,層中的神經(jīng)元將只與前一層中的一小塊區(qū)域連接,而不是采取全連接方式。至于對CIFAR-10中的圖像進(jìn)行分類的卷積網(wǎng)絡(luò),其最后的輸出層的維度是1×1×10,因?yàn)樵诰矸e神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的最后部分,將會把全尺寸的圖像壓縮為包含分類評分的一個向量,向量是在深度方向上排列的。全連接神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的對比圖如圖8-22所示。圖8-22全連接神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的對比圖知識準(zhǔn)備圖8-22的左側(cè)是一個3層的全連接神經(jīng)網(wǎng)絡(luò);圖8-22的右側(cè)是一個卷積神經(jīng)網(wǎng)絡(luò),將它的神經(jīng)元排列成3個維度(寬度、高度和深度)。卷積神經(jīng)網(wǎng)絡(luò)的每層都將三維的輸入數(shù)據(jù)變化為神經(jīng)元三維的激活數(shù)據(jù)并輸出。在圖8-22的右側(cè),紅色的輸入層代表輸入圖像,所以它的寬度和高度就是圖像的寬度和高度,它的深度是3(代表了紅、綠、藍(lán)3種顏色通道),與紅色相鄰的藍(lán)色部分是經(jīng)過卷積和池化的激活值(也可以看作是神經(jīng)元),后面是卷積池化層。圖8-22全連接神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的對比圖知識準(zhǔn)備2.卷積神經(jīng)網(wǎng)絡(luò)卷積神經(jīng)網(wǎng)絡(luò)通常包含以下幾種層:
(1)卷積層(ConvolutionalLayer),卷積神經(jīng)網(wǎng)路中的每個卷積層由若干卷積單元組成,每個卷積單元的參數(shù)都是通過反向傳播算法優(yōu)化得到的。卷積運(yùn)算的目的是提取輸入的不同特征,第一個卷積層可能只能提取一些低級的特征(如邊緣、線條和角等),更多層的網(wǎng)絡(luò)能從低級特征中迭代提取更復(fù)雜的特征。(2)線性整流層(RectifiedLinearUnitsLayer,ReLULayer,即ReLU層),這一層神經(jīng)的活性化函數(shù)(ActivationFunction)使用ReLU函數(shù),即f(x)=max(0,x)。知識準(zhǔn)備(3)池化層(PoolingLayer),通常在卷積層之后會得到維度很大的特征,將特征切成幾個區(qū)域,取其最大值或均值,得到新的、維度較小的特征。(4)全連接層(Fully-Connectedlayer),把所有的局部特征結(jié)合形成全局特征,用來計算最后每類的得分。知識準(zhǔn)備1)卷積層卷積層是卷積神經(jīng)網(wǎng)絡(luò)的核心。在圖像識別里提到的卷積是二維卷積,即離散二維濾波器(也稱作卷積核)與二維圖像進(jìn)行卷積操作,簡單來講,就是二維濾波器滑動到二維圖像上的所有位置,并在每個位置上與該像素點(diǎn)及其領(lǐng)域像素點(diǎn)做內(nèi)積。卷積操作被廣泛應(yīng)用于圖像處理領(lǐng)域,用不同的卷積核可以提取不同的特征。在深層卷積神經(jīng)網(wǎng)絡(luò)中,通過卷積操作可以提取出圖像中從低級到高級的特征。圖8-23卷積層的提取方式知識準(zhǔn)備
卷積操作是通過卷積核對每個通道的矩陣先從左到右(卷積核一般是3×3的矩陣)再從上至下地進(jìn)行互相關(guān)運(yùn)算(卷積操作也會保留位置信息),就像一個小的窗口一樣,從左上角一步步滑動到右下角,滑動的步長是個超參數(shù),互相關(guān)運(yùn)算的意思就是對應(yīng)位置相乘再相加,最后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度農(nóng)業(yè)機(jī)械設(shè)備維修及保養(yǎng)服務(wù)合同范本
- 2025年度混凝土運(yùn)輸過程中的質(zhì)量監(jiān)控合同
- 二零二五年度WPS合同管理智能提醒與催收服務(wù)協(xié)議2篇
- 2025版環(huán)保達(dá)標(biāo)簡易廠房租賃合同協(xié)議書3篇
- 2024年鐵路通信設(shè)施維護(hù)勞務(wù)分包合同模板下載3篇
- 力士溢流閥安全操作規(guī)程
- 2024年銷售團(tuán)隊賦能超兔一體云CRM服務(wù)合同3篇
- 大米玉米膨化機(jī)安全操作規(guī)程
- 二零二五年度體育設(shè)施房屋競價購買協(xié)議3篇
- 2025版金融科技貸款居間服務(wù)協(xié)議2篇
- 2024-2025學(xué)年哈爾濱市平房區(qū)四上數(shù)學(xué)期末調(diào)研試題含解析
- 2022年高考數(shù)學(xué)試卷(上海)(秋考)(空白卷)
- 山東省濟(jì)南市語文小升初2024年模擬試題與參考答案
- 裝配式建筑復(fù)習(xí)試題及答案
- 空氣動力學(xué)仿真技術(shù):湍流模型:k-ε湍流模型原理與應(yīng)用
- EDI工程手冊中文
- 高中期末考試考風(fēng)考紀(jì)及誠信教育
- 2025屆廣東省深圳市深圳外國語九年級物理第一學(xué)期期末經(jīng)典試題含解析
- 機(jī)械工程技術(shù)訓(xùn)練智慧樹知到期末考試答案章節(jié)答案2024年北京航空航天大學(xué)
- 江蘇某高速公路基本表格及用表說明
- 醫(yī)生與患者關(guān)系中的信任與治療
評論
0/150
提交評論