知識卡片 反向傳播中的梯度

2021-01-08 騰訊網

前言:本文介紹神經網絡中通過反向傳播計算梯度的原理,並通過代碼演示計算正向和反向傳播中的矩陣相乘得出梯度。

反向傳播中的梯度

反向傳播(backpropagation)中的梯度

神經網絡的基本結構有三層,輸入、中間層和輸出層。正向傳播計算出來的結果,誤差較大,因此通過反向傳播不斷迭代修改參數,使得誤差降低。

反向傳播從輸出層傳到輸入層,逐層自頂向下計算損失函數,計算神經元權值的梯度,作為修改神經元的依據。當誤差達到期望值時,或者迭代次數超過預設的閾值時學習結束。

梯度的簡單解釋

計算誤差時,對於複雜的函數無法直接求得誤差最小時的參數取值,採用梯度下降的辦法更新梯度計算。在梯度的簡單解釋例2中,af/ax = 1, 這裡的1是邏輯判斷,即右邊括號裡的條件(x >= y)成立時為1,否則為0。

舉例:反向傳播中的梯度傳播和計算-使用鏈規則對複合表達式求導

複合表達式f(u,v,w)表示為神經網絡的損失函數,u和v是輸入的訓練數據,w是權重參數,是機器學習算法需要通過學習來調節。鏈式法則是對複合函數求導的一種方法。

正向傳播中 q = u + v =3 ;f = qw = 3* -3 = -9

每個變量的導數的含義是表示整個表達式對預期值的敏感性,反向傳播中為紅色字體,從右往左看,f 梯度為 1, af/aq = w =-3 q 梯度=-3 ....... 傳到最左邊,求得三個變量的梯度。

Sigmoid 門的反向傳播

Sigmoid的作用是對變量進行規範化處理,使其值落在[0,1],反向傳播計算梯度,分別對變量w和x求導。

矩陣‐矩陣相乘的梯度

反向傳播中的梯度計算不僅使用於單個變量,也適用於矩陣和向量。

矩陣D= 矩陣 W 點乘dot 矩陣 X,W 通常為權值矩陣,X 為樣本的特徵向量矩陣。隨機產生 W 和 X,矩陣相乘時,X 的列數必須和 W 的行數相同,都設置為10。

反向傳播過程中,首先隨機初始化模擬dD梯度,dD與D 的shape相同;然後分別計算矩陣D對 W 和 X 的偏導,注意矩陣的相乘時的維度和轉置即可求得表達式的對參數的偏導數,也就是梯度。

代碼演示-正向傳播和反向傳播

# 演示內容: 正向傳播和反向傳播 -矩陣的相乘:D = W dot X

import numpy as np

# 正向傳播

# X 10 行數 與 W 列數相同,2 兩行意味著分類為兩類

D = W.dot(X)

print(D) # D也是分類的結果

'''

'''

# 反向傳播

dDdW = dD.dot(X.T) # D 對參數 W 求偏導也就是梯度;D是五行兩列, X是十行兩列,矩陣相乘行列數要相等,X.T 轉置

dDdX= W.T.dot(dD)

print(dDdW)

print(dDdX)

相關焦點

  • 反向傳播算法最全解讀,機器學習進階必看!
    PS:本文默認讀者具備一定的基礎知識(如了解梯度下降、神經網絡等概念)。一、什麼是反向傳播算法?反向傳播算法是訓練神經網絡的經典算法。在20世紀70年代到80年代被多次重新定義。它的一些算法思想來自於60年代的控制理論。在輸入數據固定的情況下、反向傳播算法利用神經網絡的輸出敏感度來快速計算出神經網絡中的各種超參數。
  • 反向傳播算法:定義,概念,可視化
    這個方向的流動叫做正向傳播。  在訓練階段,輸入最後可以計算出一個代價標量J(θ)。  反向傳播算法  然後,代價通過反向算法返回到網絡中,調整權重並計算梯度。未完待續……  分析  可能是你們在學校裡做過用代數的方法來分析反向傳播。對於普通函數,這很簡單。
  • 離散優化代替反向傳播:Pedro Domingos提出深度學習新方向
    但是,將這些方法擴展至多層比較困難,因為硬閾值單元(hard-threshold unit)無法通過梯度下降進行訓練,這類單元在幾乎所有情況下導數都為 0,且在原點處非連續。因此,研究社區轉向帶有軟激活函數(如 Sigmoid、ReLU)的多層網絡,這樣梯度可以通過反向傳播進行高效計算(Rumelhart et al., 1986)。
  • 用反向傳播算法解釋大腦學習過程?Hinton 等人新研究登上 Nature...
    b)在規定突觸變化特異性的譜系中,反向傳播和擾動算法的位置。c)該譜系上的算法以不同的速度進行學習。在機器學習中,誤差反向傳播(backprop)是深度神經網絡訓練中最常用的算法,也是這些神經網絡中最成功的學習步驟。反向傳播算法描述見下圖:
  • VGGNet vs ResNet:機器學習中的梯度消失問題
    VGGNet架構如下圖所示:在卷積神經網絡(CNN)中,隨著層數的增加,機器學習模型擬合更複雜函數的能力也隨之增加。因此,層數越多越好(不要與人工神經網絡相混淆,因為人工神經網絡並不一定會隨著隱層數的增加而提供更好的性能)。現在,我們可以來討論一下為什麼不使用VGG20、VGG50或VGG100等。我們知道,神經網絡的權重更新使用了反向傳播算法。
  • 用反向傳播算法解釋大腦學習過程?Hinton等人新研究登Nature子刊
    b)在規定突觸變化特異性的譜系中,反向傳播和擾動算法的位置。c)該譜系上的算法以不同的速度進行學習。在機器學習中,誤差反向傳播(backprop)是深度神經網絡訓練中最常用的算法,也是這些神經網絡中最成功的學習步驟。反向傳播算法描述見下圖:反向傳播算法的核心是對整個網絡所有可能的路徑重複使用鏈式法則。
  • 每天五分鐘自然語言理解NLP:RNN為什麼會有梯度消失和梯度爆炸?
    ,我們前面的一個章節已經計算了RNN的反向傳播,如果從反向傳播的角度來進行分析,我們可以很容易的分析出,RNN為什麼會有梯度消失和梯度爆炸?  RNN的反向傳播   如上所示,是上一個章節推導的RNN的反向傳播的公式,這裡是計算的第三個時刻損失關於h(1)的偏導數,如果我們將其進行擴展,擴展為T時刻的損失對h(1)的偏導數,那麼此時可以表示為:
  • DNF:一陣雨反向升級!1E金幣卡片消失,守門人畢業附魔沒了
    一陣雨韓服大號劍影,走的是守門人,卻出現反向升級,1E金幣的「天價卡」頓時消失!不愧是「一陣瞎」,這操作太熟悉,節目效果拉滿。01一陣雨反向升級!1E金幣卡片沒了作為奧茲瑪前傳,黑鴉之境副本分4個階段,難度不一樣,材料也不同。
  • Batch、Mini-batch和隨機梯度下降的區別和Python示例
    在研究機器學習和深度學習時出現的主要問題之一是梯度下降的幾種類型。在梯度下降的三種類型(Batch梯度下降、Mini-batch梯度下降和隨機梯度下降)中,我應該使用哪一種呢?在這篇文章中,我們將了解這些概念之間的區別,並從梯度下降的代碼實現來闡明這些方法。
  • 吳恩達深度學習(20)-激活函數的導數和神經網絡的梯度下降
    激活函數的導數(Derivatives of activation functions)在神經網絡中使用反向傳播的時候,你真的需要計算激活函數的斜率或者導數。networks)下面會給你實現反向傳播或者說梯度下降算法的方程。
  • 神經網絡中容易被忽視的基礎知識
    在神經網絡中的激活主要講的是梯度的更新的激活。為什麼在人工神經網絡中的神經元需要激活函數?輸出不是零中心的,這一情況將影響梯度下降的運作,因為如果輸入神經元的數據總是正數,那麼關於 w 的梯度在反向傳播的過程中,將會要麼全部是正數,要麼全部是負數,這樣梯度下降權重更新時出現 z 字型的下降。這樣收斂會變得異常的慢。(這也是為什麼要一直保持為數據的 0 中心化)—–但這個問題比較小。3.exp()在深度神經網絡時候相比其他運算就比較慢。
  • 深度森林第三彈:周志華組提出可做表徵學習的多層梯度提升決策樹
    通過構建分層或「深層」結構,該模型能夠在有監督或無監督的環境下從原始數據中學習良好的表徵,這被認為是其成功的關鍵因素。成功的應用領域包括計算機視覺、語音識別、自然語言處理等 [1]。目前,幾乎所有的深層神經網絡都使用具有隨機梯度下降的反向傳播 [2,3] 作為訓練過程中更新參數的幕後主力軍。
  • 消失的梯度問題:問題,原因,意義及其解決對策
    問題 隨著越來越多的激活函數加到神經網絡中,損失函數的梯度趨近於0,使得網絡結構很難訓練。然而,當使用更多層的時候,可能會造成梯度太小而不能很好的訓練。 神經網絡的梯度是使用反向傳播來找到的。簡單來說,反向傳播通過將網絡從最終層逐層移動到初始層來找到網絡的導數。 通過鏈式的規則,將各層的導數乘上網絡(從最終層到初始層),計算出初始層的導數。 然而,當有n個隱藏層使用像sigmoid的激活函數時,n個小的倒數相乘。
  • 梯度下降背後的數學原理幾何?
    此循環重複多次,並確保消費者可以在每個步驟中提供一定的反饋來影響產品的更改策略。實際上,這種看似簡單的反覆迭代過程很好地體現在梯度下降原理中。梯度下降能夠通過首先計算出成本函數的梯度、然後更新梯度對應的現有參數從而最小化成本函數來處理。梯度將具有眾多變量的函數轉換為一個向量,稍後我們將對該話題進行討論。
  • 10個梯度下降優化算法+備忘單
    ,在深度學習模型中常常用來在反向傳播過程中更新神經網絡的權值。第二個等式中的最後一項就是一個投影梯度。這個值可以通過使用先前的速度「前進一步」獲得(等式4)。這意味著對於這個時間步驟t,我們必須在最終執行反向傳播之前執行另一個前向傳播。
  • 如何使用pytorch自動求梯度
    構建深度學習模型的基本流程就是:搭建計算圖,求得損失函數,然後計算損失函數對模型參數的導數,再利用梯度下降法等方法來更新參數。搭建計算圖的過程,稱為「正向傳播」,這個是需要我們自己動手的,因為我們需要設計我們模型的結構。由損失函數求導的過程,稱為「反向傳播」,求導是件辛苦事兒,所以自動求導基本上是各種深度學習框架的基本功能和最重要的功能之一,PyTorch也不例外。
  • 手推公式:LSTM單元梯度的詳細的數學推導
    LSTM單元的基本單元結構已經介紹完成,繼續推導在實現中使用的方程。推導先決條件推導方程的核心概念是基於反向傳播、成本函數和損失。除此以外還假設您對高中微積分(計算導數和規則)有基本的了解。注意(下劃線(_)後面的字符是下標)前向傳播推導門的計算公式狀態的計算公式以遺忘門為例說明導數的計算。我們需要遵循下圖中紅色箭頭的路徑。
  • 深度學習之父Geoffrey Hinton:AI實為反向傳播,計算機與生物結合可...
    該文章詳細闡述了一種被稱為「反向傳播」的技術。普林斯頓的計算心理學家Jon Cohen認為反向傳播是「深度學習的根基,幾乎一切都與之相關」。總結一下,現在人們所說的AI即為深度學習,而深度學習實際上就是反向傳播,這一點很神奇,因為反向傳播已經有了30年的歷史。值得人們深思的一點便在於,這樣一門技術如何在蟄伏這麼久後製造了這一番巨浪。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    2006年引入的反向傳播技術,使得訓練深層神經網絡成為可能。反向傳播技術是先在前向傳播中計算輸入信號的乘積及其對應的權重,然後將激活函數作用於這些乘積的總和。這種將輸入信號轉換為輸出信號的方式,是一種對複雜非線性函數進行建模的重要手段,並引入了非線性激活函數,使得模型能夠學習到幾乎任意形式的函數映射。
  • 最清晰的講解各種梯度下降法原理與Dropout
    機器學習中常用的權重更新表達式為:,這裡的λ就是學習率,本文從這個式子出發來把機器學習中的各種「梯度」下降法闡釋清楚。機器學習目標函數,一般都是凸函數,什麼叫凸函數?本文嚴格按照願意解釋一下:Momentum梯度法首先計算的是當前的梯度(圖中的小藍色向量)然後沿著更新的累積梯度的方向來一個大的跳躍(圖中大藍色向量),而NAG梯度法首先沿著先前的累積梯度方向(棕色向量)實現一個大的跳躍,然後加上一個小的按照動量梯度法計算的當前梯度(上圖紅色向量)進行修正得到上圖綠色的向量。此處我拋出一個問題,上圖為什麼畫了兩個三角形?