0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

zhKF_jqr_AI 来源:未知 作者:李倩 2018-04-16 15:09 次阅读

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

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

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

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

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

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

“曲线”获胜

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

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

没有腿的机器人摔倒了

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

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

黑掉矩阵,获取资源

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

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

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

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

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

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

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

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

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

破坏性地解决问题

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

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

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

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

结论

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    210

    文章

    28068

    浏览量

    205765
  • 机器学习
    +关注

    关注

    66

    文章

    8340

    浏览量

    132281

原文标题:注意!你的算法正在偷偷进化——机器进化趣闻集锦(附论文)

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    用OPA656搭一跨阻放大电路,希望得到输出在mV或V量级的电压怎么操作?

    了。请问一下,要实现这个电路功能,RF的阻值大概应该取多大?是否还应该并联一电容,那么这个电容又该大概取多大呢?我的输入端是光电元件,电容大概在几十个pF。新手希望得到指点,谢谢!
    发表于 09-18 07:34

    在焊接电路或者测试时,TLV3502经常被损坏怎么处理?

    在焊接电路或者测试时,TLV3502经常被损坏。损坏现象是:芯片的电源到地发生短路现象,电源到地的电阻只有几十个Ohm。 请问其原因是什么?之前有没有类似的问题发生过?如何避免这类问题。 我都不敢测试了。
    发表于 09-13 08:33

    服务器数据恢复—硬盘出现坏扇区导致网站服务器宕机的数据恢复案例

    服务器数据恢复环境: 一台linux操作系统服务器上跑了几十个网站,服务器上只有一块SATA硬盘。 服务器故障: 服务器突然宕机,尝试再次启动失败。将硬盘拆下检测,发现存在坏扇区。
    的头像 发表于 09-12 12:02 154次阅读

    INA333无法采样怎么解决?

    现在输入端接的是扭力传感器,信号幅度从几十个uv到几个mv之间变化。目前扭力传感器波形比较正常。扭力触感器用来测量电机旋转时候扭力。现在问题是 只要连接上扭力触感器,电机堵转停止时候,INA输出
    发表于 08-05 07:26

    具有十个解码输出的进位计数器/除法器数据表

    电子发烧友网站提供《具有十个解码输出的进位计数器/除法器数据表.pdf》资料免费下载
    发表于 05-17 10:47 0次下载
    具有<b class='flag-5'>十个</b>解码输出的<b class='flag-5'>十</b>进位计数器/除法器数据表

    DMA串口1发送接收,感觉好占CPU,这正常吗?

    DMA不是不不占CPU吗,调试时,PC发几十个数据到STM32F429,MDA接收,主循环有定时亮灭LED灯,只要DMA已接收数据,灯明显会停顿下,且接收到的数据未做解包,单纯MDA接收数据放到缓存理,设置空闲中断USART_CR1_IDLEIE, 感觉很不正常....
    发表于 05-09 06:51

    stm32f429 can1通讯使用hal发送数据不稳定怎么解决?

    stm32f429 can1通讯,使用hal库配置工程,发送数据不稳定,发送几十个包才有一俩正常发送,但是使用标准库就可以正常发送数据,也很稳定,研究两天了也没有解决,这是什么问题呢。
    发表于 04-02 06:04

    求助:我设计了一频率连续可调的方波转正弦波的电路,想请问大家这个有申请专利的价值吗?

    。尤其是响应速度,现在能做到在几个到几十个周期内完成锁定。这个AGC电路还可以调整相应的电阻电容以适应不同的频率段。不过这个电路需要方波时钟才能达到上述要求,不然会降低精度和响应速度,但这也限制了该电路的用途。 我现在想请教大家该电路还能用于那些应用场景,有没有申请专利的价值? 谢谢
    发表于 03-14 14:54

    PC端连接STLINK_V3MINI,电流为90-110mA,这个电流正不正常?如何排查?

    怎样测的电流? STLINK-V3Mini有连接什么吗?一MCU正常运行有几十个mA应该属于正常范围。
    发表于 03-08 07:54

    AD7656在没有输入信号时,测量输入端都会有mV至几十mV的电压,怎么消除呢?

    像之前用AD7705那位朋友一样。我用AD7656,完全按照手册设计。参考电压、电源电压都接了0.1uF和1uF电容。 在没有输入信号时,测量输入端都会有mV至几十mV的电压,怎么消除呢?
    发表于 02-22 07:27

    为什么TC397对外设赋值这么慢?

    现在遇到了一问题,再给GTM.ATOMX.CHX的SR0或SR1赋值时一句赋值语句的周期要130ns左右,相当于几十个指令周期;而TI的DSP芯片对相应PWM寄存器赋值一条语句执行时间只有ns,只占一
    发表于 02-05 09:05

    Linux下常见的十几款CPU监控工具

    今天浩道跟大家分享运维工作中,Linux下常见的十几款CPU监控工具,你可能只会用到其中某些,但是个人觉得作为一资深运维,你要知道有这些工具可以监控CPU。
    的头像 发表于 01-22 09:19 2394次阅读
    Linux下常见的<b class='flag-5'>十几</b>款CPU监控工具

    ADIS16460正常的工作温度是−25°C 到 +85°C,为什么测试的时候有几十个是-10°C ?

    ADIS16460正常的工作温度是−25°C 到 +85°C,为什么测试的时候有几十个是-10°C ?
    发表于 12-28 08:18

    使用AD9747时发现一路电流不正常,是什么原因造成的?

    我们在使用AD9747时发现一路电流不正常,自己测试了一下,4路电源中,DVDD18的功耗很小,只有几十个uA,器件的数据输入P1Dx和P2Dx高输入漏电都是几个uA。 使用回路中,各路电源单独提供,所有vss接在一起。请问IIH几十
    发表于 12-15 07:12

    接口调用并发执行十个任务总结

    接口调用时,接收到一列表,十个元素,需要并发执行十个任务,每个任务都要返回执行的结果和异常,然后对返回的结果装填到一切片列表里,统一
    的头像 发表于 11-15 10:37 405次阅读