神經網絡前向傳播與反向傳播


神經網絡

神經網絡可以理解為一個輸入x到輸出y的映射函數,即f(x)=y,其中這個映射f就是我們所要訓練的網絡參數w,我們只要訓練出來了參數w,那么對於任何輸入x,我們就能得到一個與之對應的輸出y。只要f不同,那么同一個x就會產生不同的y,我們當然是想要獲得最符合真實數據的y,那么我們就要訓練出一個最符合真實數據的映射f。訓練最符合真實數據f的過程就是神經網絡的訓練過程,神經網絡的訓練可以分為兩個步驟:一個是前向傳播,另外一個是反向傳播

神經網絡的前向傳播

神經網絡前向傳播從輸入層到輸出層:前向傳播就是從輸入層開始(Layer1),經過一層層的Layer,不斷計算每一層的神經網路得到的結果\(net_{a}\)及通過激活函數(一般使用Relu函數)的本層輸出結果 \(out_{z}\),最后得到輸出\(\bar{y}\)的過程。前向傳播公式:
\(\\a^{(1)}=x\\z^{(2)}=Relu(a^{(1)})\\a^{(2)}=g(z^{(2)})\\z^{(3)}=Relu(a^{(2)})\\....\)
這里公式只寫了包括輸入層的前三個Layer的結果,依次最后由Layer4輸出的結果為\(\bar{y}=a^{(4)}=g(z^{4})\)

神經網絡的反向傳播
前向傳播計算出了預測值\(\bar{y}\),就可以根據\(\bar{y}\)和真實值y的差別來計算損失\(L(\bar{y},y)\),反向傳播就是根據損失函數\(L(\bar{y},y)\)來反方向地計算每一層的a、z、w、b的偏導數(梯度),從最后一層逐層向前去改變每一層的權重,也就是更新參數,其核心是損失L對每一層的每一個參數求梯度的鏈式求導法則。

計算反向傳播,我們首先需要通過前向傳播的輸出\(\bar{y}\)和真實樣本y(target)計算此時神經網絡的損失,這個神經網絡有兩個輸出,所以我們的損失應該是兩個輸出神經元損失的和, 神經網絡的總損失\(E\leftarrow L(\bar{y},y)\)
\(E_{total}=\sum{\frac{1}{2}(target-output)^{2}}\\E_{total}=E_{o1}+E_{o2}\)
對參數w5求偏導可以看出w5對整體誤差產生的影響,總體誤差對w5求偏導的鏈式規則如下所示:
\(E_{o1}=\sum{\frac{1}{2}(target_{o1}-output_{o1})^{2}}\\E_{total}=E_{o1}+E_{o2}\)
w5求偏導進行整合,求出偏導數之后,下面的任務就是進行梯度下降從而更新參數:
\(\\w_{5}^{+}=w_{5}-\eta*\frac{\partial E_{total}}{\partial w_{5}}\)

梯度下降
神經網絡就是通過不斷的前向傳播和反向傳播不斷調整神經網絡的權重,最終到達預設的迭代次數或者對樣本的學習已經到了比較好的程度后,就停止迭代,那么一個神經網絡就訓練好了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM