AI入門 反向傳播和梯度下降

2021-10-11 18:49:20 字數 843 閱讀 9998

上一節中提到,分類函式是神經網路正向傳播的最後一層。但是如果要進行訓練,我們只有**結果是不夠的,我們需要拿**結果跟真實值進行對比,根據對比結果判斷我們的神經網路是不是夠好。

也就是說我們需要在分類函式後面增加一層:計算損失值。計算損失值這一層才是神經網路真正的最後一層。有了損失值之後,我們反過來優化每一層的引數值----這就是反向傳播。反向傳播中的優化過程需要使用梯度下降演算法。典型的梯度下降演算法有sgd、momentum、adagrad、rmsprop、adam等,下面進行簡單的描述:

1、sgd是最典型的梯度下降演算法,但是如果函式的梯度比較小的時候,sgd演算法就會變得很慢。

2、momentum是在sgd上增加了動量。簡單來說,開始的時候演算法可能處於乙個坡度比較大的位置,這時進行梯度下降會有乙個比較快的「速度」,然後演算法到了梯度很小的位置,momentum演算法會帶著部分原有的「速度」,衝過這段梯度很小區域。

3、adagrad演算法是梯度自適應演算法。也就是在梯度很大的時候走慢一點,梯度小的時候走快一點。理論上adagrad演算法是很好的,但實際表現不是很好。

4、rmsprop演算法是momentum和adagrad演算法的集合體,不僅能自適應梯度,還增加了動量,所以實際效果是很好的。

5、adam演算法是rmsprop演算法的改進版本。adam演算法是目前最常用的優化演算法。

tensorflow、pytorch等機器學習軟體框架都已經實現好了反向傳播的功能,我們只需要呼叫這些優化演算法即可。我們需要知道的是,反向傳播是整個神經網路得以優化的前提。至此,我們介紹了乙個最簡單的神經網路的結構。下圖就是該網路的總體結構。

深度學習 梯度下降和反向傳播

引用知乎上的乙個回答 那麼導數的本質是什麼?就是變化率唄,例如小王今年賣了100頭豬,去年90頭,前年80頭,也就是說每年增加10頭,這就是變化率,完整點就是說10頭 年,是有單位的,也就是說導數為10,說白點就是自變數單位變化量的基礎上因變數的變化量,自變數就是年份,單位為年,因變數為豬的數量,年...

pytorch 梯度下降與反向傳播

在模型訓練中,損失函式用來衡量 值與真實值之間的誤差,數值越小表示誤差越小。乙個常見的選擇是平方函式。它在評估索引為 i 的樣本誤差的表示式為 可能有人想問這裡為什麼要除以1 2,其實有沒有1 2對於損失函式來說效果是一樣的,加上1 2是為了求導方便 把平方求導的係數變成1 批量樣本的損失函式是單個...

反向傳播以及梯度下降法

反向傳播 從後向前,逐層求損失函式對每層神經元引數的偏導數,迭代更新所有引數。我們訓練網路的目的就是不斷優化引數,尋找最小的損失函式,我們通過梯度下降函式來實現這個目標 乙個函式沿梯度方向下降最快 初始化引數w為5,學習率為0.2,則 1次 引數w 5 5 0.2 2 5 2 2.6 2次 引數w ...