非线性最小二乘最优化

iter      cost      cost_change  |gradient|   |step|    tr_ratio  tr_radius  ls_iter  iter_time  total_time
   0  1.012596e+11    0.00e+00    4.05e+09   0.00e+00   0.00e+00  1.00e+04        0    7.63e-04    8.70e-04
  • 最小二乘基本思想
  • Ceres库与最小二乘优化
    给定一组观测数据,使构建的模型的输出值与观测值的残差的平方最小
    残差指的是一个,代价函数指的是一系列的残差之和。
    不同残差正负可能抵消,使用绝对值计算不方便,采用平方可以更好地计算

损失函数中有观测值和损失的计算方式

  • 最优化步长的选择方法
    进行拟合时一般会先构建对应的数学模型
    信任区域法:定区间,取极值
    信赖域方法利用一个模型函数(通常是二次的)在被称为信赖域的搜索空间的子集上近似目标函数。如果模型函数成功地使真实目标函数最小化,则信任域被扩展;反之,则信任域被收缩
    利用信赖域算法求解无约束的非线性最小二乘问题_含matlab代码
    % 流程图中的f为原始函数,对应代码中的Diff
    % 流程图F指的是残差,对应代码中的f
    非线性最小二乘最优化_第1张图片
    a.信赖域算法是在一个球形区域搜索,在这个球形区域的中心点进行二阶泰勒近似
    泰勒二阶展开
    最优化的目标是使得fai(x(k))-f(x(k))最小
    b.二阶泰勒近似其实就是一个二次规划问题,可以直接求取极值,得到了子问题的最优解
    matlab中进行二次规划的代码
    非线性最小二乘最优化_第2张图片
    线性搜索法:定方向,定步长
    首先找到一个下降方向,目标函数将沿该下降方向减少,然后计算一个步长,该步长决定沿该方向移动多远。下降方向可以用多种方法计算,如梯度下降法、牛顿法和拟牛顿法。步长可以精确或不精确地确定。
  • 最优化方法
    最速下降法:收敛速度慢
    牛顿法:移动方向不一定是下降方向
    L-M法(Levenberg-Marquardt法)莱文伯格·马夸特:全局优化,收敛速度快,相比牛顿法,公式中多了一个阻尼系数(大于1),在迭代过程中对阻尼系数进行更新。
    非线性最小二乘最优化_第3张图片
    LM算法流程图为:
    其中,fk为原始函数,F(x(k+1))为残差值

非线性最小二乘最优化_第4张图片

  • 总结
    信赖域法中计算hessian的严格数学表达式,LM算法中用雅可比的转置乘上雅可比来近似hessian矩阵
    信赖域设定区域,通过二次规划求极值,通过该极值判断损失增长还是减少,更新区域大小,当残差变化小于阈值,得到最优值。
    LM算法通过正规方程计算出的d,判断对损失增长还是减少情况,更新阻尼系数,当步长变化满足小于阈值,则认为收敛,得到最优值
    信赖域方法在姿势估计中得到的精度和Levenberg_Marquardt算法不相上下,但是收敛速度却不如LM
  • 参考文献
    LM算法的matlab代码及流程图
    Levenberg-Marquardt算法浅谈

你可能感兴趣的:(机器学习,骨架检测)