@iStarLee
2019-03-30T14:51:22.000000Z
字数 1783
阅读 586
robotics-algorithm
普通最小二乘法的推导证明
线性代数之矩阵求导
最小二乘法解的矩阵形式推导
不方便直接用非线性最小二乘方法求解的问题,使用迭代方式求解。
Newton's method in optimization wiki
Newton Method如何通俗易懂地讲解牛顿迭代法,牛顿法有一个问题就是初始点的选择必须满足一定条件。
python实现牛顿法求解求解最小值(包括拟牛顿法)
Gradient descent wiki
实践例子,梯度下降法及其Python实现,根据理解我实现了随机梯度下降法,并和批量梯度下降法做了比较。
梯度下降法,牛顿法,高斯-牛顿迭代法,附代码实现
批量梯度下降:
优点:全局最优解;易于并行实现;总体迭代次数不多
缺点:当样本数目很多时,训练过程会很慢,每次迭代需要耗费大量的时间。随机梯度下降(SGD):
优点:训练速度快,每次迭代计算量不大
缺点:准确度下降,并不是全局最优;不易于并行实现;总体迭代次数比较多。
这里的下降步长被简化成了一个固定值(学习率),步长的选取是line search算法决定的。
见课本。
Armijo condition事实上是下面的Wolfe condition的第一个条件。
这个里面有一些代码细节没有看懂!!存疑先留着!!
Wolfe condition步长计算参考文章, 是下降方向,这篇文章讲得太赞了!一共有两个条件。
这个条件的意思是,除了要保证目标函数的要有所下降之外,还要保证下降的程度要和步长 成正比,这一点也可以从下图中看出来,可接受的 必须要使得迭代点的函数值在虚线以下。这里注意,在实际中 一般取一个较小的值,比如 。
但光这一个条件还不能保证迭代点的正确收敛,因为从图中可以看出当 α 取很小的值时,这个条件就一定是满足的,因此,另一个条件从曲率(斜率)的角度进行了约束(curvature condition):
其中 。这个条件的意思是,在下一个迭代点处的斜率一定要大于在当前点()处的斜率。因为我们可以看出来,上面这个条件的左面是以 为变量的函数在下一个迭代点出的导数,而右边则是其在当前迭代点的导数。上面的这个条件可以从下图中进行理解。
其实也可以这样理解,当某个 的取值使得在该点 的导数很小(绝对值很大)时,就表示目标函数还有下降的可能因此不能在这儿停,知道导数变大趋于0,甚至变成正值(在往上走了),说明可能就要停下来了。
Gauss–Newton algorithm wiki
Gauss-Newton推导
the Gauss–Newton algorithm can only be used to minimize a sum of squared function values, but it has the advantage that second derivatives, which can be challenging to compute, are not required.
高斯 - 牛顿算法只能用于最小化平方函数值的总和,但它具有的优点是不需要可能难以计算的二阶导数。