与误差函数的一阶导数情况一样,我们可以使用有限差来得到精度受数值计算的精度限制的二阶导数。如果我们对每对可能的权值施加一个扰动,那么我们得到
∂2E∂wji∂wlk=14ϵ2{E(wji+ϵ,wlk+ϵ)−E(wji+ϵ,wlk−ϵ)−E(wji−ϵ,wlk+ϵ)+E(wji−ϵ,wlk−ϵ)}+O(ϵ2)
同样的,通过使用对称的中心差,我们确保残留误差是O(ϵ2)而不是O(ϵ)。因为Hessian矩阵有W2个元素,且每个元素的计算四次复杂度为O(W)的前向传播(每个模式)。因此我们看到这种方法计算完整的Hessian矩阵需要O(W3)次操 作。所以,虽然在实际应用中它对于验证反向传播算法的正确性很有用,但是这个方法的计算性质很差。
一个更加高效的数值导数的方法是将中心差应用于可以通过反向传播方法计算的一阶导数。得到
∂2E∂wji∂wlk=12ϵ{∂E∂wji(wlk+ϵ)−∂E∂wji(wln−ϵ)}+O(ϵ2)
因为只有W个权值需要加上扰动,且梯度可以通过O(W)次计算得到,所以这种方法可以通过O(W2)次操作得到Hessian矩阵。