摘要:起步神經(jīng)網(wǎng)絡(luò)算法是機器學習中非常非常重要的算法。于是計算科學家們開始考慮用調(diào)整權(quán)值的方法來讓機器學習。年,和等人提出了反向傳播,算法,這是最著名的一個神經(jīng)網(wǎng)絡(luò)算法。算法算法是多層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練一個核心的算法。
起步
神經(jīng)網(wǎng)絡(luò)算法( Neural Network )是機器學習中非常非常重要的算法。這是整個深度學習的核心算法,深度學習就是根據(jù)神經(jīng)網(wǎng)絡(luò)算法進行的一個延伸。理解這個算法的是怎么工作也能為后續(xù)的學習打下一個很好的基礎(chǔ)。
背景神經(jīng)網(wǎng)絡(luò)是受神經(jīng)元啟發(fā)的,對于神經(jīng)元的研究由來已久,1904年生物學家就已經(jīng)知曉了神經(jīng)元的組成結(jié)構(gòu)。
1943年,心理學家McCulloch和數(shù)學家Pitts參考了生物神經(jīng)元的結(jié)構(gòu),發(fā)表了抽象的神經(jīng)元模型MP。
1949年心理學家Hebb提出了Hebb學習率,認為人腦神經(jīng)細胞的突觸(也就是連接)上的強度上可以變化的。于是計算科學家們開始考慮用調(diào)整權(quán)值的方法來讓機器學習。這為后面的學習算法奠定了基礎(chǔ)。
1958年,計算科學家Rosenblatt提出了由兩層神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò)。他給它起了一個名字--感知器( Perceptron )。
1986年,Rumelhar和Hinton等人提出了反向傳播( Backpropagation ,BP)算法,這是最著名的一個神經(jīng)網(wǎng)絡(luò)算法。
神經(jīng)網(wǎng)絡(luò)的構(gòu)成多層神經(jīng)網(wǎng)絡(luò)由三部分組成:輸入層( input layer ), 隱藏層 ( hidden layers ), 輸出層 ( output layers )。
每一層都是有單元( units )組成,其中,輸入層是由訓(xùn)練集中實例特征向量傳入,根據(jù)連接點之間的權(quán)重傳遞到下一層,這樣一層一層向前傳遞。
輸入層和輸出層都只有一層,隱藏層的個數(shù)可以是任意的。神經(jīng)網(wǎng)絡(luò)的層數(shù)計算中不包括輸入層,比方說一個神經(jīng)網(wǎng)絡(luò)中有2個隱藏層,我們就說這是一個3層的神經(jīng)網(wǎng)絡(luò)。
作為多層向前神經(jīng)網(wǎng)絡(luò),理論上,如果有足夠多的隱藏層和訓(xùn)練集,是可以模擬出任何方程的。
神經(jīng)網(wǎng)絡(luò)可以用來解決分類( classification )問題,也可以解決回歸( regression )問題。
從單層到多層的神經(jīng)網(wǎng)絡(luò)由兩層神經(jīng)網(wǎng)絡(luò)構(gòu)成了單層神經(jīng)網(wǎng)絡(luò),它還有個別名———— 感知器 。
如圖中,有3個輸入,連接線的權(quán)值分別是 w1, w2, w3。將輸入與權(quán)值進行乘積然后求和,作為 z 單元的輸入,如果 z 單元是函數(shù) g ,那么就有 z = g(a1 * w1 + a2 * w2 + a3 * w3) 。
單層神經(jīng)網(wǎng)絡(luò)的擴展,也是一樣的計算方式:
在多層神經(jīng)網(wǎng)絡(luò)中,只不過是將輸出作為下一層的輸入,一樣是乘以權(quán)重然后求和:
設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)使用神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練之前,必須確定神經(jīng)網(wǎng)絡(luò)的層數(shù),以及每一層中單元的個數(shù)。整個訓(xùn)練過程就是調(diào)整連接點之間的權(quán)重值。
特征向量在被傳入輸入層前,通常要先標準化為 0 到 1 之間的數(shù),這是為了加速學習過程。
對于分類問題,如果是兩類,可以用一個輸出單元(0 和 1 表示分類結(jié)果)進行表示。如果是多分類問題,則每一個類別用一個輸出單元表示。分類問題中,輸出層單元個數(shù)通常等于類別的數(shù)量。
目前沒有明確的規(guī)則來設(shè)計最好有多少個隱藏層,通常是根據(jù)實驗測試和誤差,以及準確度來進行改進。
交叉驗證方法如何來預(yù)測準確度呢?在SVM的應(yīng)用篇中,有個方法就是將數(shù)據(jù)集分為兩類,訓(xùn)練集和測試集,利用測試集的數(shù)據(jù)將模型的預(yù)測結(jié)果進行對比,得出準確度。這里介紹另一個常用但更科學的方法————交叉驗證方法( Cross-Validation )。
這個方法不局限于將數(shù)據(jù)集分成兩份,它可以分成 k 份。用第一份作為訓(xùn)練集,其余作為測試集,得出這一部分的準確度 ( evaluation )。再用第二份作為訓(xùn)練集,其余作為測試集,得出這第二部分的準確度。以此類推,最后取各部分的準確度的平均值。從而可以得到設(shè)計多少層最佳。
BP 算法BP 算法 ( BackPropagation )是多層神經(jīng)網(wǎng)絡(luò)的訓(xùn)練一個核心的算法。目的是更新每個連接點的權(quán)重,從而減小預(yù)測值( predicted value )與真實值 ( target value )之間的差距。輸入一條訓(xùn)練數(shù)據(jù)就會更新一次權(quán)重,反方向(從輸出層=>隱藏層=>輸入層)來以最小化誤差(error)來更新權(quán)重(weitht)。
在訓(xùn)練神經(jīng)網(wǎng)絡(luò)之前,需要初始化權(quán)重( weights )和偏向( bias ),初始化是隨機值, -1 到 1 之間,每個單元有一個偏向。
算法詳細介紹數(shù)據(jù)集用 D 表示,學習率用 l 表示。對于每一個訓(xùn)練實例 X,都是一樣的步驟。
利用上一層的輸入,得到本層的輸入:
$$ I_j = sum_i w_{i,j}O_i + heta{j} $$
得到輸入值后,神經(jīng)元要怎么做呢?我們先將單個神經(jīng)元進行展開如圖:
得到值后需要進行一個非線性轉(zhuǎn)化,這個轉(zhuǎn)化在神經(jīng)網(wǎng)絡(luò)中稱為激活函數(shù)( Activation function ),這個激活函數(shù)是一個 S 函數(shù),圖中以 f 表示,它的函數(shù)為:
$$ O_j = frac1{1+e^{-I_j}} $$
更新權(quán)重通過上面的傳遞規(guī)則,可以得到最終的輸出,而訓(xùn)練實例中包含實際的值,因此可以得到訓(xùn)練和實際之間的誤差。根據(jù)誤差(error)反向傳送。
對于輸出層的誤差為:
$$ Err_j = O_j(1 - O_j)(T_j - O_j) $$
其中 Oj 表示預(yù)測值, Tj 表示真實值。
對隱藏層的誤差:
$$ Err_j = O_j(1 - O_j)sum_k Err_kw_{j,k} $$
更新權(quán)重:
$$ egin{align*} Delta w_{i,j} &= (l)Err_jO_i w_{i,j} &= w_{i,j} + Delta w_{i,j} end{align*} $$
這里的 l 是學習率。偏向更新:
$$ egin{align*} Delta heta{j} &= (l)Err_j heta{j} &= heta{j} + Delta heta{j} end{align*} $$
訓(xùn)練的終止條件怎樣才算是一個訓(xùn)練好了的神經(jīng)網(wǎng)絡(luò)呢?滿足下面一個情況即可:
權(quán)重的更新低于某個閾值,這個閾值是可以人工指定的;
預(yù)測的錯誤率低于某個閾值;
達到預(yù)設(shè)一定的循環(huán)次數(shù)。
BP 算法舉例假設(shè)有一個兩層的神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu),權(quán)重和數(shù)據(jù)集如下:
計算誤差和更新權(quán)重:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41136.html
摘要:近幾年以卷積神經(jīng)網(wǎng)絡(luò)有什么問題為主題做了多場報道,提出了他的計劃。最初提出就成為了人工智能火熱的研究方向。展現(xiàn)了和玻爾茲曼分布間驚人的聯(lián)系其在論文中多次稱,其背后的內(nèi)涵引人遐想。 Hinton 以深度學習之父 和 神經(jīng)網(wǎng)絡(luò)先驅(qū) 聞名于世,其對深度學習及神經(jīng)網(wǎng)絡(luò)的諸多核心算法和結(jié)構(gòu)(包括深度學習這個名稱本身,反向傳播算法,受限玻爾茲曼機,深度置信網(wǎng)絡(luò),對比散度算法,ReLU激活單元,Dropo...
摘要:最近一直在看,各類博客論文看得不少但是說實話,這樣做有些疏于實現(xiàn),一來呢自己的電腦也不是很好,二來呢我目前也沒能力自己去寫一個只是跟著的寫了些已有框架的代碼這部分的代碼見后來發(fā)現(xiàn)了一個的的,發(fā)現(xiàn)其代碼很簡單,感覺比較適合用來學習算法再一個就 最近一直在看Deep Learning,各類博客、論文看得不少但是說實話,這樣做有些疏于實現(xiàn),一來呢自己的電腦也不是很好,二來呢我目前也沒能力自己去寫一...
摘要:本文討論了多個評估指標,并從多個方面對評估指標進行了實驗評估,包括距離分類器。鑒于定性評估的內(nèi)在缺陷,恰當?shù)亩吭u估指標對于的發(fā)展和更好模型的設(shè)計至關(guān)重要。鑒于評估非常有難度,評估評估指標則更加困難。 作者:Qiantong Xu、Gao Huang、Yang Yuan、Chuan Guo、Yu Sun、Felix Wu、Kilian Weinberger生成對抗網(wǎng)絡(luò)的評估目前仍以定性評估和...
摘要:如何看待人工智能的本質(zhì)人工智能的飛速發(fā)展又經(jīng)歷了哪些歷程本文就從技術(shù)角度為大家介紹人工智能領(lǐng)域經(jīng)常提到的幾大概念與發(fā)展簡史。一人工智能相關(guān)概念人工智能就是讓機器像人一樣的智能會思考是機器學習深度學習在實踐中的應(yīng)用。 作為近幾年的一大熱詞,人工智能一直是科技圈不可忽視的一大風口。隨著智能硬件的迭代,智能家居產(chǎn)品逐步走進千家萬戶,語音識別、圖像識別等AI相關(guān)技術(shù)也經(jīng)歷了階梯式發(fā)展。如何看待...
閱讀 3285·2023-04-25 20:35
閱讀 3632·2019-08-30 15:54
閱讀 2017·2019-08-30 15:43
閱讀 2200·2019-08-29 15:14
閱讀 1906·2019-08-29 11:17
閱讀 3400·2019-08-26 13:36
閱讀 722·2019-08-26 10:15
閱讀 2861·2019-08-23 15:41