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