10從感知器到人工神經(jīng)網(wǎng)絡(luò)_第1頁
10從感知器到人工神經(jīng)網(wǎng)絡(luò)_第2頁
10從感知器到人工神經(jīng)網(wǎng)絡(luò)_第3頁
10從感知器到人工神經(jīng)網(wǎng)絡(luò)_第4頁
10從感知器到人工神經(jīng)網(wǎng)絡(luò)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

工神經(jīng)網(wǎng)絡(luò)(artificialneuralnetworks,ANN),一種用于強(qiáng)大的非線性回歸和分類模型,用新的策如果把感知器比喻成一個(gè)神經(jīng)元,那么人工神經(jīng)網(wǎng)絡(luò),即神經(jīng)網(wǎng),就是一個(gè)大腦。人腦就是由十幾億的神經(jīng)元和上千億的突觸組成,人工神經(jīng)網(wǎng)絡(luò)是一種感知器或其他人工神經(jīng)的有向圖。這個(gè)圖的邊帶有權(quán)重,這些權(quán)重是模型需要學(xué)習(xí)的參數(shù)。有許多著作整本書描述人工神經(jīng)網(wǎng)絡(luò);本章主要是對它的結(jié)構(gòu)和訓(xùn)練方法進(jìn)行介紹。目前scikit-learn的版本是0.16.1,在2014年GoogleSummer的項(xiàng)目中,多層感知器已經(jīng)被作者實(shí)現(xiàn),并提交在scikit-在第8章,感知器里,我們介紹過布爾函數(shù)如AND(與),R(或)和NAND(與非)近似,而XOR(異或)作為線性不可分函數(shù)不能被近似,如下圖所示:讓我們深入研究XOR來感受一下人工神經(jīng)網(wǎng)絡(luò)的強(qiáng)大。AND是兩個(gè)輸入均為1結(jié)果才為1,OR是兩個(gè)輸入至少有1個(gè)1結(jié)果即為1。XOR與它們不同,XOR是當(dāng)兩個(gè)輸入中有且僅有1個(gè)1結(jié)果才為1。我們把XOR輸出為1的兩個(gè)輸入看出是兩個(gè)條件均為真。第一個(gè)條件是至少有1個(gè)輸入為1,這與OR同。第二個(gè)條件是兩個(gè)輸入不都為1,這與NAND的條件相同。我們可以通過處理R和NAND的輸入,生成同樣輸出的XOR,然后用AND驗(yàn)證兩個(gè)函數(shù)的輸出是否均為1。也就是說,R,NAND和AND可以組合生成同樣結(jié)果的XOR。ABAANDANANDAORAXOR000100010111100111111010ABAORANAND(AORB)AND(ANAND00010011111011111100我們不使用單個(gè)感知器來表示XOR近似一個(gè)線性函數(shù)。每個(gè)樣本的特征表述都被輸入到兩個(gè)神經(jīng)元:一個(gè)NAND神經(jīng)元和一個(gè)R神經(jīng)元。這些神經(jīng)元的輸出將連接到第三個(gè)AND神經(jīng)元上,測試XOR的條件是否為真。人工神經(jīng)網(wǎng)絡(luò)主要分為兩種類型。前饋人工神經(jīng)網(wǎng)絡(luò)(Feedforwardeuralntworks)是最常用的神經(jīng)網(wǎng)絡(luò)類型,一般定義為有向無環(huán)圖。信號只能沿著最終輸入的那個(gè)方向傳播。另一種類型是反饋人工神經(jīng)網(wǎng)絡(luò)(feedbackeuralntworks),也稱遞歸神經(jīng)網(wǎng)絡(luò)(ecurrenteuralntworks),網(wǎng)絡(luò)圖中有環(huán)。反饋環(huán)表示網(wǎng)絡(luò)的一種內(nèi)部狀態(tài),隨著不同時(shí)間內(nèi)輸入條件的改變,網(wǎng)絡(luò)的行為也會發(fā)生變化。反饋人工神經(jīng)網(wǎng)絡(luò)的臨時(shí)狀態(tài)讓它們適合處理涉及連續(xù)輸入的問題。因?yàn)槟壳癱iten沒有實(shí)現(xiàn)反饋人工神經(jīng)網(wǎng)絡(luò),本文只介紹前饋人工神經(jīng)網(wǎng)絡(luò)。多層感知器(multilayerperceptron,MLP)是最流行的人工神經(jīng)網(wǎng)絡(luò)之一。它的名稱不太恰當(dāng),多輸入層(nptlayer)由簡單的輸入人工神經(jīng)元構(gòu)成。每個(gè)輸入神經(jīng)元至少連接一個(gè)隱藏層(iddenlayer)的人工神經(jīng)元。隱藏層表示潛在的變量;層的輸入和輸出都不會出現(xiàn)在訓(xùn)練集中。隱藏層后面連接的是輸出層(otutlayer)。下圖所示的三層架構(gòu)的多層感知器。帶有+1標(biāo)簽的是常誤差項(xiàng)神經(jīng)tangentfunction)和邏輯函數(shù)(logisticfunction),公式如下所示:f(x)=tanh(x)f(x)= 1+和其他的監(jiān)督模型一樣,我們的目標(biāo)是找到成本函數(shù)最小化的權(quán)重值。通常,MLP平方和的均值,計(jì)算公式如下所示,其中的m表示訓(xùn)練樣本的數(shù)量:mMSEm

法。這個(gè)算法名稱是反向(back)和傳播(propagtin)的合成詞,是指誤差在網(wǎng)絡(luò)層的流向。理論上,反向傳播可以用于訓(xùn)練具有任意層、任意數(shù)量隱藏單元的前饋人工神經(jīng)網(wǎng)絡(luò),但是計(jì)算能力的實(shí)際限制會約束反向傳播的能力。反向傳播與梯度下降法類似,根據(jù)成本函數(shù)的梯度變化不斷更新模型參數(shù)。與我們前面介紹過的線性模型不同,神經(jīng)網(wǎng)絡(luò)包含不可見的隱藏單元;我們不能從訓(xùn)練集中找到它們。如果我們找不到這些隱藏單元,我們也就不能計(jì)算它們的誤差,不能計(jì)算成本函數(shù)的梯度,進(jìn)而無法求出權(quán)重值。如果一個(gè)隨機(jī)變化是某個(gè)權(quán)重降低了成本函數(shù)值,那么我們保留這個(gè)變化,就可能同時(shí)改變另一個(gè)權(quán)重的值。這種做法有個(gè)明顯的問題,就是其計(jì)算成本過高。而反向傳播算法提供了一種有效的解決方法。(ctivin)。首先,我們計(jì)算ie1單元的激勵(lì)。我們找到id1激勵(lì)函數(shù)處理輸入的加權(quán)和。注意Hidden1單元會收到一個(gè)常誤差項(xiàng)輸入單元,并沒有在下圖中畫第一個(gè)隱藏層三個(gè)隱藏單元的激勵(lì)計(jì)算完之后,我們再處理第二個(gè)隱藏層。本例中,第一個(gè)隱藏層第一個(gè)隱藏層到第二個(gè)隱藏層。與第一個(gè)隱藏層三個(gè)隱藏單元計(jì)算過程類似,都有一個(gè)常誤差項(xiàng)輸入單按照同樣方法計(jì)算dd5和Hd6的激勵(lì)。當(dāng)?shù)诙€(gè)隱藏層三個(gè)隱藏單元的激勵(lì)計(jì)算完成后,我們計(jì)算輸出層。up1的激勵(lì)是第二個(gè)隱藏層三個(gè)隱藏單元的激勵(lì)的加權(quán)和經(jīng)過激勵(lì)函數(shù)處理的結(jié)果。類似與隱藏單元,有一個(gè)常誤差項(xiàng)的輸入單元,如下圖所示:我們把輸出單元計(jì)算的誤差作為網(wǎng)絡(luò)誤差。隱藏單元表示不可見的變量;沒有數(shù)據(jù)可以進(jìn)行對照,因此我們無法度量隱藏單元。為了更新權(quán)重,我們必須把網(wǎng)絡(luò)的誤差反向傳回。于是,我們先從Output1輸出單元開始。其誤差等于真實(shí)值與預(yù)測值的差,乘以激勵(lì)函數(shù)對up1輸出單元的偏導(dǎo)數(shù):算完輸出層的誤差之后,我們把誤差傳回第二個(gè)隱藏層。首先,我們計(jì)算Hidden4Output1的誤差乘以連接Hidden4與Output1的權(quán)重,再Output2的誤差乘以連接按同樣的方法處理權(quán)重Weight2,我們把學(xué)習(xí)速率,id1的誤差以及pt2的值的乘積增加到Weight2。最后,我們計(jì)算常誤差項(xiàng)輸入的權(quán)重,把學(xué)習(xí)速率,ie1的誤差以及常誤差項(xiàng)的值1的乘積增加到常誤差項(xiàng)輸入的權(quán)重,如下圖所示:輸入層與第一隱藏層之間邊的權(quán)重全部更新之后,我們可以用同樣的方法計(jì)算第一隱藏層與第二隱藏層直接邊的權(quán)重。我們計(jì)算權(quán)重eh7,把學(xué)習(xí)速率,Hidden4的誤差以及ie1的值的乘積增加到eg7。同樣的方法計(jì)算Weight8與Weight15:把學(xué)習(xí)速率,Output2的誤差以及Hidden6的激勵(lì)的乘積增加到eg21之后,這個(gè)階段網(wǎng)絡(luò)權(quán)重的更新工作就完成了。我們現(xiàn)在可以用心的權(quán)重再運(yùn)行一遍前向傳播,成本函數(shù)的值應(yīng)該會減少。重復(fù)這個(gè)過程直到模型收斂或者停止條件得到了滿足為止。與之前我們介紹過的線性模型不同,反向傳播不能優(yōu)化凸函數(shù)。反向傳播可能用某個(gè)局部最小值的參數(shù)值達(dá)到收斂,而不是全局最小值。實(shí)際應(yīng)用中,局部最小值通常可以解決問題。github上提供了單獨(dú)的MLP模塊NeuralNetworks init.py文件做如下修改即可:#initfrom.rbmimportfrom.multilayer_perceptronimportMultilfrom.multilayer_perceptronimportMultilall=

另外,在Linux和MacOS系統(tǒng)里,復(fù)制.py文件的權(quán)限記得改成chmod644Infromsklearn.cross_validationfromsklearn.cross_validationimportfromsklearn.neural_networkimportimportnumpyasy=[0,1,1,0]*X=np.array([[0,0],[0,1],[1,0],[1,1]]*X_train,X_test,y_train,y_test=train_test_split(X,y,然后,我們將Mtarrpolsir類實(shí)例化。用_dn設(shè)置神經(jīng)網(wǎng)絡(luò)架構(gòu)中隱藏層的層數(shù)。我們將隱藏層的層數(shù)設(shè)置為兩層。liyPctnaier類自動創(chuàng)建兩個(gè)輸入單元和一個(gè)輸出單元。在多元分類問題中分類器會為每一個(gè)可能的類型創(chuàng)建一個(gè)輸出。選擇神經(jīng)網(wǎng)絡(luò)架構(gòu)是很復(fù)雜的事情。確定隱藏單元和隱藏層的數(shù)量有一些首要原則,但是都沒有必然的依據(jù)。隱藏單元的數(shù)量由樣本數(shù)量,訓(xùn)練數(shù)據(jù)的噪聲,要被近似的函數(shù)復(fù)雜性,隱藏單元的激勵(lì)函數(shù),學(xué)習(xí)算法和使用的正則化方法決定。實(shí)際上,架構(gòu)的效果只能通過交叉檢驗(yàn)得出。Inclfclf=clf.fit(X_train,MultilayerPerceptronClassifier(activation='logistic',

alpha=1e-05,batch_size=200,hidden_layer_sizeslearning_rate='constant',learning_rate_init=0.max_iter=200,power_t=0.5,random_state=3,shuftol=1e-05,verbose=False,warm_start=False)Inprintprint('層數(shù):%s,輸出單元數(shù)量:%s(clf.n_layers_,clf.n_outputs_))predictions=clf.predict(X_test)print('準(zhǔn)確率:%s'%clf.score(X_test,fori,pinprint('真實(shí)值:%s,預(yù)測值:%s(y_test[i],在上一章我們介紹過用支持向量機(jī)識別MNIST數(shù)據(jù)集里面的手寫數(shù)字。下面我們用人工神經(jīng)網(wǎng)絡(luò)來識別:Infromfromsklearn.datasetsimportfromsklearn.cross_validationimporttrain_test_split,fromsklearn.pipelineimportfromsklearn.preprocessingimportfromsklearn.neural_network.multilayer_perceptronimportMultilayerPercepInififname=='main':digits=load_digits()X=digits.datay=digits.target用llarrpolsir訓(xùn)練模型前,我們用ple絡(luò)包括一個(gè)輸入層和一個(gè)輸出層,兩個(gè)隱藏層,其中一個(gè)有150個(gè)單元,另一個(gè)有100個(gè)單元。我們還增加了正則化alpha超參數(shù)的值。最后,我們打印三個(gè)交叉驗(yàn)證組合的預(yù)測準(zhǔn)確率。Inpipelinepipeline=('ss',('mlp',izes=[150,100],print('準(zhǔn)確率:%s'%cross_val_score(pipeline,X,y,n_jobs=-準(zhǔn)確率:[ 0.87646077本章我們介紹了人工神經(jīng)網(wǎng)絡(luò),一種通過人工神經(jīng)元的組合來表述復(fù)雜函數(shù)的強(qiáng)大的分類和回歸模型。完全連接后面一層。帶一個(gè)隱藏層和若干隱藏單元的MLP是一種通用函數(shù)近似器。它可以表示任何連續(xù)函數(shù),盡管它未必能夠自動的學(xué)習(xí)到適當(dāng)?shù)臋?quán)重。我們還介紹了網(wǎng)絡(luò)的隱藏層如何表示不可見的變量,以及如何用反向傳播算法學(xué)習(xí)權(quán)重。最后,我們用scitean的多次感知這是本書的最后一章。我們介紹許多模型,學(xué)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論