色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

詳解神經網絡中反向傳播和梯度下降

OSC開源社區 ? 來源:OSCHINA 社區 ? 2023-03-14 11:07 ? 次閱讀

來源| OSCHINA 社區

作者 | 華為云開發者聯盟-嵌入式視覺

摘要:反向傳播指的是計算神經網絡參數梯度的方法。

本文分享自華為云社區《反向傳播與梯度下降詳解》,作者:嵌入式視覺 。

一,前向傳播與反向傳播

1.1,神經網絡訓練過程

神經網絡訓練過程是:

先通過隨機參數 “猜 “一個結果(模型前向傳播過程),這里稱為預測結果a;

然后計算a與樣本標簽值 y 的差距(即損失函數的計算過程);

隨后通過反向傳播算法更新神經元參數,使用新的參數再試一次,這一次就不是 “猜” 了,而是有依據地向正確的方向靠近,畢竟參數的調整是有策略的(基于梯度下降策略)。

以上步驟如此反復多次,一直到預測結果和真實結果之間相差無幾,亦即 ∣a?y∣→0,則訓練結束。

1.2,前向傳播

前向傳播 (forward propagation 或 forward pass) 指的是:按順序 (從輸入層到輸出層) 計算和存儲神經網絡中每層的結果。

為了更深入理解前向傳播的計算過程,我們可以根據網絡結構繪制網絡的前向傳播計算圖。下圖是簡單網絡與對應的計算圖示例:

3d7a6052-bfa5-11ed-bfe3-dac502259ad0.jpg

其中正方形表示變量,圓圈表示操作符。數據流的方向是從左到右依次計算。

1.3,反向傳播

反向傳播 (backward propagation,簡稱 BP) 指的是計算神經網絡參數梯度的方法。其原理是基于微積分中的鏈式規則,按相反的順序從輸出層到輸入層遍歷網絡,依次計算每個中間變量和參數的梯度。

梯度的自動計算 (自動微分) 大大簡化了深度學習算法的實現。

注意,反向傳播算法會重復利用前向傳播中存儲的中間值,以避免重復計算,因此,需要保留前向傳播的中間結果,這也會導致模型訓練比單純的預測需要更多的內存(顯存)。同時這些中間結果占用內存(顯存)大小與網絡層的數量和批量(batch_size)大小成正比,因此使用大 batch_size 訓練更深層次的網絡更容易導致內存不足(out of memory)的錯誤!

1.4,總結

前向傳播在神經網絡定義的計算圖中按順序計算和存儲中間變量,它的順序是從輸入層到輸出層。

反向傳播按相反的順序 (從輸出層到輸入層) 計算和存儲神經網絡的中間變量和參數的梯度。

在訓練神經網絡時,在初始化模型參數后,我們交替使用前向傳播和反向傳播,基于反向傳播計算得到的梯度,結合隨機梯度下降優化算法(或者 Adam 等其他優化算法)來更新模型參數。

深度學習模型訓練比預測需要更多的內存。

二,梯度下降

2.1,深度學習中的優化

大多數深度學習算法都涉及某種形式的優化。優化器的目的是更新網絡權重參數,使得我們平滑地到達損失面中損失值的最小點。

深度學習優化存在許多挑戰。其中一些最令人煩惱的是局部最小值、鞍點和梯度消失。

局部最小值(local minimum): 對于任何目標函數 f (x),如果在 x 處對應的 f (x) 值小于在x附近任何其他點的 f (x) 值,那么 f (x) 可能是局部最小值。如果 f (x) 在x處的值是整個域上目標函數的最小值,那么f(x) 是全局最小值。

鞍點(saddle point): 指函數的所有梯度都消失但既不是全局最小值也不是局部最小值的任何位置。

梯度消失(vanishing gradient): 因為某些原因導致目標函數f的梯度接近零(即梯度消失問題),是在引入 ReLU 激活函數和 ResNet 之前訓練深度學習模型相當棘手的原因之一。

在深度學習中,大多數目標函數都很復雜,沒有解析解,因此,我們需使用數值優化算法,本文中的優化算法: SGD 和 Adam 都屬于此類別。

2.2,如何理解梯度下降法

梯度下降(gradient descent, GD)算法是神經網絡模型訓練中最為常見的優化器。盡管梯度下降 (gradient descent) 很少直接用于深度學習,但理解它是理解隨機梯度下降和小批量隨機梯度下降算法的基礎。

大多數文章都是以 “一個人被困在山上,需要迅速下到谷底” 來舉例理解梯度下降法,但這并不完全準確。在自然界中,梯度下降的最好例子,就是泉水下山的過程:

水受重力影響,會在當前位置,沿著最陡峭的方向流動,有時會形成瀑布(梯度的反方向為函數值下降最快的方向);

水流下山的路徑不是唯一的,在同一個地點,有可能有多個位置具有同樣的陡峭程度,而造成了分流(可以得到多個解);

遇到坑洼地區,有可能形成湖泊,而終止下山過程(不能得到全局最優解,而是局部最優解)。

示例參考 AI-EDU: 梯度下降。

2.3,梯度下降原理

梯度下降的數學公式:

3d918868-bfa5-11ed-bfe3-dac502259ad0.png

其中:

θn+1:下一個值(神經網絡中參數更新后的值);

θn:當前值(當前參數值);

?:減號,梯度的反向(梯度的反方向為函數值下降最快的方向);

η:學習率或步長,控制每一步走的距離,不要太快以免錯過了最佳景點,不要太慢以免時間太長(需要手動調整的超參數);

?:梯度,函數當前位置的最快上升點(梯度向量指向上坡,負梯度向量指向下坡);

J (θ):函數(等待優化的目標函數)。

下圖展示了梯度下降法的步驟。梯度下降的目的就是使得x值向極值點逼近。

3dadba10-bfa5-11ed-bfe3-dac502259ad0.png

3dcbba7e-bfa5-11ed-bfe3-dac502259ad0.jpg

由于是雙變量,所以梯度下降的迭代過程需要用三維圖來解釋。表 2 可視化了三維空間內的梯度下降過程。

3de33a64-bfa5-11ed-bfe3-dac502259ad0.jpg

圖中間那條隱隱的黑色線,表示梯度下降的過程,從紅色的高地一直沿著坡度向下走,直到藍色的洼地。

雙變量凸函數 J (x,y)=x2+2y2 的梯度下降優化過程以及可視化代碼如下所示:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def target_function(x,y):
    J = pow(x, 2) + 2*pow(y, 2)
 return J
def derivative_function(theta):
    x = theta[0]
    y = theta[1]
 return np.array([2*x, 4*y])
def show_3d_surface(x, y, z):
    fig = plt.figure()
    ax = Axes3D(fig)
    u = np.linspace(-3, 3, 100)
    v = np.linspace(-3, 3, 100)
    X, Y = np.meshgrid(u, v)
    R = np.zeros((len(u), len(v)))
 for i in range(len(u)):
 for j in range(len(v)):
 R[i, j] = pow(X[i, j], 2)+ 4*pow(Y[i, j], 2)
 ax.plot_surface(X, Y, R, cmap='rainbow')
 plt.plot(x, y, z, c='black', linewidth=1.5,  marker='o', linestyle='solid')
 plt.show()
if __name__ == '__main__':
    theta = np.array([-3, -3]) # 輸入為雙變量
    eta = 0.1 # 學習率
    error = 5e-3 # 迭代終止條件,目標函數值 < error
    X = []
    Y = []
    Z = []
 for i in range(50):
 print(theta)
        x = theta[0]
        y = theta[1]
        z = target_function(x,y)
 X.append(x)
 Y.append(y)
 Z.append(z)
 print("%d: x=%f, y=%f, z=%f" % (i,x,y,z))
 d_theta = derivative_function(theta)
 print("    ", d_theta)
        theta = theta - eta * d_theta
 if z < error:
 break
    show_3d_surface(X,Y,Z)
注意!總結下,不同的步長 η ,隨著迭代次數的增加,會導致被優化函數 J 的值有不同的變化:

3df814de-bfa5-11ed-bfe3-dac502259ad0.png

圖片來源如何理解梯度下降法?。

三,隨機梯度下降與小批量隨機梯度下降

3.1,隨機梯度下降

在深度學習中,目標函數通常是訓練數據集中每個樣本的損失函數的平均值。如果使用梯度下降法,則每個自變量迭代的計算代價為 O (n),它隨 n(樣本數目)線性增?。因此,當訓練數據集較大時,每次迭代的梯度下降計算代價將較高。 隨機梯度下降 (SGD) 可降低每次迭代時的計算代價。在隨機梯度下降的每次迭代中,我們對數據樣本隨機均勻采樣一個索引 i,其中 i∈1,...,n,并計算梯度 ?J (θ) 以更新權重參數 θ: 3e1448de-bfa5-11ed-bfe3-dac502259ad0.png

每次迭代的計算代價從梯度下降的 O (n) 降至常數 O (1)。另外,值得強調的是,隨機梯度 ?Ji (θ) 是對完整梯度 ?J (θ) 的無偏估計。 無偏估計是用樣本統計量來估計總體參數時的一種無偏推斷。 在實際應用中,隨機梯度下降 SGD 法必須和動態學習率方法結合起來使用,否則使用固定學習率 + SGD 的組合會使得模型收斂過程變得更復雜。

3.2,小批量隨機梯度下降

前面講的梯度下降(GD)和隨機梯度下降(SGD)方法都過于極端,要么使用完整數據集來計算梯度并更新參數,要么一次只處理一個訓練樣本來更新參數。在實際項目中,會對兩者取折中,即小批量隨機梯度下降 (minibatch gradient descent),使用小批量隨機梯度下降還可以提高計算效率。 小批量的所有樣本數據元素都是從訓練集中隨機抽出的,樣本數目個數為 batch_size(縮寫 bs) 3e2a2384-bfa5-11ed-bfe3-dac502259ad0.png

另外,一般項目中使用 SGD 優化算法都默認會使用小批量隨機梯度下降,即 batch_size > 1,除非顯卡顯存不夠了,才會設置 batch_size = 1。

審核編輯:湯梓紅

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

    關注

    42

    文章

    4772

    瀏覽量

    100802
  • 參數
    +關注

    關注

    11

    文章

    1838

    瀏覽量

    32240
  • 函數
    +關注

    關注

    3

    文章

    4332

    瀏覽量

    62653
  • 模型
    +關注

    關注

    1

    文章

    3248

    瀏覽量

    48860
  • 深度學習
    +關注

    關注

    73

    文章

    5503

    瀏覽量

    121198

原文標題:詳解神經網絡中反向傳播和梯度下降

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【案例分享】基于BP算法的前饋神經網絡

    傳播的,不會回流),區別于循環神經網絡RNN。BP算法(Back Propagation):誤差反向傳播算法,用于更新網絡
    發表于 07-21 04:00

    神經網絡反向傳播算法

    03_深度學習入門_神經網絡反向傳播算法
    發表于 09-12 07:08

    反向傳播神經網絡建模的基本原理

    等方面取得了顯著的成果。本文將詳細介紹BP神經網絡的基本原理,包括網絡結構、激活函數、損失函數、梯度下降算法、反向
    的頭像 發表于 07-02 14:05 ?304次閱讀

    反向傳播神經網絡模型的特點

    反向傳播神經網絡(Backpropagation Neural Network,簡稱BP神經網絡)是一種多層前饋神經網絡,它通過
    的頭像 發表于 07-02 14:14 ?408次閱讀

    神經網絡反向傳播算法原理是什么

    神經網絡反向傳播算法(Backpropagation Algorithm)是一種用于訓練多層前饋神經網絡的監督學習算法。它通過最小化損失函數來調整
    的頭像 發表于 07-02 14:16 ?645次閱讀

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

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

    反向傳播神經網絡和bp神經網絡的區別

    反向傳播神經網絡(Backpropagation Neural Network,簡稱BP神經網絡)是一種多層前饋神經網絡,它通過
    的頭像 發表于 07-03 11:00 ?819次閱讀

    反向傳播神經網絡概念是什么

    反向傳播神經網絡(Backpropagation Neural Network,簡稱BP神經網絡)是一種多層前饋神經網絡,它通過
    的頭像 發表于 07-03 11:06 ?626次閱讀

    反向傳播神經網絡建模基本原理

    。本文將詳細介紹反向傳播神經網絡的基本原理,包括網絡結構、激活函數、損失函數、梯度下降算法、
    的頭像 發表于 07-03 11:08 ?458次閱讀

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

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

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

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

    神經網絡反向傳播算法的原理、數學推導及實現步驟

    神經網絡反向傳播算法(Backpropagation Algorithm)是一種用于訓練多層神經網絡的算法,其基本原理是通過梯度
    的頭像 發表于 07-03 11:16 ?799次閱讀

    神經網絡反向傳播算法的作用是什么

    神經網絡反向傳播算法(Backpropagation)是一種用于訓練人工神經網絡的算法,它通過計算損失函數關于網絡參數的
    的頭像 發表于 07-03 11:17 ?1432次閱讀

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

    是一種模擬人腦神經元網絡的計算模型,具有強大的非線性映射能力和泛化能力。反向傳播算法是訓練神經網絡的核心算法,通過梯度
    的頭像 發表于 07-03 11:24 ?991次閱讀

    bp神經網絡反向傳播神經網絡區別在哪

    反向傳播神經網絡(Backpropagation Neural Network,簡稱BP神經網絡)是一種多層前饋神經網絡,它通過
    的頭像 發表于 07-04 09:51 ?441次閱讀
    主站蜘蛛池模板: 免费人成视频X8X8国产更快乐| 欧美巨大xxxx做受高清| 丰满少妇被猛烈进出69影院| 处女座历史名人| 国产高清亚洲| 好男人在线高清WWW免费观看| 回复术士人生重启在线观看| 久久秋霞理伦片| 欧美AAAA片免费播放观看| 色多多涩涩屋下载软件| 香蕉久久日日躁夜夜嗓| 亚洲综合日韩中文字幕v在线| 1788vv视频| 成人人观看的免费毛片| 国产精品美女久久久网站动漫| 好硬好湿好大再深一点动态图| 麻豆精品国产剧情观看| 日操夜操天天操| 亚洲精品自在在线观看| 97精品免费视频| 高清撒尿hdtube撒尿| 好男人好资源在线观看| 免费看www视频| 少女10声大哥喊退色狼| 一本色道久久88加勒比—综合| good神马电影伦理午夜| 国产精品爽爽久久久久久蜜桃网站| 久久re视频精品538在线| 男生在床上脱美女 胸| 无码人妻少妇色欲AV一区二区| 野花日本高清在线观看免费吗| a级销魂美女| 国产中的精品AV一区二区| 妹妹我要色| 视频一区国产在线第一页| 在线高清无码欧美久章草| 成年人视频免费在线观看| 和I儿媳妇激情| 欧美亚洲高清国产| 亚洲欧美自拍明星换脸| xxx性欧美在线|