機器學習之神經網路NN

2021-09-24 10:00:19 字數 1926 閱讀 4828

神經網路(neural network)以人腦中的神經網路為啟發而產生的,最著名對的演算法是backpropagation(bp)演算法。可用來解決分類問題,也可用來解決回歸問題(詳情見前言)

多層向前神經網路中使用了bp演算法

多層向前神經網路的組成,每一層由單元組成(圖中小圈圈)

輸入層:由訓練集的例項特徵向量傳入

隱藏層:層數為一至任意多個,輸入和輸出只有一層

輸出層:輸出結果

注:基本思想:自己預設一定範圍內的權值,偏差值西塔等數值,通過訓練集例項資料的輸入,計算出各個神經節點的輸出值(包括隱藏層和輸出層)。然後反向進行計算:首先計算出輸出層的errj(錯誤偏差率),接著是隱藏層的errj(兩者計算公式不同)、△wij(神經節點之間的權重的更新值)以及偏向更新值△θ。這樣就得到了經過反向過程之後的權值、輸出、偏向等,輸入測試例項就可以**出結果。

演算法

輸入:d:資料集,l:學習率(learning rate),乙個多層向前神經網路(自己定義權值、偏向的向前神經網路)

輸出:乙個訓練好的神經網路(a trained neural network)

初始化權重(weights)和偏向(bias):隨機在-1到1之間,或者-0.5到0.5之間,每個單元有乙個偏向

步驟:將某一訓練例項的特徵值作為inputs(n個特徵值則input layer有n個單元節點)單元節點的輸入

在隱藏層和輸出層計算每個節點的輸出

ij:j節點的「輸入」,oi:由i,j節點連線成的線的前驅節點的輸出(i如果是輸入層的節點那麼oi就是該節點的輸入值),西塔j為j節點的偏向(每個節點有乙個初始的bias)

經過非線性轉換f得到outputs:

反向計算:

3.1 計算輸出層的errj(j節點的錯誤值),oj是j節點的輸出值,tj是j節點的真實值

3.2 計算隱藏層的errj,oj是j節點的輸出值,errk是節點j和節點k連線線上的後繼(k為後)節點的錯誤值

3.3 權重更新:原始權重加上更新差值,權重差值=學習率l·j節點的錯誤值errj·i節點的輸出oi(學習率l應該是給定的0-1之間的乙個數)

3.4 最後是偏向更新:新偏向值=原始偏向值+偏向更新差值,偏向更新差值=學習率l·j節點的錯誤值

至此乙個訓練樣本訓練結束

將訓練樣本中其他樣本重複上述步驟

正向計算:

注:initial input裡面的資料

反向計算:

機器學習之神經網路

機器學習是一門致力於研究如何通過計算的手段,利用經驗來改善系統自身的效能。經驗通常以資料的形式存在,因此機器學習所研究的主要內容是關於在計算機上從資料中產生 模型 的演算法,即 學習演算法 有了學習演算法,將經驗資料提供給它,它就能基於這些資料產生模型 當面對新情況時,模型會給我們提供相應的判斷。一...

python機器學習之神經網路 三

來自 前面兩篇文章都是參考書本神經網路的原理,一步步寫的 這篇博文裡主要學習了如何使用neurolab庫中的函式來實現神經網路的演算法。首先介紹一下neurolab庫的配置 neurolab需要採用python安裝第三方軟體包的方式進行安裝,這裡介紹一種安裝方式 1 進入cmd視窗 2 進入解壓檔案...

機器學習之 神經網路演算法原理

神經網路 好了,前面花了不少篇幅來介紹啟用函式中那個暗藏玄機的e,下面可以正式介紹神經元的網路形式了。下圖是幾種比較常見的網路形式 前面講過,使用梯度下降的方法,要不斷的修改k b兩個引數值,使最終的誤差達到最小。神經網路可不只k b兩個引數,事實上,網路的每條連線線上都有乙個權重引數,如何有效的修...