在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

PyTorch教程-5.3. 前向傳播、反向傳播和計算圖

jf_pJlTbmA9 ? 來源:PyTorch ? 作者:PyTorch ? 2023-06-05 15:43 ? 次閱讀

到目前為止,我們已經用小批量隨機梯度下降訓練了我們的模型。然而,當我們實現該算法時,我們只擔心通過模型進行前向傳播所涉及的計算。當需要計算梯度時,我們只是調用了深度學習框架提供的反向傳播函數。

梯度的自動計算(自動微分)大大簡化了深度學習算法的實現。在自動微分之前,即使是對復雜模型的微小改動也需要手動重新計算復雜的導數。令人驚訝的是,學術論文常常不得不分配大量頁面來推導更新規則。雖然我們必須繼續依賴自動微分,以便我們可以專注于有趣的部分,但如果您想超越對深度學習的膚淺理解,您應該知道這些梯度是如何在底層計算的。

在本節中,我們將深入探討反向傳播(通常稱為反向傳播)的細節。為了傳達對技術及其實現的一些見解,我們依賴于一些基本的數學和計算圖。首先,我們將重點放在具有權重衰減的單隱藏層 MLP 上(?2 正則化,將在后續章節中描述)。

5.3.1. 前向傳播

前向傳播(或forward pass)是指神經網絡從輸入層到輸出層依次計算和存儲中間變量(包括輸出)。我們現在逐步了解具有一個隱藏層的神經網絡的機制。這可能看起來很乏味,但用放克演奏家詹姆斯布朗的永恒名言來說,你必須“付出代價才能成為老板”。

為了簡單起見,我們假設輸入示例是 x∈Rd并且我們的隱藏層不包含偏差項。這里的中間變量是:

(5.3.1)z=W(1)x,

在哪里W(1)∈Rh×d是隱藏層的權重參數。運行中間變量后 z∈Rh通過激活函數 ?我們獲得了長度的隱藏激活向量h,

(5.3.2)h=?(z).

隱藏層輸出h也是一個中間變量。假設輸出層的參數只具有權重W(2)∈Rq×h,我們可以獲得一個輸出層變量,其向量長度為q:

(5.3.3)o=W(2)h.

假設損失函數是l示例標簽是 y,然后我們可以計算單個數據示例的損失項,

(5.3.4)L=l(o,y).

根據定義?2我們稍后將介紹的正則化,給定超參數λ,正則化項是

(5.3.5)s=λ2(‖W(1)‖F2+‖W(2)‖F2),

其中矩陣的 Frobenius 范數就是?2將矩陣展平為向量后應用范數。最后,模型在給定數據示例上的正則化損失為:

(5.3.6)J=L+s.

我們指的是J作為下面討論中的目標函數。

5.3.2. 前向傳播的計算圖

繪制計算圖有助于我們可視化計算中運算符和變量的依賴關系。圖 5.3.1 包含與上述簡單網絡相關的圖形,其中方塊表示變量,圓圈表示運算符。左下角表示輸入,右上角表示輸出。請注意箭頭的方向(說明數據流)主要是向右和向上。

poYBAGR9NK6AJFQWAACGowUha5Y731.svg

圖 5.3.1前向傳播計算圖。

5.3.3. 反向傳播

反向傳播是指計算神經網絡參數梯度的方法。簡而言之,該方法根據微 積分的鏈式法則以相反的順序遍歷網絡,從輸出層到輸入層。該算法存儲計算某些參數的梯度時所需的任何中間變量(偏導數)。假設我們有函數 Y=f(X)和Z=g(Y), 其中輸入和輸出 X,Y,Z是任意形狀的張量。通過使用鏈式法則,我們可以計算導數 Z關于X通過

(5.3.7)?Z?X=prod(?Z?Y,?Y?X).

在這里我們使用prod運算符在執行必要的操作(例如轉置和交換輸入位置)后將其參數相乘。對于向量,這很簡單:它只是矩陣-矩陣乘法。對于更高維的張量,我們使用適當的對應物。運營商 prod隱藏所有符號開銷。

回想一下,具有一個隱藏層的簡單網絡的參數,其計算圖如圖 5.3.1所示,是 W(1)和W(2). 反向傳播的目的是計算梯度 ?J/?W(1)和 ?J/?W(2). 為此,我們應用鏈式法則并依次計算每個中間變量和參數的梯度。計算的順序相對于前向傳播中執行的順序是相反的,因為我們需要從計算圖的結果開始并朝著參數的方向努力。第一步是計算目標函數的梯度J=L+s關于損失期限 L和正則化項s.

(5.3.8)?J?L=1and?J?s=1.

接下來,我們計算目標函數相對于輸出層變量的梯度o根據鏈式法則:

(5.3.9)?J?o=prod(?J?L,?L?o)=?L?o∈Rq.

接下來,我們計算關于兩個參數的正則化項的梯度:

(5.3.10)?s?W(1)=λW(1)and?s?W(2)=λW(2).

現在我們可以計算梯度了 ?J/?W(2)∈Rq×h 最接近輸出層的模型參數。使用鏈式規則產生:

(5.3.11)?J?W(2)=prod(?J?o,?o?W(2))+prod(?J?s,?s?W(2))=?J?oh?+λW(2).

獲得關于的梯度W(1)我們需要繼續沿著輸出層反向傳播到隱藏層。關于隱藏層輸出的梯度 ?J/?h∈Rh是(誰)給的

(5.3.12)?J?h=prod(?J?o,?o?h)=W(2)??J?o.

由于激活函數?按元素應用,計算梯度 ?J/?z∈Rh中間變量的z要求我們使用逐元素乘法運算符,我們用⊙:

(5.3.13)?J?z=prod(?J?h,?h?z)=?J?h⊙?′(z).

最后,我們可以得到梯度 ?J/?W(1)∈Rh×d 最接近輸入層的模型參數。根據鏈式法則,我們得到

(5.3.14)?J?W(1)=prod(?J?z,?z?W(1))+prod(?J?s,?s?W(1))=?J?zx?+λW(1).

5.3.4. 訓練神經網絡

在訓練神經網絡時,前向傳播和反向傳播相互依賴。特別是,對于前向傳播,我們沿依賴方向遍歷計算圖并計算其路徑上的所有變量。然后將這些用于反向傳播,其中圖上的計算順序是相反的。

以前述簡單網絡為例進行說明。一方面,在前向傳播過程中計算正則化項(5.3.5) 取決于模型參數的當前值W(1)和W(2). 它們由優化算法根據最近一次迭代中的反向傳播給出。另一方面,反向傳播過程中參數(5.3.11)的梯度計算取決于隱藏層輸出的當前值h,這是由前向傳播給出的。

因此在訓練神經網絡時,在初始化模型參數后,我們交替進行正向傳播和反向傳播,使用反向傳播給出的梯度更新模型參數。請注意,反向傳播會重用前向傳播中存儲的中間值以避免重復計算。結果之一是我們需要保留中間值,直到反向傳播完成。這也是為什么訓練比普通預測需要更多內存的原因之一。此外,這些中間值的大小大致與網絡層數和批量大小成正比。因此,使用更大的批量大小訓練更深的網絡更容易導致內存不足錯誤。

5.3.5. 概括

前向傳播在神經網絡定義的計算圖中順序計算和存儲中間變量。它從輸入層進行到輸出層。反向傳播以相反的順序順序計算并存儲神經網絡中中間變量和參數的梯度。在訓練深度學習模型時,正向傳播和反向傳播是相互依賴的,訓練需要的內存明顯多于預測。

5.3.6. 練習

假設輸入X一些標量函數 f是n×m矩陣。梯度的維數是多少f關于X?

向本節中描述的模型的隱藏層添加偏差(您不需要在正則化項中包含偏差)。

畫出相應的計算圖。

推導前向和反向傳播方程。

計算本節中描述的模型中訓練和預測的內存占用量。

假設您要計算二階導數。計算圖會發生什么變化?您預計計算需要多長時間?

假設計算圖對于您的 GPU 來說太大了。

您可以將它分區到多個 GPU 上嗎?

與在較小的 minibatch 上進行訓練相比,優缺點是什么?

審核編輯黃宇

Discussions

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • pytorch
    +關注

    關注

    2

    文章

    808

    瀏覽量

    13239
收藏 人收藏

    評論

    相關推薦

    反向傳播如何實現

    實現反向傳播
    發表于 07-09 16:10

    【AI 學習】第六篇--講解BP(反向傳播)流程

    反向傳播整個流程如下:(1)進行前傳播計算,利用
    發表于 11-05 17:25

    解讀多層神經網絡反向傳播原理

    要訓練神經網絡,我們需要“訓練數據集”。訓練數據集是由對應目標z(期望輸出)的輸入信號(x_1和 x_2)組成。神經網絡的訓練是一個迭代過程。在每個迭代中,使用來自訓練數據集的新數據修改網絡節點的加權系數。整個迭代由計算
    發表于 10-18 18:20 ?8647次閱讀
    解讀多層神經網絡<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>原理

    手動設計一個卷積神經網絡(傳播反向傳播

    本文主要寫卷積神經網絡如何進行一次完整的訓練,包括傳播反向傳播,并自己手寫一個卷積神經網絡。
    的頭像 發表于 05-28 10:35 ?1.8w次閱讀
    手動設計一個卷積神經網絡(<b class='flag-5'>前</b><b class='flag-5'>向</b><b class='flag-5'>傳播</b>和<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>)

    反向傳播算法的工作原理

    反向傳播算法(BP算法)是目前用來訓練人工神經網絡的最常用且最有效的算法。作為谷歌機器學習速成課程的配套材料,谷歌推出一個演示網站,直觀地介紹了反向傳播算法的工作原理。
    的頭像 發表于 07-02 16:01 ?1w次閱讀
    <b class='flag-5'>反向</b><b class='flag-5'>傳播</b>算法的工作原理

    人工智能(AI)學習:如何講解BP(反向傳播)流程

    關于BP知乎上的解釋是這樣的,反向傳播整個流程如下: 1)進行前傳播計算,利用
    發表于 11-03 16:55 ?0次下載
    人工智能(AI)學習:如何講解BP(<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>)流程

    淺析深度神經網絡(DNN)反向傳播算法(BP)

    在 深度神經網絡(DNN)模型與傳播算法 中,我們對DNN的模型和傳播算法做了總結,這里
    的頭像 發表于 03-22 16:28 ?3673次閱讀
    淺析深度神經網絡(DNN)<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>算法(BP)

    PyTorch教程5.3之前傳播反向傳播計算

    電子發燒友網站提供《PyTorch教程5.3之前傳播反向傳播
    發表于 06-05 15:36 ?0次下載
    <b class='flag-5'>PyTorch</b>教程<b class='flag-5'>5.3</b>之前<b class='flag-5'>向</b><b class='flag-5'>傳播</b>、<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>和<b class='flag-5'>計算</b><b class='flag-5'>圖</b>

    PyTorch教程之時間反向傳播

    電子發燒友網站提供《PyTorch教程之時間反向傳播.pdf》資料免費下載
    發表于 06-05 09:49 ?0次下載
    <b class='flag-5'>PyTorch</b>教程之時間<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>

    PyTorch教程-9.7. 時間反向傳播

    大量現代 RNN 架構之前,讓我們仔細看看反向傳播在數學細節中是如何在序列模型中工作的。希望這個討論能使梯度消失和爆炸的概念更加精確。如果你還記得我們在 5.3 節介紹 MLP 時通過計算
    的頭像 發表于 06-05 15:44 ?424次閱讀
    <b class='flag-5'>PyTorch</b>教程-9.7. 時間<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>

    神經網絡傳播反向傳播區別

    神經網絡是一種強大的機器學習模型,廣泛應用于各種領域,如圖像識別、語音識別、自然語言處理等。神經網絡的核心是傳播反向傳播算法。本文將詳
    的頭像 發表于 07-02 14:18 ?849次閱讀

    神經網絡傳播反向傳播在神經網絡訓練過程中的作用

    神經網絡是一種強大的機器學習模型,它通過模擬人腦神經元的連接方式來處理復雜的數據。神經網絡的核心是傳播反向傳播算法。本文將詳細介紹神經
    的頭像 發表于 07-03 11:11 ?1454次閱讀

    神經網絡反向傳播算法的推導過程

    反向傳播算法的推導過程,包括傳播、損失函數、梯度計算和權重更新等步驟。
    的頭像 發表于 07-03 11:13 ?569次閱讀

    神經網絡反向傳播算法的優缺點有哪些

    神經網絡反向傳播算法(Backpropagation Algorithm)是一種廣泛應用于深度學習和機器學習領域的優化算法,用于訓練多層饋神經網絡。本文將介紹反向
    的頭像 發表于 07-03 11:24 ?1029次閱讀

    【每天學點AI】傳播、損失函數、反向傳播

    在深度學習的領域中,傳播反向傳播和損失函數是構建和訓練神經網絡模型的三個核心概念。今天,小編將通過一個簡單的實例,解釋這三個概念,并展
    的頭像 發表于 11-15 10:32 ?680次閱讀
    【每天學點AI】<b class='flag-5'>前</b><b class='flag-5'>向</b><b class='flag-5'>傳播</b>、損失函數、<b class='flag-5'>反向</b><b class='flag-5'>傳播</b>
    主站蜘蛛池模板: 亚洲欧洲综合网| 毛片午夜| 精品卡一卡二 卡四卡视频| 国产无套粉嫩白浆| 天天做天天爱夜夜爽毛片毛片| 你懂的福利网站| 亚洲国产婷婷综合在线精品| 真实女人寂寞偷人视频| 亚洲高清国产一线久久| 婷婷丁香在线| www.99热.com| 夜夜春宵翁熄性放纵古代| 国产大片免费观看资源| www.夜夜骑| 中文字幕在线观看一区二区| 久久国产免费观看精品| 亚洲国产成人久久精品图片| 色五五月五月开| 香蕉视频在线观看黄| 伊人久久狼人| 色综合视频在线观看| 你懂的视频在线看| 国产成人精品亚洲| 国产亚洲欧美视频| 亚洲天堂va| 天天色天天做| 午夜高清在线| 亚洲午夜网未来影院| 开心色xxxx| 亚洲高清网站| 四虎午夜影院| 国内a级毛片免费···| 五月天婷婷在线观看视频| mm365快播综合网| wwwwwww色| 欧美性受一区二区三区| 青草视频在线观看国产| 好色成人网| 97精品在线| 国产v精品成人免费视频400条| 欧美男女交性过程视频|