浅说机器学习中“迭代法”

zouxy09@qq.com

http://blog.csdn.net/zouxy09

首先来点八股文(来自百度百科):迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。

利用迭代算法解决问题,需要做好以下三个方面的工作:

一、确定迭代变量。

在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式。

       所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制。

       在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地重复执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件。

不知大家有没有发现,自从我们进入到机器学习这个领域,迭代就阴魂不散,随处可见,不管哪篇论文,哪个算法,我们都能看到它的影子。那你有没有想过为什么?为什么迭代那么强大呢?那为什么它无处不在?很多常规手段解决不了的问题,迭代一过来就引刃而解了。迭代真得那么神?

为什么使用如此频繁呢?个人理解因为其实无论什么机器学习算法,最终都要求助于计算机解决,它又表现为在特定函数空间按某优化目标去搜索一个解出来。什么意思?我们的目标是让机器去学习和了解这个物理世界,而这个物理世界是随机的,所以我们就需要去猜测,我们对某个事物会有很多猜测,那么哪个猜测最靠谱,那就得有指标去衡量吧,那指标是什么呢?就有误差最小还是性能指标最大吧?那你怎么求它的最小还是最大呢?你说我们有求导,有拉格朗日?是没错,但他们能使用的本质条件是什么?是这些误差函数或者性能函数有解析式的时候。但是世界很多信号都是非平稳的,或者很难知道其统计特性的,这时候就没法得到其准确的解析式了,那这时候怎么找最大或者最小值啊。迭代?什么是迭代?

优化问题,要么求是最大值,要么求最小值,或者说要么从山脚爬上山顶,要么从山顶下坡到山脚。拿爬山也就是求最大值来举例。如果你一开始站在山脚下,一抬头见不到山顶,你怎么知道山顶在哪?你只知道如果我每一步都往高处爬,那么我肯定能爬上山顶。所以你是一步步往上爬,每爬一小段的时候,停下来,看看四周哪个方向上山最快,也就是坡度最陡(也就是性能曲面的梯度了),然后你就沿着这个方向再爬一小段,再停下来观测最快的上山方向,一直这样直到你爬上山顶。这个就是最速上升法(呵呵,标准来说一般在找最小值的时候称最速下降法)。

如果你在山脚,看到了山顶,你就不管三七二十一了,直接就往山顶那个方向不要命的冲,直到到达山顶。这个就是牛顿迭代法。

如果你在山脚开始,每爬一小段,然后下一步的方向你就随便蒙,听天由命,因为你相信,上帝会把你带到山顶的(上帝就是那个操纵概率的手),这个就是随机搜索算法。

好了,当你历经千辛万苦爬上一个山顶的时候,发现还有更高的山顶,但没办法啊,如果想到那个更高的山顶,你就得先下坡,再爬上那个山顶。这时候,有些人就满足了,看到了他想看到的美景,乐于他的局部最大值,不想折腾了。但有些人就不满足,你渴望那种“山顶绝顶我为峰,一览众山小”的心境,所以你就纵身一跳,滚到了山脚,如果你好运,那你就滚到了那个最高山顶的山脚,这时候,你再往上爬,就可以到达最高峰了。这个就是避免陷于局部最大值,寻找全局最大值的算法,叫模拟退火或者冲量等等。

所以个人理解,爬山或者寻找最优值取决了三个因素:

1)每步你走哪个方向;

2)每步你走多远;

3)对从局部最大跳出到达全局最大的要求是否高。

个人感觉这三个因素就构成了不同的优化算法,或者说迭代算法。

其实人生就是一个迭代的过程,每天都在一个新的状态,每天都在不断的更新,慢慢地向你美好的理想靠近。有时候你发现生活很累,感觉成功遥遥无期,那是因为你的收敛速度太慢了;有时候你过于急功近利了,就可能错过了目标,意外的翻过了山头。所以你人生的迭代方向和步伐的选择都非常重要。呵呵。

另外,迭代法对于求解某些运算量大的计算非常有帮组。例如求矩阵的逆?呵呵,在图像领域,矩阵够大吧,那么我们求解矩阵的逆一般用克莱姆法则,即求矩阵的伴随矩阵和它的行列式的比,这个计算量足以让人惊叹了,虽然更快的算法和更快的硬件出现,但对于实时性要求比较高的程序来说,这个速度是比较难接受的。但是迭代却会让你很爽,因为这一次的计算结果用到的上次的结果,例如第n+1次用到第n次求的逆,这样就不需要再第n+1时刻,重新计算n+1维的方阵的逆(呵呵,可以这样理解)。例如你要一栋100层的大楼,那么你直接在一座99层的楼上加一层总比你另开炉灶,在一片空地上盖100层的楼要快多了。这个就像什么序贯迭代法啊什么的,呵呵。

迭代法是个很有内涵的东西,就我这么粗浅苍白的语言很难表达他的宏厚和豁达,只有在茫茫的知识海中不断与其相遇、相识、相知和相爱!

浅说机器学习中“迭代法”相关推荐

  1. 机器学习中的数学——牛顿迭代法(Newton‘s Method)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  2. 机器学习中的梯度下降法

    1. 机器学习中为什么需要梯度下降 梯度下降是机器学习中常见优化算法之一,梯度下降法有以下几个作用: (1)梯度下降是迭代法的一种,可以用于求解最小二乘问题. (2)在求解机器学习算法的模型参数,即无 ...

  3. 机器学习中的优化算法!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 在机器学习中,有很 ...

  4. 机器学习中的最优化算法总结

    https://www.toutiao.com/a6672189997212238348/ 导言 对于几乎所有机器学习算法,无论是有监督学习.无监督学习,还是强化学习,最后一般都归结为求解最优化问题. ...

  5. 机器学习中的数学——拟牛顿法(Quasi-Newton Methods)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  6. 机器学习中的数学——Adam(Adaptive Moments)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  7. 机器学习中的数学——粒子群算法(Particle Swarm Optimization, PSO)(三):改进的粒子群算法

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  8. 机器学习中的数学——模拟退火算法(Simulated Annealing,SA)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

  9. 机器学习中的数学——遗传算法(Genetic Algorithm)

    分类目录:<机器学习中的数学>总目录 相关文章: · 梯度下降法(Gradient Descent) · 随机梯度下降(Stochastic Gradient Descent, SGD) ...

最新文章

  1. RabbitMQ中RPC的实现及其通信机制
  2. 算法----- 给定一颗二叉树,找到二叉树上任意两个节点之间的距离(Java版本)
  3. 探讨增强现实(AR)基于模型的追踪技术
  4. Spring Boot由jar包转成war包
  5. 单例模式双重校验锁_被面试官虐过之后,他轻蔑的问我:你还说你了解单例模式吗?...
  6. springmvc atomikos mysql数据源_springboot+atomikos+多数据源管理事务(mysql 8.0)
  7. 详细讲解设计跳表的三个步骤(查找、插入、删除)
  8. python中location_使用python请求模块时的LocationValueError
  9. lrzsz linux 安装目录,Linux下lrzsz软件的安装与使用
  10. String类型转换的三种方法分析
  11. 解决CentOS6.x或RedHat Linux 6.x版本不能通过System eth0以固定IP访问外网的问题
  12. 2021牛客暑期多校训练营1, 签到题DFBG
  13. nagios 监控内存和CPU,磁盘等使用情况
  14. Poj 2992 Divisors(算数基本定理素数因子个数)
  15. python有几种循环语句_[14] Python循环语句(一)
  16. html5画布正五角星,canvas 正五角星如何画
  17. Docker创始人兼CTO宣布离职;特斯拉被爆处于破产边缘;iOS更新,支持京沪地铁卡;谷歌安卓侵权案面临88亿美元赔款丨Q新闻...
  18. 如何将图片转换成JPG图片格式?如何将照片转换为jpg?
  19. 汇编“从键盘输入一串字符,分别统计其中字母、数字和其
  20. 华为数通笔记-ISIS基础

热门文章

  1. Linux中执行shell脚本的5种方法总结
  2. 微信小程序服务器支付sdk,微信小程序之支付后如何调用SDK的异步通知
  3. c语言单链表_突破C语言难点之单链表?一绘图即可
  4. 最短路(hdu4725)(建点巧妙)
  5. Ubuntu14.04安装Matlab R2013b
  6. 工程项目成本/进度综合控制方法及应用
  7. 《Java多线程编程核心技术》读后感(十四)
  8. C语言中fgetc函数返回值为什么是int?
  9. 织梦使用if判断某个字段是否为空
  10. Fragment生命周期及其使用