当前位置:   article > 正文

以蚁群算法为例,学习智能算法需要注意哪些问题?_使用蚂蚁算法的注意

使用蚂蚁算法的注意

在研究生期间,我当时对一个问题十分怀疑,那就是蚁群算法有什么用,相信很多人或许都对这个问题有过质疑。因为我目前没有见过蚁群算法用在哪个实际问题上过。或许有人参加过公司的一些工作面试,但是很少公司需要你掌握蚁群算法的。我们自己也尝试用蚁群算法解决机器人路径规划问题,其中的弊端我们或许也知道,那就是根本达不到实时性的要求,因为计算复杂度太高了。再就是进化计算所共有的缺点,需要一定的时间来收敛,实际上我们可能并不需要高精度的解。还有就是拿蚁群算法用来解决TSP问题,虽然这个问题来自于实际的生产过程,那就是为PC板打孔的顺序,怎么样的打孔顺序可以最有效。下面这个图可以说是我们课题组整体的一个情况了,理论方面,就是用来解决旅行商问题,实际问题就是用来解决机器人路径规划问题。
在这里插入图片描述
但是我们应该大家都有类似的感觉,就是工作过程中我们用不到我们研究生期间学到的知识。所以我当时决定读博一定要找一个解决实际问题的研究方向。我们都希望自己的研究能够用在实践生产中,能够提高我们的生活水平,这样我们才能够为社会创造更大的价值,我们自身也就能拿到更高的薪水,享受更高质量的生活。于是,我现在转到了深度学习方向,用深度学习的技术解决实际的问题。
在这个过程中,我发现了我对之前的那个问题有了新的认识。这里,我先列出一个提纲,我将要分享什么内容:
1) 先不分析蚁群算法有什么用,先说明蚁群算法想要解决什么问题——组合优化问题
2) 科研过程中的两条主要路径——理论研究和应用,分别对应于科学家和工程师
3) 蚁群算法带给我的东西
4) 我现在对蚁群算法的感受和一些想法

蚁群算法想要解决什么问题?

首先,我说说蚁群算法想要解决什么问题。为什么我不说蚁群算法有什么用呢?实际上我们说蚁群算法就是一个方法,能用来干什么取决我们使用的人,虽然部分也取决于算法本身。蚁群算法好比一把铁锤,你说铁锤能用来干啥?我们可以用铁锤来干很多事情,但是大部分人都只用它来干少数的事情。事实上,假如哪一天你发现用一把铁锤做出了一件别人从来没有干过的事情,你或许也比较成功了。蚁群算法也一样,用来干什么则取决于我们自己。有的人能用一张白纸折出美丽的艺术品,也有人用一张纸画一幅画,也有人有一张纸点燃了一顿美妙的晚餐。这时候,我们就要知道蚁群算法的一般规律了,它可以用来解决什么问题,假如缘木求鱼或许就会浪费我们的时间了。
我们说蚁群算法就是用来解决组合优化问题的。更大的来讲,是优化问题。优化问题是我们生产实践过程中极其重要的一个问题了。我们先来看看连续优化问题,我现在的课题就是属于连续优化问题的范畴。在高中和大学阶段,相信大家都学过导数微分的概念,拿最简单的例子来说,就是求一元二次方程的极值问题。我们就可以使用一阶导数和二阶导数来求这个方程的极大值或极小值。这个问题中导数的概念就特别重要了。但是类似的优化问题就必须要满足可以求导这个条件,也就是可导,更广泛来说就是可微。牛顿也凭借着这个法则建立起了他的科学帝国。说到这里我们只需要记住一点,那就是连续优化是需要满足一定条件的,但是很不幸的是,这个条件在一些问题中并不满足。

在这里插入图片描述

这类问题就是组合优化问题,也可以说是离散优化问题,换句话说是无法求导的。这里我就不分析什么是可以求导什么是不可以求导了。在解决组合优化问题中,有一类就是智能算法,也叫做进化算法,在进化算法中,有一种方法就叫做蚁群算法。现在我们如果知道了蚁群算法,就好比拿着一个工具在背包里,你就可以用它来干一些事情了。然而很不幸,我们有时候并不知道用它可以干什么。于是问题就是:假如你能找到一个事情,你能使用蚁群算法解决它,那么你也就是做出了自己的贡献了,而这也就是我们的任务,需要我们不断去努力的方向。

科技——科研的两条腿:科学和技术,理论与应用

以上就是对第一个问题的解释,蚁群算法是用来解决什么问题的。而在那期间我也顺便解释了什么是科研过程中的一条主要路径——应用方面,就是使用一个算法,一个工具。简单来说就是你知道了一种工具,然后你需要去应用它。而这也就是本文的第二个主题。
另一方面就是如何改良工具或者发明一种新的工具了。还是拿上面的用一张白纸的例子,虽然一张白纸可以用来干很多事情,比如折出一个艺术品以及画画。人类的某个先驱就发现画画的纸不能太粗糙,否则墨水容易散开,画出的画就不太好看。所以他就想有一种新的纸,能够满足这种需求,终于有一天他发现了一种不容易渗透的纸,安徽的宣纸不是为画画而生,但是用来写字可就是太好了。这里就对应着改良算法了,在我们课题组的研究过程中,我想大家对改良应该是不陌生了。我们大部分工作都是在前人的基础上增减一些东西以满足新的特征。
除了改良以外,人类中还有一些天才在合适的机会下找到了一种全新的东西,满足同样的需求但是却更简单更好用。秦始皇统一六国的时候中国还在使用竹简来记录,那时的学富五车也就不过是今天一本书的内容。但是一个天才突然发现用布来记录文字更好,再后来中国人还发明了纸来记录。这可不得了,一下子就进入历史记录了,成为中国四大发明之一。从竹简到布再到纸张,就是一种新的发现或者发明了。而这也对应着科学中的理论研究道路。
20世纪八、九十年代,智能算法中的遗传算法可是大火特火,不亚于当下的深度学习、人工智能。到了1991年,Dorigo发明了蚁群算法,这也是一种理论上的创新。后来,还有ant colony system (ACS),以及MMAS,他们都是理论上的研究,他们就针对于设计出一个更好的蚁群算法出来,而不考虑他们用在哪个事情上。相信我们课题组对于这个应该不陌生,我们大部分的SCI论文都是用来提升蚁群算法性能的,无论你是更快收敛还是跳出局部最优。
然而,我的感觉是:尤其是对于我们没有实践经验的新人来说,我们研究过多的理论会使我们心虚。这大概是正常的吧,对于科技这两条路(一个是科学,一个是技术,科学主要偏向于理论研究,技术更偏向于应用),我们只认识了其中的一个方面,相当于我们人的两条腿,长期使用一条腿估计有点不平衡的感觉。
于是,整合前面两点,我现在的感觉是这样的:对于工具我们当然要越多越好,万一哪一天我们用上了也不错。另一方面就是对知识体系全面性的认识,无论是对问题本身还是对科技两方面的认识。这个全面性的认识最磨练人,需要坚持不懈。我想这里可以借用毛泽东对待资产阶级两面派的态度作为概括:有理有利有节。有理就是知道我们要朝着全面性出发,这是一个理念,要有目的性的去做,也要有关系的去做,顺藤摸瓜而不是东一榔头西一棒槌。有利就是针对我们当下的情况做出对我们有利的事情,比如我们课题组研究蚁群算法,我们就完全可以先从蚁群算法了解,然后以这个为眼,为着力点渐渐发散开,了解遗传算法,了解组合优化算法,了解优化等等。有节也是重要的,那就是说要节制自己,因为一条路上你完全不必全部走一遍,可以留一些,懂得适可而止。在对蚁群的理论有一定了解之后大胆的去应用它,去找属于我们自己的不同荣誉,如吕金秋师兄从ROS系统上突破,从栅格法到MAKLINK。张晨师姐和于清平师姐从软著上着手,还包括智慧城市的一些比赛,而刘楷师兄主要着力于蚁群算法的理论分析,包括收敛性证明。而我和我下一届在导师新课题的指导上,从合作博弈入手,尤其是16届(陈佳,袁汪凰,李娟,朱艳,尹元元)和17届她们在蚁群多种群上做了大量的工作。如果不懂得节制自己,那么必然会在某一个方面花太多的时间和精力,自然就会失去全面性。

麻雀虽小五脏俱全——蚁群算法和机器学习也是相通的

以下再说第三点:我从蚁群算法所得到的东西。俗话说麻雀虽小但五脏俱全,蚁群算法中的一些基本概念也就是更普遍的知识。我们在刚开始就能弄明白其中的道理或者说注意到其中的玄机则对以后的研究或者工作中所遇到的问题都会有很大的好处。这里给出我现在的一些思考,以问题的形式列出,供大家参考:
1) 探索和开发的含义,(这也是机器学习中的重要概念,特别是增强学习),或许有人看到保留最优解是很多算法中都用到的技巧。
2) 全局最优和局部最优,(连续优化中也有这个概念)
3) 信息素更新的公式为什么是那个样子,可以结合(梯度更新中的更新公式),还可以结合支持向量机中严格边界和soft margin的关系。例如我们的优化目标和优化约束条件,如何同时优化他们呢?
4) 控制参数alpha和beta是什么机理?相对重要性又是什么东西。
5) 超参数是什么,这里是的alpha和beta就是超参数?那么如何选择超参数?这和深度学习乃至机器学习中超参数的选择都是一样基本概念。
简而言之,直到最近我才意识到对蚁群算法基本理论上的认识对我是有极大作用的。我说这句话也是想稳定一下我们课题组一些新人的心,之前已经有人未来也将有人和我当时有同样的疑问,假如我能稍微令后来者释然一些,我将荣幸之至。虽然当时有很多疑问,好在现在大部分都得到了解决。而且更加坚信基本理论学习会带给我们超越算法本身的认识,即使也有一定的局限性。

蚁群算法与深度学习能够结合?

关于本文第四点——对蚁群算法的感受,我想也就顺理成章了。那就是从基本理论开始,然后做一些实践上的应用,最后发散开来看,把自己的知识体系扩大些。当然,这些过程都是需要精力的,都是需要时间的。有些可以同时进行,而有些有顺序。
对于蚁群算法的基本规范也需要了解——组合优化问题。换言之,只要是组合优化问题,不能使用导数优化的,我们或许都可以拿蚁群算法去试一试,另外不要试图走所谓的捷径,试错乃是必要的,没有人能一下子成功——毕竟,爱迪生发明电灯可是试了很多种材料。
这里我也给出我现在关注的一些深度学习和蚁群算法相关的几个ideas,毕竟现在深度学习太火,这样的应用也是好发文章,也是促进自己学习和思考的一个较好方式,毕竟人是有俩个属性的,即使社会性乃是人的本质属性,但是人的物质性也是实现社会性的根本条件——简单说就是人需要生存,需要钱,需要物质:
1) 用蚁群算法来优化深度学习过程中的超参数选择。Regularized Evolution for Image Classifier Architecture Search这篇论文就是其中的最新文章之一。
2) Evolutionary Generative Adversarial Networks,这篇文章将遗传算法用在对抗生成网络(GAN)中,我现在主要研究GAN,所以曾经关注过这篇文章。
不过,想要真正的做出东西来,恐怕还有一定的路要走。而第一个idea或许更加简单一些,只需要了解一下我们的优化空间,至于优化空间的具体含义可以不必如此清楚。

为何要点赞?

如果本文解决了你的困惑,不妨点个赞鼓励一下。
不管你信不信,也不管你同不同意,实际上,你的每一次点赞都标志着你自身的进步。而打赏乃是点赞的高级形式
曾经有无数个点赞的机会,但是我都没有好好珍惜,假如时光可以倒流,我一定为他们也为自己点赞。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/270752
推荐阅读
相关标签
  

闽ICP备14008679号