-
1 # 醫藥人譚亞娣
-
2 # 凡人糾
你說的結果應該是重新訓練模型後,對結果進行預測。
bp神經網路本質上是多層線性迴歸,訓練模型是基於統計學對引數進行設定收斂。
題中說到,為什麼每次結果。從表面上看,模型每次的訓練的引數可能有很多種,最後導致預測結果有出入。從本質上看,模型存在過擬合或者欠擬合,導致模型有些隨機性。所以,如果希望每次誤差更小,應該對模型進行最佳化,這樣就可以有所改善。
-
3 # 鼴鼠科技
我們先來看看BP神經網路(下圖為標準的三層神經網路)標準學習過程:
正向傳播 輸入樣本--->輸入層--->各隱層--->輸出層
判斷是否轉入反向傳播階段若輸入層的實際輸出(h(x))與期望的輸出(y)不符。
誤差反傳 誤差以某種形式在各層表示-----修正各層單元的權值(w或者Θ)
最終結果網路輸出的誤差減少到了可以接受的程度(或進行到預先設定的學習次數為止)
再來看看實際的演算法:
第一步,網路初始化
給各連線權值分別賦一個區間內的隨機數,設定誤差函式,給定計算精度值和最大學習次數。
第二步,隨機選取第k個輸入樣本以及對應的期望輸出。
第三步,計算隱含層各神經元的輸入和輸出。
第四步,利用網路期望輸出和實際輸出,計算誤差函式對輸出層的各神經元的偏導數。
第五步,利用隱含層到輸出層的連線權值、輸出層的和隱含層的輸出計算誤差函式對隱含層各神經元的偏導數。
第六步,利用輸出層各神經元的引數和隱含層各神經元的輸出來修正連線權值。
第七步,利用隱含層各神經元和輸入層各神經元的輸入引數修正連線權值。
第八步,計算全域性誤差。
第九步,判斷網路誤差是否滿足要求,。當誤差達到預設精度或學習次數大於設定的最大次數,則結束演算法。否則,選取下一個學習樣本及對應的期望輸出,返回到第三步,進入下一輪學習。
總結:
從上面可以看到第一步初始化引數時候為隨機數, 而第二步一般使用(隨機,Mini batch)梯度下降法隨機選取樣本,所以會導致BP神經網路跑程式每次結果都不一樣
-
4 # 演算法之路
主要是兩個原因:一是模型權重的隨機初始化;二是因為神經網路的最佳化演算法。前者的隨機性可以透過設定統一的初始化方式解決,而後者某種程度上很難避免。
神經網路訓練過程中是將資料分批次訓練的,每次訓練的批資料是隨機選取的,然後根據當前的批次進行梯度下降和反向傳播,這個過程叫做隨機批梯度下降。
通俗的說,看下面這張圖,假設你站在山頂,目的是到達山底,每次會有一群人告訴你朝哪個方向走,然後你綜合他們的意見朝一個方向走一步,然後重複這個過程直到你走到山底。因為每次給你傳達資訊的人是隨機的,因為你每步走的方向是不一樣的,所以到達山底的路線會有很多條,理論上來講是無數條。很自然,你到達的目的地自然也會不一樣啦。
那麼怎麼才能完全復現神經網路的結果呢,答案就是設定隨機種子,使得每次的隨機過程保持一致,這樣你就能走同一條路線到達山底啦。
-
5 # 解惑者Z
因為神經網路計算裡面用到了快速近似的矩陣乘法演算法,這些演算法中,有些是非確定性(nondeterministic)的,所以每次結果都有可控誤差的不同。
回覆列表
我本行是生物學,誤打誤撞申請了“科技”類別,只能挑靠邊的問題回答了。說說某某神經網路為何每次執行結果不一樣,還請大家類比一下人類是否可以兩次踏進同一條河流或者一棵樹可否長出兩片一模一樣的樹葉。