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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习 | 误差反向传播法

發布時間:2023/12/16 pytorch 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习 | 误差反向传播法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 計算圖

  • 計算圖將計算過程用圖形表示出來。這里說的圖形是數據結構圖,通過多個節點和邊表示(連接節點的直線稱為“邊”)。
  • 正向傳播(forward propagation):從左向右進行計算,傳遞的是計算結果。
  • 反向傳播(backward propagation):是從右向左進行計算,傳遞的是局部導數。
  • 局部計算:計算圖的特征是可以通過傳遞“局部計算”獲得最終結果。“局部”這個詞的意思是“與自己相關的某個小范圍”。局部計算是指,無論全局發生了什么,都能只根據與自己相關的信息輸出接下來的結果。
  • 計算圖的優點:
    ①可以進行局部計算。
    ②計算圖可以將中間的計算結果全部保存起來。
    ③可以通過反向傳播高效計算導數。
    綜上,計算圖的優點是,可以通過正向傳播和反向傳播高效地計算各個變量的導數值。
  • 2. 鏈式法則

  • 鏈式法則是關于復合函數的導數的性質,定義如下:
    如果某個函數由復合函數表示,則該復合函數的導數可以用構成復合函數的各個函數的導數的乘積表示。
  • 鏈式法則和計算圖

    最左邊是反向傳播的結果。
  • 3. 反向傳播

    3.1 加法節點的反向傳播


    加法節點的反向傳播只乘以1,所以輸入的值會原封不動地流向下一個節點。

    3.2 乘法節點的反向傳播

    考慮z=xy:

    乘法的反向傳播會將上游的值乘以正向傳播時的輸入信號的“翻轉值”后傳遞給下游。翻轉值表示一種翻轉關系,如圖所示,正向傳播時信號是x的話,反向傳播時則是y;正向傳播時信號是y的話,反向傳播時則是x。

    加法的反向傳播只是將上游的值傳給下游,
    并不需要正向傳播的輸入信號。但是,乘法的反向傳播需要正向傳播時的輸入信號值。因此,實現乘法節點的反向傳播時,要保存正向傳播的輸入信號。

    4. 簡單層的實現

    我們把要實現的計算圖的乘法節點稱為“乘法層”(MulLayer),加法節點稱為“加法層”(AddLayer)。

    5. 激活函數層的實現

    5.1 ReLU層

    激活函數ReLU(Rectified Linear Unit)由下式表示:

    求出y關于x的導數:

    如果正向傳播時的輸入x大于0,則反向傳播會將上游的值原封不動地傳給下游。反過來,如果正向傳播時的x小于等于0,則反向
    傳播中傳給下游的信號將停在此處。

    ReLU層的作用就像電路中的開關一樣。正向傳播時,有電流通過的話,就將開關設為 ON;沒有電流通過的話,就將開關設為 OFF。
    反向傳播時,開關為ON的話,電流會直接通過;開關為OFF的話,則不會有電流通過。

    5.2 Sigmoid層

    sigmoid函數式:


    除了“×”和“+”節點外,還出現了新的“exp”和“/”節點。“exp”節點會進行y = exp(x)的計算,“/”節點會進行y=1/x的計算。

    反向傳播的流程:



    反向傳播的輸出為 ,這個值會傳播給下游的節點。

    因此,Sigmoid層的反向傳播,只根據正向傳播的輸出就能計算出來:

    6. Affine/Softmax層的實現

    6.1 Affine層

  • 神經網絡的正向傳播中,為了計算加權信號的總和,使用了矩陣的乘積運算。矩陣的乘積運算的要點是使對應維度的元素個數一致。
  • 仿射變換:神經網絡的正向傳播中進行的矩陣的乘積運算在幾何學領域被稱為“仿射變換”。
  • Affine層:將進行仿射變換的處理實現為“Affine層“。
    幾何中,仿射變換包括一次線性變換和一次平移,分別對應神經網絡的加權和運算與加偏置運算。


  • 6.2 批版本的Affine層

    前面介紹的Affine層的輸入X是以單個數據為對象的。現在我們考慮N個數據一起進行正向傳播的情況,也就是批版本的Affine層。

    6.3  Softmax-with-Loss 層

  • 神經網絡中進行的處理有推理(inference)和學習兩個階段。
    神經網絡的推理通常不使用 Softmax層。
    神經網絡的學習階段則需要 Softmax層。
  • 包含作為損失函數的交叉熵誤差(cross entropy error),所以稱為“Softmax-with-Loss層”。
  • Softmax-with-Loss層的計算圖:
    softmax函數記為Softmax層,交叉熵誤差記為Cross Entropy Error層。這里假設要進行3類分類,從前面的層接收3個輸入(得分)。如圖5-30所示,Softmax層將輸入(a1, a2, a3)正規化,輸出(y1, y2,y3)。Cross Entropy Error層接收Softmax的輸出(y1, y2, y3)和教師標簽(t1, t2, t3),從這些數據中輸出損失L。
  • “簡易版”的Softmax-with-Loss層的計算圖:
    Softmax層的反向傳播得到了(y1 ? t1, y2 ? t2, y3 ? t3)這樣“漂亮”的結果。由于(y1, y2, y3)是Softmax層的輸出,(t1, t2, t3)是監督數據,所以(y1 ? t1, y2 ? t2, y3 ? t3)是Softmax層的輸出和教師標簽的差分。神經網絡的反向傳播會把這個差分表示的誤差傳遞給前面的層,這是神經網絡學習中的重要性質。
  • 神經網絡學習的目的就是通過調整權重參數,使神經網絡的輸出(Softmax的輸出)接近教師標簽。
  • 7. 誤差反向傳播法的實現

    神經網絡學習的步驟:
    前提
    神經網絡中有合適的權重和偏置,調整權重和偏置以便擬合訓練數據的
    過程稱為學習。神經網絡的學習分為下面4個步驟。
    步驟1(mini-batch)
    從訓練數據中隨機選擇一部分數據。
    步驟2(計算梯度)
    計算損失函數關于各個權重參數的梯度。
    步驟3(更新參數)
    將權重參數沿梯度方向進行微小的更新。
    步驟4(重復)
    重復步驟1、步驟2、步驟3。

    計算梯度的兩種方法:一種是基于數值微分的方法,另一種是解析性地求解數學式的方法。
    數值微分雖然實現簡單,但是計算要耗費較多的時間。和需要花費較多時間的數值微分不同,誤差反向傳播法可以快速高效地計算梯度。
    數值微分的優點是實現簡單,因此,一般情況下不太容易出錯。而誤差反向傳播法的實現很復雜,容易出錯。所以,經常會比較數值微分的結果和誤差反向傳播法的結果,以確認誤差反向傳播法的實現是否正確。確認數值微分求出的梯度結果和誤差反向傳播法求出的結果是否一致(嚴格地講,是非常相近)的操作稱為梯度確認(gradient check)。

    小結

    ? 通過使用計算圖,可以直觀地把握計算過程 ?計算圖的節點是由局部計算構成的。局部計算構成全局計算。 ?計算圖的正向傳播進行一般的計算。通過計算圖的反向傳播,可以計算各個節點的導數。 ?通過將神經網絡的組成元素實現為層,可以高效地計算梯度*(反向傳播法)。 ?通過比較數值微分和誤差反向傳播的結果,可以確認誤差反向傳播的實現是否正確(梯度確認)。

    總結

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

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