1. 关于牛顿法的疑惑
为什么这里使用到了海参矩阵就可以快速的收敛呢?
原因:
1. 当一个位置斜率变化较大时,说明海参矩阵的值比较大(注意是斜率变化,不是函数值变化),那相应的inv(H)的值就会比较小,这个时候步进会慢些
2. 当一个位置比较平缓,斜率变化较小时,说明H矩阵值小,相应的inv(H)会比较大,步进会比较大
上述两点,相对于梯度下降法来说,尤其好理解的是,平缓区域的时候,梯度下降法步进会很慢,收敛也就相应的比较慢,但是牛顿法却很快
2. 关于初始值的疑惑
为什么拟合一定要有一个初始值,既然迭代一定会逼近一个极值的话,那不是不需要一个初始值,随便指定一个值不就好了?
个人理解,如果有错误,烦请指正,谢谢~~
其实,如果是求一个函数模型的极值点的话,是可以的,为什么,因为你选择的点一定能带入公式得到一个值(不说那些奇异的函数,比如 xxx/a,然后给a一个0的初始值,这里仅供理解),然后逐步迭代就好了。
但是拟合的话,就不同了
咦?不对呀,写着写着突然感觉不对,因为最小二乘拟合的话,也是一个函数呀
比如需要拟合的函数是
那对于这个函数 f 来说,不一样的可以随意估计一个初始值然后让它迭代收敛吗?
上面需要预估4个参数,A、s、t0、u
是不是自己在实现过程中,预估参数太多导致摁下葫芦起了瓢,才导致的不能够随意指定初始值的?
测试步骤:
1. 按照A、s、t0、u生成一个标准的曲线
2. 将标准曲线的值,和生成曲线的A、s、t0输入到LM算法中,u设置一个别的值
结果:
无法预估出结果,为什么?