神經網路(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兩個引數,事實上,網路的每條連線線上都有乙個權重引數,如何有效的修...