首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

柴夥说算法篇(1)-迭代法

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

--题记

假设站在山脚下,目标是爬到山顶。如果把爬山的过程细化成很多步,那么每一步需要做的两件事情是:确定行进的方向和距离。确定好行进的方向和距离的一个原则是:每行进一步后,更接近山顶。当然,如果你的全局观足够好,这个时候每步行进的方向就能够选择地更好,能够更快地到达山顶(这里的“快”只考虑行进的总步数,并不考虑行进的总距离)。当然,由于视野或者能力的限制,最终到达的是你的目力所及的山顶,可能并不是附近最高的山顶。还有,你的初始位置也决定着到达山顶的难度和速度。

将上述内容和迭代算法做类比。迭代算法中,每次迭代的时候需要考虑增量的方向和大小(行进的方向和距离),而每次迭代后的函数值更接近目标值(山顶),如梯度上升法(gradient ascent)以及与之对应的求解线性方程组的最速下降法(gradient descent),最大熵模型学习的改进的迭代尺度法(improved iterative scaling, IIS)等等。在有的算法中,如Newton迭代法,迭代的初值(爬山时所处的初始位置)对迭代的影响巨大。只爬到目力所及的山顶(局部最优解),没有爬到最高的山顶(全局最优解)。共轭梯度法(全局观足够好)比最速下降法的收敛速度更快。

后记:

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

2. 文中使用的图截图自《The Heros in My Heart》一书扉页,谨以此表达对这本书的厚爱。

参考资料:

[1] https://en.wikipedia.org/wiki/Gradient_descent

[2] https://en.wikipedia.org/wiki/Conjugate_gradient_method

[3] 李航,统计学习方法,p88-91,清华大学出版社,2012年

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180512G1U6V200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券