日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反向传播算法学习笔记

發布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反向传播算法学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

反向傳播算法(Back propagation)

目的及思想

我們現在有一堆輸入,我們希望能有一個網絡,使得通過這個網絡的構成的映射關系滿足我們的期待。也就是說,我們在解決這個問題之前先假設,這種映射可以用網絡的模型來比較好的描述。為什么是網絡而不是什么別的形式呢?不懂了。。

這個網絡到底是個怎樣的形式呢?如下圖所示,\(i1,i2\)是輸入,\(o1,o2\)是輸出,其中\(w1...w8, b1, b2\)是這個網絡中的參數。對于一個結點來說,它的所有輸出都等于它的每個輸入,對于對應\(w\)的加權求和帶入激活函數的結果。

而現在\(w1...w8, b1, b2\)這些參數都是未知的,我們希望能通過一些方法逼近這些參數的真實結果。

我們將\(w1...w8, b1, b2\)這些參數,考慮成一個高維空間中的點,與三維還有二維的情況類似的,我們貪心的朝著周圍都走一小步,找到那個能獲得相對最優解的方向,并接受這次移動,這是經典的梯度下降的思想。于是,我們引入了損失函數,使用它來描述這個點的優秀程度。\(w1...w8, b1, b2\)是這個函數的輸入,通過調整這些輸入,我們希望能獲得一個使得損失函數獲得最值的位置,然而實際上,我們獲得的顯然是一個極值,并不一定是最值,除非能證明這個損失函數關于這些參數是凸的。但是,作為一個比較優秀的解,這樣做還是有價值的。

后半部分的思想過程順理成章,感覺整套方法最有價值和啟發意義的就是這個網絡模型。

具體算法

  • 設定輸入量\(i_1,i_2...i_n\),以及\(w_1...w_{n*n*2}, b_1, b_2\),如果可能盡量設定在離真實解較近的位置,最好在一個坑里?
  • 激活函數選取經典的sigmoid函數 \(f(x) = \frac{1}{1+e^{-x}}\)
  • 損失函數取 \(L(w_1...w_{n*n*2}, b_1, b_2) = \frac{1}{2} \sum_{i=1}^n (target_j - o_j)^2\), 我們定義\(i_j\)對應的目標輸出為\(target_j\)
  • 對于當前網絡帶入\(i_1,i_2...i_n\),求出對應的\(o_1,o_2,...,o_n\). 這個過程顯然就是在一張dag上按照拓撲序遞推更它的后繼節點即可,每到一個點計算它的激活函數的輸出,然后更新它的后繼節點
  • 更新完之后,我們就獲得了\(o_1,o_2,...,o_n\). 現在需要求解 L 關于這每個參數的在當前輸入情況下的偏導。容易利用鏈式法則解決(懶得寫了)這里有超詳細推導
    一文弄懂神經網絡中的反向傳播法——BackPropagation
  • 返回操作 4,直到獲得令人滿意的精度
  • 代碼

    c++寫了個實現。太丑了不發了。。最麻煩的部分就是鏈式求導算梯度的幾個式子推導,有了式子之后還是挺好寫的。非常有意思的是,一開始的寫法,沒有加入參數 b1,b2,因此迭代 500000 次左右才能使L達到 1e-22 的精度,但是當我們,補上 b1 和 b2 時,只用迭代 200000 次即可達到,一個式子形式的設計或者說網絡結構的設計,對于算法的效果影響還是很巨大的。

    轉載于:https://www.cnblogs.com/RRRR-wys/p/10873130.html

    總結

    以上是生活随笔為你收集整理的反向传播算法学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。