天天看點

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

在過去的10年裡,最佳的機器學習實施方式(例如面部識别和語音識别器)是由一種稱為“深度學習”的技術産生的。深度學習是由神經網絡組成的,它是通過分析訓練執行個體來完成某些任務的一種方法。神經網絡的神經元是如何從訓練中學習的呢?

有三個步驟:

  1. 讓你的神經網絡估計輸出
  2. 評估您的網絡運作情況。
  3. 根據步驟2中的評估修改/教授您的神經網絡。又稱反向傳播

步驟1.讓你的NN通過forward pass進行估計

當您使用神經網絡進行預測時,

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

為了訓練神經網絡,你需要評估你的預測有多好。這就是損失函數的作用。

第2步.評估您的網絡運作情況。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

損失函數将輸出結果與神經網絡的預測結果進行比較。損失函數最常見的例子之一是均方誤差(mean squared error, MSE)。它計算真實值和預測之間的內插補點并将其平方。你對結果進行平方的原因是使負面差異不相關。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

如果您有多個預測和真實值,

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

在這種情況下,

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

損失函數的誤差是36。你想讓均方誤差盡可能小,理想情況下,你想讓它為0(但我們會滿足于任何足夠接近它的值)。

步驟3.修改/教導您的神經網絡

您的誤內插補點如下圖所示。你可能需要增權重重或者減少權重來達到最小的誤差。這一步稱為反向傳播。為了達到最小化誤差的目标,可以采用多種方法。我将讨論兩種流行的方法。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

方法1.求導數,令它等于0,然後解出來

在微積分課上,我們學過為了達到最優點,你可以對函數對輸入求導,令它等于0,然後解出來。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

通過求解w,我們得到w =truth/input。在這種情況下,truth是12,input是3,是以w變成4。

這種方法簡單快速,但并不總是有效,因為大多數損失函數沒有閉合形式的導數。

方法2.梯度下降

微積分中的梯度是偏導數的集合。它證明了梯度是上升最快的方向。如果之前的那些句子讓你感到困惑,你需要知道的就是當你求導的時候,這個值告訴你,在圖像上到達最高點的方向。但是,我們想要得到最低點,因為我們的圖的y軸是誤差,我們想要最小化誤差,我們會向梯度的相反方向移動,取梯度的負值。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

您從圖表的某個位置開始,然後繼續沿着梯度的相反方向前進,以達到最小值。

鍊式法則

在上面的例子中,隻有一個權重,這在現實世界中并不常見。讓我們來看一個具有多個權重的例子,以及如何應用鍊式法則來計算導數。

我們将權重和損失函數表示為圖形。請注意,“a”和“b”代表權重,“f”代表我們想要最小化的損失函數。我們将看到調整權重如何使用鍊式法則影響輸出。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

損失相對于權重的梯度可以用兩種方式表示,因為有兩個權重。如果你要為上面的forward pass定義一個函數,它應該是這樣的:

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

讓我們從計算dL / da = df / da開始。問題是損失函數f不知道a。每個節點隻知道其相鄰節點。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

是以,為了計算df/da,需要使用鍊式法則。簡單地說,當您有複合函數時,将使用鍊式法則。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

由于df / da不能直接從f節點計算(f節點不知道節點a),可以寫成df/da = df/dc * dc/da。

現在,讓我們計算dL/db = df/db。由于從節點b出來有兩條邊,當我們反向傳播時,我們需要使用sum規則向節點b添加兩條路徑。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

每條路徑都可以用鍊式法則計算:df/dc * dc/db和df/dd * dd/db,最後求和。

實際上,這些權值是向量化的,是以當我們做反向傳播時,所有的權值都是同時計算的。

反向傳播的複雜性

讓我們将我們的神經網絡視為圖形。節點表示操作,邊表示權重。為了計算每個權重的梯度,每個邊必須至少通路一次。是以,反向傳播的複雜性在邊數量上是線性的。

如何快速到達最小值?

有時需要一段時間才能在反向傳播時達到最小值。有一些技巧/調整可以讓你快速達到最小值。

調整學習率

學習率是您乘以從損失函數中減去的梯度的值,以達到最小值。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

如果你使學習速率小,你可以確定達到最小值,但這需要一段時間。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

如果你的學習率太大,你可能無法達到最小值,因為你可能跳過最小值。是以,您希望使學習率足夠大,以便收斂到足夠接近最小值,還要将其調整到足夠小,以便能夠達到最小值。

調整momentum

通過使用momentum,累積過去步驟的梯度,而不是僅使用目前步驟的梯度來指導搜尋。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

使用該momentum的原因如下。在上圖中,考慮點A,如果我們将這些向量相加,則相反的方向抵消,是以沿w1方向的分量抵消,但是w2方向增加,這是我們想要達到最優的理想路徑。

更改batch size

Batch是用于計算梯度的整個機器學習訓練集。您可以一次選擇随機訓練樣本(随機),也可以一次使用一小批資料(小批量),而不是使用全部。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

随機方法大大縮短了梯度下降的計算時間;但是,它一次隻使用一個示例,是以它的最佳路徑比批處理梯度的路徑更嘈雜,也更随機。

局部和全局最小值

如果我們有多個最小值,我們希望達到全局最小值。但是,我們可能會陷入局部最小值,如下圖所示。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

在這種情況下,跳出局部最小值的最佳方法是随機restart。擺脫局部最小值的一個技巧是random restart,這提高了在其他地方達到最小值的機率。

反向傳播_快速了解機器學習中的反向傳播步驟1.讓你的NN通過forward pass進行估計第2步.評估您的網絡運作情況。步驟3.修改/教導您的神經網絡鍊式法則反向傳播的複雜性如何快速到達最小值?局部和全局最小值

繼續閱讀