zoukankan      html  css  js  c++  java
  • 柴夥说算法(1)-迭代法

    迭代算法是计算机解决问题的一种基本方法。
                                                                                                 --题记

           假设站在山脚下,目标是爬到山顶。如果把爬山的过程细化成很多步,那么每一步需要做的两件事情是:确定行进的方向和距离。确定好行进的方向和距离的一个原则是:每行进一步后,更接近山顶。当然,如果你的全局观足够好,这个时候每步行进的方向就能够选择地更好,能够更快地到达山顶(这里的“快”只考虑行进的总步数,并不考虑行进的总距离)。当然,由于视野或者能力的限制,最终到达的是你的目力所及的山顶,可能并不是附近最高的山顶。还有,你的初始位置也决定着到达山顶的难度和速度。
           将上述内容和迭代算法做类比。迭代算法中,每次迭代的时候需要考虑增量的方向和大小(行进的方向和距离),而每次迭代后的函数值更接近目标值(山顶),如梯度上升法(gradient ascent)以及与之对应的求解线性方程组的最速下降法(gradient descent),最大熵模型学习的改进的迭代尺度法(improved iterative scaling, IIS)等等。在有的算法中,如Newton迭代法,迭代的初值(爬山时所处的初始位置)对迭代的影响巨大。只爬到目力所及的山顶(局部最优解),没有爬到最高的山顶(全局最优解)。共轭梯度法(全局观足够好)比最速下降法的收敛速度更快。

           后记:

           1. 给自己挖个坑,初步计划每周更新一篇,更新的篇数以自己学到的内容为基础,希望这个系列做的时间能够长一些。

    参考资料: 
    [1] https://en.wikipedia.org/wiki/Gradient_descent
    [2] https://en.wikipedia.org/wiki/Conjugate_gradient_method
    [3] 李航,统计学习方法,p88-91,清华大学出版社,2012年

  • 相关阅读:
    点评cat系列-服务器开发环境部署
    [FreeRTOS].FreeRTOS CortexM3 M4中断优先级设置总结
    [FreeRTOS]FreeRTOS使用
    [Ethernet].以太网总线详解
    [USB].USB总线详解
    [CAN].CAN总线详解
    [LIN].LIN总线详解
    [SDIO].SDIO总线详解
    [eMMC]eMMC读写性能测试
    [通信]Linux User层和Kernel层常用的通信方式
  • 原文地址:https://www.cnblogs.com/liuyc/p/9216333.html
Copyright © 2011-2022 走看看