在網上看到很多關於機器學習中正向傳播與反向傳播的介紹,基本上都是基於單樣本來進行概括性的講解和公式的介紹,對於對數學不是很好的我在多樣本的情況下容易混亂,因此手寫了關於正向和反向傳播的計算,在正向傳播中比較容易理解,反向傳播中要求誤差和梯度這是重點要搞明白的。
神經網絡模型
首先介紹一下模型,模型是一個三層的神經網絡模型,分別是輸入層(x),隱藏層()和輸出層()。在這個模型中也沒有添加偏置b和激活函數,我覺得把下面內容理解了,其他添加內容都是比較容易理解的。模型結構如下:
正向傳播
來看一下我們的輸入數據(),是一個4行m列的矩陣,4表示4個特徵,m表示m個數據集。
這邊是第一層的權重參數三行四列,三行四列是根據()的神經元個數和()的特徵個數組成的矩陣,如下:
接下來求解,是一個三行m列的矩陣:
第二層的權重參數一行三列,一行四列是根據()的神經元個數和()的神經元個數組成的矩陣,如下:
最後求的也就是最後的預測值,
到這邊已經完成了神經網絡的正向傳播過程。接下來是反向傳播。
反向傳播
在上面中已經求的最後神經元的值也就是預測值,接下來就是通過預測值和實際值求的最後一層的誤差,如下:
接下來求解第二層的更新權重參數梯度,應用的公式如下:
上面的結果得到一個一行三列的值,分別是第二層權重的梯度值。
還需要求解層的誤差,反向傳播計算中,因爲第一層是輸入變量,不存在誤差。只計算到層對應的誤差,對應的公式如下:
最終求的第一層更新權重參數的梯度:經過這一輪後,一共求的和的更新梯度值,然後更新模型,即
整個流程計算如下:
在上述多樣本正向傳播和反向傳播中,如果有地方存在錯誤麻煩提出來我改正,謝謝。