10從感知器到人工神經網絡_第1頁
10從感知器到人工神經網絡_第2頁
10從感知器到人工神經網絡_第3頁
10從感知器到人工神經網絡_第4頁
10從感知器到人工神經網絡_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

另外,在Linux和MacOS系統(tǒng)里,復制.py文件的權限記得改成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類實例化。用_dn設置神經網絡架構中隱藏層的層數。我們將隱藏層的層數設置為兩層。liyPctnaier類自動創(chuàng)建兩個輸入單元和一個輸出單元。在多元分類問題中分類器會為每一個可能的類型創(chuàng)建一個輸出。選擇神經網絡架構是很復雜的事情。確定隱藏單元和隱藏層的數量有一些首要原則,但是都沒有必然的依據。隱藏單元的數量由樣本數量,訓練數據的噪聲,要被近似的函數復雜性,隱藏單元的激勵函數,學習算法和使用的正則化方法決定。實際上,架構的效果只能通過交叉檢驗得出。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('層數:%s,輸出單元數量:%s(clf.n_layers_,clf.n_outputs_))predictions=clf.predict(X_test)print('準確率:%s'%clf.score(X_test,fori,pinprint('真實值:%s,預測值:%s(y_test[i],在上一章我們介紹過用支持向量機識別MNIST數據集里面的手寫數字。下面我們用人工神經網絡來識別:Infromfromsklearn.datasetsimportfromsklearn.cross_validationimporttrain_test_split,fromsklearn.pipelineimportfromsklearn.preprocessingimportfromsklearn.neural_network.multilayer_perceptronimportMultilayerPercepInififname=='main':digits=load_digits()X=digits.datay=digits.target用llarrpolsir訓練模型前,我們用ple絡包括一個輸入層和一個輸出層,兩個隱藏層,其中一個有150個單元,另一個有100個單元。我們還增加了正則化alpha超參數的值。最后,我們打印三個交叉驗證組合的預測準確率。Inpipelinepipeline=('ss',('mlp',izes=[150,100],print('準確率:%s'%cross_val_score(pipeline,X,y,n_jobs=-準確率:[ 0.87646077本章我們介紹了人工神經網絡,一種通過人工神經元的組合來表述復雜函數的強大的分類和回歸模型。完全連接后面一層。帶一個隱藏層和若干隱藏單元的MLP是一種通用函數近似器。它可以表示任何連續(xù)函數,盡管它未必能夠自動的學習到適當的權重。我們還介紹了網絡的隱藏層如何表示不可見的變量,以及如何用反向傳播算法學習權重。最后,我們用scitean的多次感知這是本書的最后一章。我們介紹許多模型,學

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論