几十个令人惊讶的“机器进化”趣闻其中几则典型案例分享

李倩 发表于 2018-04-16 15:09:58 收藏 已收藏
赞(0) •  评论(0
赞      评论 分享
    ●●●

几十个令人惊讶的“机器进化”趣闻其中几则典型案例分享

李倩 发表于 2018-04-16 15:09:58

进化是一切复杂且精妙的适应性行为的源泉,然而这种能力并不只是自然界生物的特权,再计算机环境下的人造物体也展现出了令人惊讶的“算法进化过程”。于是,来自美国、英国、法国等30多个学校和机构的研究人员们收集了几十个令人惊讶的“机器进化”趣闻,将其编写成论文。研究者Janelle Shane通过阅读选出了几则典型案例与大家分享,以下是对其进行的编译。

机器学习算法不像其他计算机程序。我们通常说的“编程”是指人类程序员明确告诉计算机做什么。在机器学习中,人类程序员仅仅给与算法需要解决的问题,让算法通过不断试错找到解决方案。

这种方法带来了不错的效果,机器学习算法也广泛地用于人脸识别、外语翻译、金融建模、图像识别、广告投放等领域。机器学习对互联网的影响已经十分广泛了,如果你每天都接触互联网,对这个词一定不陌生。

但是,机器学习算法并不总是那么有效。有时程序员会觉得算法确实没毛病,但是仔细检查后发现算法解决的问题根本不是原本要解决的那个。例如,我之前看到一个图像识别算法,它本应该识别其中的“羊”,但是却把“草地”当做了目标对象,认为“空空如也的绿地”是它的“羊”。

当机器学习算法不按照剧本解决问题时,程序员们有的时候会有点抓狂,但是大多数时候还算顺利。

所以,今年,一组来自世界各地的研究人员写了一篇有趣的论文,他们挑选了几十个“非常令人好奇和惊讶”的研究。这篇文章非常值得一读,但由于文章太长,我只挑选了其中最喜欢的几个案例。

“曲线”获胜

我们都知道,许多研究都喜欢用模拟生物研究如何生成不同形式的运动,或者怎样能让机器人生成新步态。

但是,如果你会翻滚,为啥还要用走的呢?在一个案例中,研究人员想让模拟机器人尽可能快地移动。但是他们并没有给机器人配备“双腿”,而是把它设计成一个高高的“塔”,这当然会倒下了……但是一些机器人就从中学会了“翻滚前进”。

没有腿的机器人摔倒了

如果能用撑杆跳,为啥还直接跳跃?另一个模拟机器人的案例是,研究人员想让它学会跳跃。但是程序员最初设计的跳跃高度是最高的那个模块。所以……机器人学会了让自己长得非常高。为了解决这个问题,程序员又将跳跃高度定义成最初最低的那个模块。然而,机器人因此“进化出”了一条细长的“腿”,伸向空中……

机器人用“长腿”前进,而不跳跃

黑掉矩阵,获取资源

潜在的能量并不是这些模拟机器人学会利用的唯一能量源。在研究中我们发现,一旦能量源可用,机器人的某个部分就会进化去使用它。

将浮点舍入误差作为能量源:在一次模拟中,机器人发现在计算力时的少量舍入误差可以作为额外运动时的能量。由此它们学会了快速地开关,以产生大量可免费利用的能量。当机器人以极快的速度游泳时,程序员们注意到了这个问题。

在碰撞地板时收集能量:另一个模拟实验也出现了相似的问题,机器人学会在碰撞地板时运用其中的数学问题。如果它们故意让自己倒地(首先它们会学会让自己实现这个动作),那么碰撞探测器会判断它们不应该摔倒,然后立即将其向上弹起。于是机器人学会在地板上快速地振动,通过反复碰撞产生额外的能量。

机器人在地板上振动向前行走

反弹飞行:在另一项实验中,跳跃式机器人发现了另一种碰撞检测bug。通过将身体的两部分碰撞到一起,它们可以推动自己冲向更高的地方。如果这项成果得以在现实中实现,那么商业航空将发生巨大变化。

发现雅达利游戏中的bug:计算机游戏算法非常善于发现矩阵故障,人类通常会用这类故障进行高速裕兴。一种用于运行旧式雅达利游戏Q*bert的算法发现了一个前所未知的bug,即它可以在某个级别即将结束时执行一系列非常具体的动作,而不是升级到下个级别。这时所有的平台会快速闪烁,玩家可以积累大量分数。

Doom的算法还发现了一种特殊的动作组合,可以阻止敌人发射燃烧的火球。但是它只能在算法的梦幻版中发挥作用。如果你想玩梦幻版,可以点击这个网址:worldmodels.github.io

Q*bert玩家积累到了一个反常的分数,但它并没有做什么努力

运用浮点溢出使飞机降落:在另一个更加诡异的案例中,算法原本是用来计算如何给一架即将降落在航空母舰上的飞机施加一个最小的力。结果它发现,如果是加一个很大的力,它就会使该项目的内存溢出。虽然飞行员会因此丧生,但是系统却得到了最完美的分数。

破坏性地解决问题

有一些类似列表排序算法的温和方法,也能以非常邪恶的方式解决问题。

例如,有一种算法本身是用来对数字列表排序的,但是它却学会了删除列表,这样一来它在技术上就不是无序的了。

另一种算法应该是用于缩小它自己的答案和标准答案之间的差异,但它学会了找出答案存储的位置并删除了它,所以它就会得到一个完美的分数。(解决小林丸的测试)

1997年,几名程序员创建了一个算法,可以远程在无限大的棋盘上互相玩井字游戏。其中一个程序员并没有涉及算法的策略,而是让它们自己摸索获胜的方法。令人惊讶的是,算法开始赢得所有的游戏。事实证明,该算法的策略是将其置于非常远的地方,以便当其对手的计算机试图扩展棋盘时,巨大的棋盘会因内存消耗殆尽而崩溃。(如何在井字游戏中获胜)

结论

长久以来,人们都对机器进化存在误解,认为它们只不过在模仿。但是这些实验表明,当机器学习解决问题时,它可以产出非常巧妙甚至不可思议的解决方案。

生物进化也是如此,就像许多生物学家说的,生物体可以找到最奇怪的解决方法,以及利用最奇怪的能量源。所以作为程序员,我们必须非常小心,因为算法正在解决我们想要解决的问题。如果还有另外解决问题的方法,机器学习可能会很快地找到它。

但是也不必过于担心,机器学习是不会让人类灭亡的。如果“做一个非常美味的蛋糕”可以解决问题,并且比“毁灭人类”简单的话,机器学习一定会选择做蛋糕。

收藏

相关话题
文章来源专栏
+关注

评论(0)

加载更多评论

参与评论

分享到

QQ空间 QQ好友 微博
取消
友情链接:96265   19695   65931   51994   36455   16054   16759   33062   50703   65733   11075   3639   3416   50114   33390   55425   63437   4799   81229   84664