1700536627
从代码中可以看出,算法最后有两步相同的操作,像是在对一个数进行某种迭代。而其中的第二步被注释掉了,似乎是因为和性能损耗相比,对结果的二次迭代意义不大,这也说明一次迭代的结果在误差允许范围内。这些特性让人想到了牛顿法。
1700536628
1700536629
1700536630
1700536631
1700536632
1700536633
牛顿法是一种常用的求方程数值解的方法,具体如下:若在某个区间I中,f(x)连续可导,且有唯一零点x0,则任取x1∈I,定义数列,则有。用牛顿法进行迭代,可以完成对解的任意精度的数值逼近。下面尝试写出的迭代式,首先令,则有
1700536634
1700536635
1700536636
1700536637
1700536638
(7.26)
1700536639
1700536640
1700536641
将xn+1,xn替换成y,将替换成x2,可以发现和算法的最后一步是吻合的。由此可知,雷神之锤中的平方根速算法确实采用了牛顿法。
1700536642
1700536643
1700536644
1700536645
1700536647
百面机器学习:算法工程师带你去面试 04 梯度验证
1700536648
1700536649
1700536650
1700536651
场景描述
1700536652
1700536653
在用梯度下降法求解优化问题时,最重要的操作就是计算目标函数的梯度。对于一些比较复杂的机器学习模型,如深度神经网络,目标函数的梯度公式也非常复杂,很容易写错。因此,在实际应用中,写出计算梯度的代码之后,通常需要验证自己写的代码是否正确。
1700536654
1700536655
知识点
1700536656
1700536657
微积分,线性代数
1700536658
1700536659
问题 如何验证求目标函数梯度功能的正确性?
1700536660
1700536661
难度:★★☆☆☆
1700536662
1700536663
1700536664
给定优化问题,假设已经用代码实现了求目标函数值和求目标函数梯度的功能。请问,如何利用求目标函数值的功能来验证求目标函数梯度的功能是否正确?
1700536665
1700536666
分析与解答
1700536667
1700536668
根据梯度的定义,目标函数的梯度为
1700536669
1700536670
1700536671
,
1700536672
1700536673
(7.27)
1700536674
1700536675
其中对任意的i=1,2,…,n。梯度的第i个元素的定义为
1700536676
[
上一页 ]
[ :1.700536627e+09 ]
[
下一页 ]