梯度下降: 是一種優化方法,網路更新引數的公式為:θ=θ−η×∇(θ).j(θ) ,其中η是學習率,∇(θ).j(θ)是損失函式j(θ)的梯度。用於將代價函式降到極小值的最快的一種方式。
梯度下降只是神經網路眾多優化演算法中的一種。其他的還有如adam、momentum等。講解很好的優化演算法文章:
自己待回頭總結下。
反向傳播:計算的是梯度,只是從後往前。衡量神經網路中各層的權重引數對於誤差影響大小。
「前向傳播」求損失,「反向傳播」回傳誤差,反向傳播根據誤差訊號(梯度(偏導值))修正更新每層的權重。
反向傳播的思想其實就是,對於每乙個訓練例項,將它傳入神經網路,計算它的輸出;然後測量網路的輸出誤差(即期望輸出和實際輸出之間的差異),並計算出各層中,上乙個隱藏層中各神經元為該層輸出結果貢獻了多少的誤差;利用引數更新公式w'=w-學習率*梯度。反覆一直從後一層計算到前一層,直到演算法到達初始的輸入層為止。此反向傳遞過程有效地測量網路中所有連線權重的誤差梯度,最後通過在每乙個隱藏層中應用梯度下降演算法來優化該層的引數(反向傳播演算法的名稱也因此而來)。
具體流程:
計算出輸出與標籤間的損失函式值,然後計算其相對於每個神經元的梯度,根據梯度方向更新權值。
(1)將訓練集資料輸入到nn的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是nn的前向傳播過程;
(2)由於nn的輸出結果與實際結果有誤差,則計算估計值與實際值之間的誤差,並將該誤差從輸出層向隱藏層反向傳播,直至傳播到輸入層;(反向傳播)
(3)在反向傳播的過程中,根據誤差調整各種引數的值;不斷迭代上述過程,直至收斂。(更新引數)
反向傳播也可以看成是儲存值的鏈式求導(cs224n裡,老爺子的概述)
啟用函式(又叫傳遞函式):以分類為例,就是對wx+b,再外層套了的乙個函式,如sigmoid.(將wx+b的值進一步對映到0,1之間)。將神經網路每層的輸出結果變得非線性化,這樣使得神經網路才能擬合任意函式。另乙個意義:它的存在可以過濾掉一些非重要的資訊(將值要到0),放大更重要的訊號(值變得相對更大).
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 ...
深度學習 梯度下降和反向傳播
引用知乎上的乙個回答 那麼導數的本質是什麼?就是變化率唄,例如小王今年賣了100頭豬,去年90頭,前年80頭,也就是說每年增加10頭,這就是變化率,完整點就是說10頭 年,是有單位的,也就是說導數為10,說白點就是自變數單位變化量的基礎上因變數的變化量,自變數就是年份,單位為年,因變數為豬的數量,年...