1.視頻網站:mooc慕課https://mooc.study.163.com/university/deeplearning_ai#/c
2.詳細筆記網站(中文):http://www.ai-start.com/dl2017/
3.github課件+作業+答案:https://github.com/stormstone/deeplearning.ai
1.12 梯度的數值逼近 Numerical approximation of gradients
在實施反向傳播backprop時,有一個測試叫做梯度檢驗,它的作用是確保backprop正確實施。因爲有時候你雖然寫下了反向傳播方程式,卻不能100%確定執行backprop的所有細節都是正確的。
梯度檢驗就是爲了驗證我們的梯度下降算法是否正確,當驗證正確後,進行訓練時
記得關閉它!
爲了逐漸實現梯度檢驗,本節課我們首先說說如何計算梯度的數值逼近。下節課,我們將討論如何在backprop中執行梯度檢驗,以確保backprop正確實施。
觀察上圖。
這是f(θ)=θ3函數。橫軸上有3個座標,θ−ϵ=0.99,θ=1和θ+ϵ=1.01,ϵ=0.01。
1\ 雙邊誤差
按照上圖,更準確的梯度預估,我們會利用圖中大三角形的高和寬(藍色線)的比值,這樣更接近於的θ導數。(逼近誤差小)
這個大三角形同時考慮(包含)了兩個綠色小三角形。所以我們得到的不是一個單邊公差(one sided difference,即 θ 到 θ+ϵ 之間誤差)而是一個雙邊公差(即 θ−ϵ 到 θ+ϵ 之間誤差)。
觀察上圖中綠色三角形
- 高,f(θ+ϵ)−f(θ−ϵ)
- 寬,2ϵ
因爲f(θ)=θ3,所以高寬比值2ϵf(θ+ϵ)−f(θ−ϵ)=2∗0.01(1.01)3−(0.99)3=3.0001
而f(θ)導數g(θ)=3θ2,當θ=1時候,g(θ)=3。
可以發現高寬比值2ϵf(θ+ϵ)−f(θ−ϵ)非常接近導數g(θ),逼近誤差approximation error爲0.0001。
2\ 單邊誤差
我們可以看一下,如果只用f(θ+ϵ)和f(θ)之間的小三角形的高寬比來預估θ導數,ϵf(θ+ϵ)−f(θ)=0.01(1.01)3−(1)3=3.0301。
此時逼近誤差爲0.0301,比雙邊誤差要大,證明使用雙邊誤差的方法更逼近導數。
在微積分中,f(θ)=θ3導數的正式定義是
f′(θ)=ϵ→0lim2ϵf(θ+ϵ)−f(θ−ϵ)
對於一個非零的ϵ,它的逼近誤差可以寫成O(ϵ2),其實是一些常量乘以ϵ2,常量有時是1。
如果使用逼近誤差O(ϵ),當ϵ<1時候 ,ϵ比ϵ2大很多。
在執行梯度檢驗時,我們使用雙邊誤差,即2ϵf(θ+ϵ)−f(θ−ϵ),而不使用單邊誤差,因爲它不夠準確。
本節講了如何使用雙邊誤差來判斷函數g(θ)是否正確實現了函數f的偏導,下節我們可以使用這個方法來檢驗反向傳播是否得以正確實施。