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