機器學習——BP神經網路演算法
1、背景
以人腦中的神經網路為啟發,歷史上出現過很多不同的版本,最著名的演算法是1980年的backpropagation
2、多層向前神經網路(Multilayer Feed-Forward Neural Network)
backpropagation被使用在多層向前神經網路上,多層向前神經網路由一下幾部分組成:
輸入層(input layer)、隱藏層(hidden layers)、輸出層(output layer)
(1)每層由單元(unit)組成,每個單元可以被稱作神經結點,根據生物學來源定義。
(2)輸入層(input layer)是由訓練集的例項特徵向量傳入,經過連線節點的權重(weight)傳入下一層,
一層中的加權的求和,然後根據非線性方程轉化輸出一層的輸出是下一層的輸入。
(3)隱藏層的個數可以是任意的,輸入層和輸出層都有一層。
(4)上圖稱為2層的神經網路(輸入層不算)。
(5)作為多層向前神經網路,理論上,如果有足夠多的隱藏層和足夠大的訓練集,可以模擬任何方程。
3、設計神經網路結構
(1)使用神經網路訓練資料之前,必須確定神經網路的層數,以及每層單元的個數。
(2)特徵向量在被傳入輸入層時通常先被標準化(normalize)到0-1之間(為了加速學習過程)。
(3)離散型變數可以被編碼成每一個輸入單元對應一個特徵值可能賦的值。(神經網路既支援離散變數也支援連續變數)
比如:特徵值A可能取3個值(a0,a1,a2),可以使用3個輸入單元來代表A。
如果A=a0,那麼代表a0的取值單元為1,其他都為0.
如果A=a1,那麼代表a1的取值單元為1,其他都為0,依此類推。
(4)神經網路既可以用來做分類(classification)問題也可以解決迴歸(regression)問題,分類問題預測值是離散型變數,迴歸問題預測值是連續型變數。
對於分類問題,如果是2類,可以用1個輸出單元表示(0和1分別代表2類)。如果多於2類,每一個類別用一個輸出單元表示,
所以,輸出層的數量通常等於類別的數量。
(5)沒有明確的規則來設計最好有多少個隱藏層,根據實驗測試和誤差,以及準確度來對實驗進行改進。
4、交叉驗證方法(Cross-Validation)
設定隱藏層的層數用準確度來判斷,用科學的交叉驗證方法計算出的準確度更常用。
將一份資料分成k份,第一次用第1份做測試,剩餘的k-1份做訓練集,計算出一個準確度;第二次用第2份做測試,剩餘的k-1份做訓練集,
計算出一個準確度;以此類推,計算出k個準確度,取它們的平均值作為最終的準確度,這個演算法也稱作k-fold cross validation。
5、Backpropagation演算法
Neural Network是一種神經網路結構,Backpropagation演算法使用在這種神經網路結構上面的。
(1)通過迭代性來處理訓練集中例項。
(2)通過對比神經網路後輸入層預測值(predicted value)與真實值(target value)之間的差距
(3)反方向(從輸出層=>隱藏層=>輸入層)來以最小誤差(error)來更新每個連線的權重(weight)和偏向(bias)
6、演算法的詳細介紹
(1)輸入:D:訓練集 學習率(learing rate) 一個多層向前神經網路
(2)輸出:一個訓練好的神經網路——a trained neural network(權重全部更新好使得真實值與預測值之間的差最小化)
(3)初始化權重(weight)和偏向(bias):隨機初始化在-1到1之間或者-0.5-0.5之間,每個單元有一個偏向。
(4)對於每一個訓練例項,執行以下步驟:
a:由輸入層向前傳入(先隨機給出一些權重,輸入層乘以對應權重求和再進行非線性轉化)
輸入層乘以對應權重求和公式為:,Oi是前一層經過非線性轉化的輸出值,具體過程如下圖:
非線性轉化公式為:
b、根據誤差(error)反向傳輸
對於輸出層誤差:,其中,Oj是算出的預測值,Ti是原本真實的標籤值
對於隱藏層誤差:,Errk是前面一層的誤差(注:這裡是反向傳輸,
舉例:要求隱藏層第4個結點的誤差,由於反向傳輸Errk作為前一層是結點6的誤差)
權重更新:,l是學習率(在0-1之間,開始設定大一點,然後逐漸減小的優化方法)
偏向更新:
c、終止條件
權重的更新低於某個閾值
預測的錯誤率低於某個閾值
達到預設一定的迴圈次數
7、Backpropagation演算法舉例
總結:隨著計算機硬體的更新和計算速度的極大提高,最近四五年裡,深度學習非常火爆,
它的基本思想還是利用Backpropagation演算法,只不過是多增加了幾層隱藏層,使得實驗結果的準確率達到很高。
相關文章
- 機器學習整理(神經網路)機器學習神經網路
- 【深度學習基礎-08】神經網路演算法(Neural Network)上--BP神經網路例子計算說明深度學習神經網路演算法
- 機器學習演算法(八):基於BP神經網路的乳腺癌的分類預測機器學習演算法神經網路
- 【深度學習基礎-07】神經網路演算法(Neural Network)上--BP神經網路基礎理論深度學習神經網路演算法
- BP神經網路流程圖神經網路流程圖
- 【卷積神經網路學習】(4)機器學習卷積神經網路機器學習
- 【機器學習】搭建神經網路筆記機器學習神經網路筆記
- 機器學習:神經網路構建(上)機器學習神經網路
- 機器學習:神經網路構建(下)機器學習神經網路
- 資料探勘---BP神經網路神經網路
- 機器學習之多類別神經網路:Softmax機器學習神經網路
- 【菜鳥筆記|機器學習】神經網路筆記機器學習神經網路
- 機器學習筆記(3): 神經網路初步機器學習筆記神經網路
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- 【機器學習基礎】神經網路/深度學習基礎機器學習神經網路深度學習
- 《TensorFlow2.0》前饋神經網路和 BP 演算法神經網路演算法
- python對BP神經網路實現Python神經網路
- 機器學習導圖系列(5):機器學習模型及神經網路模型機器學習模型神經網路
- 吳恩達機器學習系列11:神經網路吳恩達機器學習神經網路
- 機器學習神經網路——Sklearn.neural_network概要機器學習神經網路
- 機器學習之訓練神經網路:最佳做法機器學習神經網路
- 神經網路進化能否改變機器學習?神經網路機器學習
- 【機器學習】之第五章——神經網路機器學習神經網路
- 吳恩達機器學習筆記 —— 9 神經網路學習吳恩達機器學習筆記神經網路
- Andrew BP 神經網路詳細推導神經網路
- 人工智慧、機器學習、深度學習、神經網路的關係人工智慧機器學習深度學習神經網路
- Python+Matlab+機器學習+深度神經網路全套學習資料!PythonMatlab機器學習神經網路
- 機器學習之多類別神經網路:一對多機器學習神經網路
- 吳恩達機器學習筆記——八、神經網路吳恩達機器學習筆記神經網路
- 如何通過 JavaScript 實現機器學習和神經學網路?JavaScript機器學習
- 機器學習之神經網路機器學習神經網路
- 機器學習和神經網路的簡要框架總結機器學習神經網路框架
- 【機器學習基礎】卷積神經網路(CNN)基礎機器學習卷積神經網路CNN
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積
- 神經網路學習參考神經網路
- 初探神經網路與深度學習 —— 感知器神經網路深度學習
- 誰可以詳細講講機器學習,深度學習,神經網路,卷積神經網路的區別以及應用場景機器學習深度學習神經網路卷積
- 構建和優化深度學習模型(神經網路機器識圖)優化深度學習模型神經網路
- 吳恩達機器學習課程 筆記5 神經網路吳恩達機器學習筆記神經網路