反向传播算法学习笔记
反向傳播算法(Back propagation)
目的及思想
我們現在有一堆輸入,我們希望能有一個網絡,使得通過這個網絡的構成的映射關系滿足我們的期待。也就是說,我們在解決這個問題之前先假設,這種映射可以用網絡的模型來比較好的描述。為什么是網絡而不是什么別的形式呢?不懂了。。
這個網絡到底是個怎樣的形式呢?如下圖所示,\(i1,i2\)是輸入,\(o1,o2\)是輸出,其中\(w1...w8, b1, b2\)是這個網絡中的參數。對于一個結點來說,它的所有輸出都等于它的每個輸入,對于對應\(w\)的加權求和帶入激活函數的結果。
而現在\(w1...w8, b1, b2\)這些參數都是未知的,我們希望能通過一些方法逼近這些參數的真實結果。
我們將\(w1...w8, b1, b2\)這些參數,考慮成一個高維空間中的點,與三維還有二維的情況類似的,我們貪心的朝著周圍都走一小步,找到那個能獲得相對最優解的方向,并接受這次移動,這是經典的梯度下降的思想。于是,我們引入了損失函數,使用它來描述這個點的優秀程度。\(w1...w8, b1, b2\)是這個函數的輸入,通過調整這些輸入,我們希望能獲得一個使得損失函數獲得最值的位置,然而實際上,我們獲得的顯然是一個極值,并不一定是最值,除非能證明這個損失函數關于這些參數是凸的。但是,作為一個比較優秀的解,這樣做還是有價值的。
后半部分的思想過程順理成章,感覺整套方法最有價值和啟發意義的就是這個網絡模型。
具體算法
一文弄懂神經網絡中的反向傳播法——BackPropagation
代碼
c++寫了個實現。太丑了不發了。。最麻煩的部分就是鏈式求導算梯度的幾個式子推導,有了式子之后還是挺好寫的。非常有意思的是,一開始的寫法,沒有加入參數 b1,b2,因此迭代 500000 次左右才能使L達到 1e-22 的精度,但是當我們,補上 b1 和 b2 時,只用迭代 200000 次即可達到,一個式子形式的設計或者說網絡結構的設計,對于算法的效果影響還是很巨大的。
轉載于:https://www.cnblogs.com/RRRR-wys/p/10873130.html
總結
以上是生活随笔為你收集整理的反向传播算法学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 林北是什么意思什么梗 林北的解释
- 下一篇: SDOI2018 物理实验