观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

什么事反向傳播算法(反向傳播算法過程)

  • 生活
  • 2023-04-24 12:30

自從機器學習被引入到遞歸的非線性函數中(例如人工神經網絡)以來,對相關內容的應用得到了充足的發展。在這種情況下,訓練正確的神經網絡是建立可靠模型最重要的方面。這種訓練通常與”反向傳播”一詞聯系在一起,這個術語對大多數新手來說是非常模糊的。這也是本文所存在的意義。

反向傳播是神經網絡訓練的本質。它實際上是基于在前一歷元(即迭代)中獲得的誤差率(即損失)對神經網絡的權重進行微調的實踐。適當的調整權重可確保較低的錯誤率,增加模型的適用性使模型更可靠。

那么這個過程如何運作的呢?讓我們通過例子學習!

為了使這個例子盡可能便于大家理解,我們只涉及相關概念(例如損失函數、優化函數等)而不解釋它們,因為這些主題值得我們另起一篇文章進行細說。

首先,讓我們設置模型組件

想象一下,我們需要訓練一個深層神經網絡。訓練的目的是構建一個模型,該模型使用兩個輸入和三個隱藏單元執行XOR(異或)函數,這樣訓練集看起來如下所示:

此外,我們需要一個激活函數來確定神經網絡中每個節點的激活值。為簡單起見,讓我們選擇一個激活函數:

我們還需要一個假設函數來確定激活函數的輸入是什么。這個函數是:

讓我們選擇損失函數作為邏輯回歸的一般成本函數,看起來有點復雜,但實際上相當簡單:

此外,我們將使用批處理梯度下降優化函數,用于確定我們應該調整權重的方向,以獲得比我們現有的更低的損失。最后,學習率為0.1,所有權重將初始化為1。

我們的神經網絡

讓我們最后畫一張我們期待已久的神經網絡圖。它應該看起來像這樣:

最左邊的層是輸入層,它將X0作為值1的偏置項,將X1和X2作為輸入特征。中間的層是第一個隱藏層,它的偏置項Z0也取值為1。最后,輸出層只有一個輸出單元D0,其激活值是模型的實際輸出(即h(x))。

現在我們向前傳播

現在是將信息從一個層前饋到另一個層的時候了。這需要經過兩個步驟,通過網絡中的每個節點/單元:

1.使用我們之前定義的h(x)函數獲取特定單位輸入的加權和。

2.將我們從步驟1得到的值插入我們的激活函數(本例中為f(a)=a)并使用我們得到的激活值(即激活函數的輸出)作為連接輸入特征的下一層中的節點。

請注意,單位X0,X1,X2和Z0沒有任何連接到它們并任提供輸入的單位。因此,上述步驟不會出現在這些節點中。但是,對于其余的節點/單元,訓練集中第一個輸入樣本的整個神經網絡都是這樣的:

其他單位也是如此:

如前所述,最終單位(D0)的激活值(z)是整個模型的激活值(z)。因此,我們的模型預測輸入集{0,0}的輸出為1。計算當前迭代的損失/成本如下:

actual_y值來自訓練集,而predict_y值是我們模型產生的值。所以這次迭代的成本是-4。

那么反向傳播在哪里呢?

根據我們的例子,我們現在有一個模型沒有給出準確的預測(它給我們的值是4而不是1),這歸因于它的權重尚未調整(它們都等于1)。我們也有損失,即-4。反向傳播就是以這樣一種方式向后傳遞這種損失,我們可以根據這種方式微調權重。優化函數(在我們的例子中為梯度下降)將幫助我們找到權重。那就讓我們開始吧!

使用以下功能進行前饋:

然后通過這些函數的偏導數發生反向反饋。不需要經過經過推導這些函數的過程。我們需要知道的是,上面的函數將遵循:

其中Z是我們從前饋步驟中的激活函數計算中獲得的z值,而delta是圖層中單位的損失。

我知道有很多信息一次性就能吸收,但我建議你花點時間,真正了解每一步發生了什么,然后再繼續前進。

計算增量

現在我們需要找到神經網絡中每個單元/節點的損耗。這是為什么呢?我們這樣想,深度學習模型到達的每一次損失實際上是由所有節點累積到一個數字引起的。因此,我們需要找出哪個節點對每層中的大部分損失負責,這樣我們就可以通過賦予它更小的權重值來懲罰它,從而減少模型的總損失。

計算每個單元的增量可能會有問題。但是,感謝吳恩達先生,他給了我們整個事情的捷徑公式:

其中delta_0,w和f’(z)的值是相同單位的值,而delta_1是加權鏈接另一側的單位損失。例如:

你可以這樣想,為了獲得節點的損失(例如Z0),我們將其對應的f’(z)的值乘以它在下一層(delta_1)連接的節點的損失,再乘以連接兩個節點的鏈路的權重。

這正是反向傳播的工作原理。我們在每個單元進行delta計算步驟,將損失反向傳播到神經網絡中,并找出每個節點/單元的損失。

讓我們計算一下這些增量!

這里有一些注意事項:

最終單位的損失(即D0)等于整個模型的損失。這是因為它是輸出單位,它的損失是所有單位的累計損失,就像我們之前說的那樣。無論輸入(即z)等于什么,函數f’(z)總是給出值1。這是因為如前所述,偏導數如下:f’(a)=1輸入節點/單位(X0,X1和X2)沒有delta值,因為這些節點在神經網絡中無法控制。它們僅作為數據集和神經網絡之間的一個鏈接。

更新權重

現在剩下的就是更新我們在神經網絡中的所有權重。這遵循批量梯度下降公式:

其中W是手頭的權重,alpha是學習率(在我們的例子中是0.1),J’(W)是成本函數J(W)相對于W的偏導數。再次強調,我們不需要進行數學運算。因此,讓我們使用吳恩達先生的函數的偏導數:

其中Z是通過前向傳播獲得的Z值,delta是加權鏈接另一端的單位損失:

現在用我們在每一步獲得的偏導數值,和批量梯度下降權重更新所有權重。值得強調的是,輸入節點(X0,X1和X2)的Z值分別等于1,0,0。1是偏置單元的值,而0實際上是來自數據集的特征輸入值。最后要注意的是,沒有特定的順序來更新權重。你可以按照你想要的任何順序更新它們,只要你不會在同一次迭代中錯誤地更新任何權重兩次。

為了計算新的權重,讓我們給出神經網絡名稱中的鏈接:

新的權重計算***如下:

需要注意的是,模型還沒有正確訓練,因為我們只通過訓練集中的一個樣本進行反向傳播。我們為樣本做了所有我們能做的一切,這可以產生一個具有更高精度的模型,試圖接近每一步的最小損失/成本。

如果沒有正確的***,機器學習背后的理論真的很難掌握。其中一個例子就是反向傳播,其效果在大多數現實世界的深度學習應用程序中都是可以預見的。反向傳播只是將總損耗傳回神經網絡的一種方式,以方便人們了解每個節點的損失量,并隨后通過為節點提供更高誤差,進而使用損失最小化的方式來更新權重,反之亦然。

猜你喜歡

主站蜘蛛池模板: 欧美 自拍 | 国产精品莉莉欧美自在线线 | 免费观看日本视频 | 九九精品视频在线 | 亚洲欧美综合视频 | 在线综合视频 | 欧美黄色一级在线 | 国产精品久久在线 | a在线v| 午夜性福 | 日韩欧美精品一区二区 | 岬奈一区二区中文字幕 | 欧美黄网在线 | 在线观看毛片网站 | 露脸国产野战最新在线视频 | 国产成人a一区二区 | 免费成年人在线观看视频 | 日本成人在线看 | 亚洲欧美另类色妞网站 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 日韩成人毛片高清视频免费看 | 欧美在线观看一区二区 | 沈樵在线观看福利 | 亚洲精品不卡在线 | 高清不卡毛片免费观看 | 亚洲精品国产啊女成拍色拍 | 午夜免费的国产片在线观看 | 亚洲国产欧美在线人成精品一区二区 | 日本在线理论片 | 欧美成人亚洲欧美成人 | 美女视频免费黄色 | 成人毛片在线播放 | 国产精品一区二区手机在线观看 | 视频国产91 | 久久青草国产手机看片福利盒子 | 毛片在线视频 | 91精品国 | 久久是精品| 国产 一二三四五六 | 456亚洲老头视频 | 亚洲乱码一二三四五六区 |