3.5 梯度校验-机器学习笔记-斯坦福吴恩达教授
梯度校驗(Gradient Descent)
通常,直接使用BP算法可能會出現許多 bug,因此,需要使用稱為**梯度校驗(Gradient Checking)**的手段。我們知道, J(Θ)J(Θ)J(Θ) 在 ΘΘΘ 處的倒數 ddΘJ(Θ)\frac d{dΘ}J(Θ)dΘd?J(Θ) 為該點的斜率,如下圖藍色線段所示:
我們可以在點 ΘΘΘ 附近的小區間 [Θ??,Θ+?](?足夠小)[Θ??,Θ+?] ( ? 足夠小)[Θ??,Θ+?](?足夠小),構造下圖所示的紅色直角三角形:
則斜邊的斜率可以近似等于藍色線段的斜率,亦即,可以通過求取紅色斜邊的斜率來近似 ddΘJ(Θ)\frac d{dΘ}J(Θ)dΘd?J(Θ) :
ddΘJ(Θ)≈J(Θ+?)?J(Θ??)2?\frac d{dΘ}J(Θ)≈\frac{J(Θ+?)?J(Θ??)}{2?}dΘd?J(Θ)≈2?J(Θ+?)?J(Θ??)?
通常, ??? 取較小值,如 0.01 。
包含有梯度校驗的 BP 算法如下:
首先由反向傳播算法獲得展開的 DVec :
DVec=[D(1),D(2),D(3),...D(n)]DVec=[D^{(1)},D^{(2)},D^{(3)},...D^{(n)}]DVec=[D(1),D(2),D(3),...D(n)]
計算梯度近似 gradApproxgrad\ Approxgrad?Approx , θjθ_jθj? 是 ΘjΘ^jΘj 的展開:
??θjJ(θ)≈J(θ1,…,θj+?,…,θn)?J(θ1,…,θj??,…,θn)2?,forj=1tongradApprox=[??θ1J(θ),??θ2J(θ),...,??θnJ(θ)]\frac ?{?θ_j}J(θ)≈\frac {J(θ_1,…,θ_j+?,…,θ_n)?J(θ_1,…,θ_j??,…,θ_n)}{2?},for\ j=1\ to\ n\ gradApprox=[\frac ?{?θ_1}J(θ),\frac ?{?θ_2}J(θ),...,\frac ?{?θ_n}J(θ)]?θj???J(θ)≈2?J(θ1?,…,θj?+?,…,θn?)?J(θ1?,…,θj???,…,θn?)?,for?j=1?to?n?gradApprox=[?θ1???J(θ),?θ2???J(θ),...,?θn???J(θ)]
比較 gradApproxgradApproxgradApprox 與 DVecDVecDVec 的相似程度(比如可以用歐氏距離):
gradApprox≈DVecgradApprox≈DVecgradApprox≈DVec
如果上式成立,則證明網絡中BP算法有效,此時關閉梯度校驗算法(因為梯度的近似計算效率很慢),繼續網絡的訓練過程。
總結
以上是生活随笔為你收集整理的3.5 梯度校验-机器学习笔记-斯坦福吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.4 参数展开-机器学习笔记-斯坦福吴
- 下一篇: 3.6 权值初始化-机器学习笔记-斯坦福