3.5 梯度校验-机器学习笔记-斯坦福吴恩达教授

梯度校验(Gradient Descent)

通常,直接使用BP算法可能会出现许多 bug,因此,需要使用称为**梯度校验(Gradient Checking)**的手段。我们知道, J(Θ)J(Θ)ΘΘ 处的倒数 ddΘJ(Θ)\frac d{dΘ}J(Θ) 为该点的斜率,如下图蓝色线段所示:
3.5 梯度校验-机器学习笔记-斯坦福吴恩达教授
我们可以在点 ΘΘ 附近的小区间 [Θϵ,Θ+ϵ]ϵ[Θ−ϵ,Θ+ϵ] ( ϵ 足够小),构造下图所示的红色直角三角形:
3.5 梯度校验-机器学习笔记-斯坦福吴恩达教授
则斜边的斜率可以近似等于蓝色线段的斜率,亦即,可以通过求取红色斜边的斜率来近似 ddΘJ(Θ)\frac d{dΘ}J(Θ)

ddΘJ(Θ)J(Θ+ϵ)J(Θϵ)2ϵ\frac d{dΘ}J(Θ)≈\frac{J(Θ+ϵ)−J(Θ−ϵ)}{2ϵ}

通常, ϵϵ 取较小值,如 0.01 。

包含有梯度校验的 BP 算法如下:

  1. 首先由反向传播算法获得展开的 DVec :
    DVec=[D(1),D(2),D(3),...D(n)]DVec=[D^{(1)},D^{(2)},D^{(3)},...D^{(n)}]

  2. 计算梯度近似 grad Approxgrad\ Approxθjθ_jΘjΘ^j 的展开:
    θjJ(θ)J(θ1,,θj+ϵ,,θn)J(θ1,,θjϵ,,θn)2ϵ,for j=1 to n gradApprox=[θ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(θ)]

  3. 比较 gradApproxgradApproxDVecDVec 的相似程度(比如可以用欧氏距离):
    gradApproxDVecgradApprox≈DVec

如果上式成立,则证明网络中BP算法有效,此时关闭梯度校验算法(因为梯度的近似计算效率很慢),继续网络的训练过程。