機器學習中多樣本情況下的正向傳播與反向傳播推導(手寫)

在網上看到很多關於機器學習中正向傳播與反向傳播的介紹,基本上都是基於單樣本來進行概括性的講解和公式的介紹,對於對數學不是很好的我在多樣本的情況下容易混亂,因此手寫了關於正向和反向傳播的計算,在正向傳播中比較容易理解,反向傳播中要求誤差和梯度這是重點要搞明白的。

神經網絡模型

首先介紹一下模型,模型是一個三層的神經網絡模型,分別是輸入層(x),隱藏層(a(1)a^{(1)})和輸出層(a(2)a^{(2)})。在這個模型中也沒有添加偏置b和激活函數,我覺得把下面內容理解了,其他添加內容都是比較容易理解的。模型結構如下:
在這裏插入圖片描述

正向傳播

來看一下我們的輸入數據(x(1)x^{(1)}),是一個4行m列的矩陣,4表示4個特徵,m表示m個數據集。
在這裏插入圖片描述
這邊是第一層的權重參數θ(1)\theta ^{(1)}三行四列,三行四列是根據(a(1)a^{(1)})的神經元個數和(x(1)x^{(1)})的特徵個數組成的矩陣,如下:
在這裏插入圖片描述
接下來求解A(1)A^{(1)},是一個三行m列的矩陣:
在這裏插入圖片描述第二層的權重參數一行三列,一行四列是根據(a(2)a^{(2)})的神經元個數和(a(1)a^{(1)})的神經元個數組成的矩陣,如下:
在這裏插入圖片描述
最後求的A(2)A^{(2)}也就是最後的預測值,
在這裏插入圖片描述到這邊已經完成了神經網絡的正向傳播過程。接下來是反向傳播。

反向傳播

在上面中已經求的最後神經元的值也就是預測值,接下來就是通過預測值和實際值求的最後一層的誤差δ(2)\delta ^{(2)},如下:
在這裏插入圖片描述
接下來求解第二層的Δθ(2)\Delta \theta ^{(2)}更新權重參數梯度,應用的公式如下:
Δθ(2)=1mδ(2)(A(1))T\Delta \theta ^{(2)}=\frac{1}{m}\delta ^{(2)}(A^{(1)})^{T}
在這裏插入圖片描述上面的結果得到一個一行三列的值,分別是第二層權重的梯度值Δθ(2)\Delta \theta ^{(2)}
還需要求解A(1)A^{(1)}層的誤差δ(1)\delta ^{(1)},反向傳播計算中,因爲第一層是輸入變量x(1)x^{(1)},不存在誤差。只計算到A(1)A^{(1)}層對應的誤差,對應的公式如下:
δ(1)=(θ2)Tδ(2)a(1)(1a(1))\delta ^{(1)}=(\theta ^{2})^{T}\delta ^{(2)}*a^{(1)}(1-a^{(1)})

在這裏插入圖片描述最終求的第一層更新權重參數的梯度Δθ(1)\Delta \theta ^{(1)}在這裏插入圖片描述經過這一輪後,一共求的Δθ(1)\Delta \theta ^{(1)}Δθ(2)\Delta \theta ^{(2)}的更新梯度值,然後更新模型,即
θ(1):=θ(1)αΔθ(1)\theta ^{(1)}:=\theta ^{(1)}-\alpha\Delta \theta ^{(1)}
θ(2):=θ(2)αΔθ(2)\theta ^{(2)}:=\theta ^{(2)}-\alpha\Delta \theta ^{(2)}

整個流程計算如下:
在這裏插入圖片描述在這裏插入圖片描述在上述多樣本正向傳播和反向傳播中,如果有地方存在錯誤麻煩提出來我改正,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章