【導語】本文對梯度函數(shù)和損失函數(shù)間的關(guān)系進行了介紹,并通過可視化方式進行了詳細展示。另外,作者對三種常見的損失函數(shù)和兩種常用的激活函數(shù)也進行了介紹和可視化。
你需要掌握關(guān)于神經(jīng)網(wǎng)絡(luò)訓練的基礎(chǔ)知識。本文嘗試通過可視化方法,對損失函數(shù)、梯度下降和反向傳播之間的關(guān)系進行介紹。
損失函數(shù)和梯度下降之間的關(guān)系
為了對梯度下降過程進行可視化,我們先來看一個簡單的情況:假設(shè)神經(jīng)網(wǎng)絡(luò)的最后一個節(jié)點輸出一個權(quán)重數(shù)w,該網(wǎng)絡(luò)的目標值是0。在這種情況下,網(wǎng)絡(luò)所使用的損失函數(shù)為均方誤差(MSE)。
當w大于0時,MSE的導數(shù) dy/dw 值為正。dy/dw 為正的原因可以解釋為,w中的正方向變化將導致y的正方向變化。為了減少損失值,需要在w的負方向上進行如下變換:
當w小于0時,MSE的導數(shù) dy/dw 值為負,這意味著w中的正方向變化將導致y的負方向變化。 為了減少損失,需要在w的正方向上做如下變換:
因此,權(quán)重更新的公式如下:
其中 learning_rate 是一個常量,用于調(diào)節(jié)每次更新的導數(shù)的百分比。調(diào)整 Learning_rate 值主要是用于防止w更新步伐太小或太大,或者避免梯度爆炸(梯度太大)或梯度消失的問題(梯度太?。?/p>
下圖展示了一個更長且更貼近實際的計算過程,在該計算過程中,需要使用sigmoid激活函數(shù)對權(quán)重進行處理。為了更新權(quán)重w1,相對于w1的損失函數(shù)的導數(shù)可以以如下的方式得到:
損失函數(shù)對權(quán)重的求導過程
從上面闡釋的步驟可以看出,神經(jīng)網(wǎng)絡(luò)中的權(quán)重由損失函數(shù)的導數(shù)而不是損失函數(shù)本身來進行更新或反向傳播。因此,損失函數(shù)本身對反向傳播并沒有影響。下面對各類損失函數(shù)進行了展示:
L2損失函數(shù)
MSE(L2損失)的導數(shù)更新的步長幅度為2w。 當w遠離目標值0時,MSE導數(shù)的步長幅度變化有助于向w反向傳播更大的步長,當w更接近目標值0時,該變化使得向w進行反向傳播的步長變小。
L1損失函數(shù)
MAE(L1損失)的導數(shù)是值為1或負1的常數(shù),這可能不是理想的區(qū)分w與目標值之間距離的方式。
交叉熵損失函數(shù)
交叉熵損失函數(shù)中w的范圍是0和1之間。當w接近1時,交叉熵減少到0。交叉熵的導數(shù)是 -1/w。
Sigmoid激活函數(shù)
Sigmoid函數(shù)的導數(shù)值域范圍在0到0.25之間。 sigmoid函數(shù)導數(shù)的多個乘積可能會得到一個接近于0的非常小的數(shù)字,這會使反向傳播失效。這類問題常被稱為梯度消失。
Relu激活函數(shù)
Relu是一個較好的激活函數(shù),其導數(shù)為1或0,在反向傳播中使網(wǎng)絡(luò)持續(xù)更新權(quán)重或不對權(quán)重進行更新。
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64897 -
梯度
+關(guān)注
關(guān)注
0文章
30瀏覽量
10495 -
可視化
+關(guān)注
關(guān)注
1文章
1264瀏覽量
21868
原文標題:可視化深入理解損失函數(shù)與梯度下降 | 技術(shù)頭條
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
常見的幾種可視化介紹
Keras可視化神經(jīng)網(wǎng)絡(luò)架構(gòu)的4種方法
keras可視化介紹
兩種標準信號之間的函數(shù)變換
基于面繪制與體繪制的CT可視化實現(xiàn)方法
函數(shù)的可視化與Matlab作

Python的三種函數(shù)應(yīng)用及代碼

ReLU到Sinc的26種神經(jīng)網(wǎng)絡(luò)激活函數(shù)可視化大盤點

函數(shù)宏的三種封裝方式
CNN的三種可視化方法介紹
詳解十種激活函數(shù)的優(yōu)缺點

評論