2.1.5 梯度检验
梯度的數(shù)值逼近
當(dāng)實(shí)施反向傳播的時(shí)候,有一個(gè)測試叫做梯度檢驗(yàn),它的作用是保證反向傳播可以正確實(shí)施。在寫好反向傳播公式的時(shí)候,你沒有辦法保證執(zhí)行反向傳播的所有細(xì)節(jié)全部都是正確的。為了實(shí)現(xiàn)逐步梯度檢驗(yàn),我們先來說一下如何對梯度做數(shù)值逼近。
如圖所示,我們只需記住,雙邊檢測誤差更低,精度更高。
那么為什么是平方誤差關(guān)系呢,這里用到了泰勒展開式,做差所得,我們先來復(fù)習(xí)一下泰勒展開式的知識
然后這個(gè)公式的推導(dǎo)過程如下:
梯度檢驗(yàn)
下面我們介紹一下如何用梯度檢驗(yàn)來檢驗(yàn)反向傳播實(shí)施是否正確。
如圖所示,為了執(zhí)行梯度檢驗(yàn),我們首先要把所有參數(shù)轉(zhuǎn)化成一個(gè)巨大的向量數(shù)據(jù)。
轉(zhuǎn)換完之后那么現(xiàn)在的問題是dθ,或者說是代價(jià)函數(shù)J的梯度和代價(jià)函數(shù)之間有什么關(guān)系。而這,就是實(shí)施梯度檢驗(yàn)的過程。英語里通常稱為grad check。
如圖所示,為了執(zhí)行梯度檢驗(yàn),你要做的就是使用循環(huán)操作。
我們執(zhí)行雙邊誤差檢測。由上節(jié)課的知識我們應(yīng)該知道,這個(gè)雙邊誤差應(yīng)該近似于dθ。
那么如何定義兩個(gè)向量是否彼此接近呢?我們一般使用二范數(shù)來進(jìn)行度量。最后我們將向量長度做歸一化處理,得到上圖中最下面的公式。如果我們得到的這個(gè)誤差在10的負(fù)7次方的數(shù)量級,那么非常好,如果這個(gè)誤差比較大,那么我們就要重新檢驗(yàn)了。
關(guān)于梯度檢驗(yàn)實(shí)現(xiàn)的注記
這里我們談一下在神經(jīng)網(wǎng)絡(luò)中實(shí)現(xiàn)梯度檢驗(yàn)的注意技巧和注意事項(xiàng)
最后的一點(diǎn)說明一下,最好在反復(fù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)之后再進(jìn)行梯度檢驗(yàn)。
吳教主深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)課程總綱
總結(jié)
以上是生活随笔為你收集整理的2.1.5 梯度检验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.1.4 对梯度消失和梯度爆炸的近似解
- 下一篇: 2.2.1 mini-batch