当前位置: 首页 > 科技观察

惊喜还是害怕?机器学习算法的“高能”时刻盘点

时间:2023-03-15 17:26:47 科技观察

编者按:“水能载舟,亦能覆舟”。这句老话相信大家都不陌生,应用到机器学习中,给我们带来了很多便利机器学习算法,一不小心,就会因为意想不到的原因给我们带来“惊喜”。原作者解读了一篇讨论这种现象的论文,雷锋网AI科技评论整理如下。机器学习算法与其他计算机程序有很大不同。在正常的编程行为中,人类程序员确切地告诉计算机该做什么。谈到机器学习,人类程序员只是提供问题,而算法必须通过反复试验来弄清楚如何解决它。到目前为止,这种方法似乎奏效了——机器学习算法广泛应用于面部识别、语言翻译、金融建模、图像识别和广告投放。只要您一直在线,就可能与机器学习算法进行过交互。然而,它并不总是运作良好。有时程序员认为他们的算法已经设计得足够好,但仔细观察结果就会发现它解决的问题与程序员最初的意图完全不同。举个例子,我见过一个图像识别算法,它应该可以识别绵羊,但却学会了识别草地,并不断将空旷的绿色田野标记为包含绵羊。一群羊在郁郁葱葱的绿色山坡上吃草通常是纯粹的快乐。令人惊喜的是,一组研究人员在2018年就此撰写了一篇引人入胜的论文——汇集了数十个“让研究人员感到惊讶和钦佩”的轶事。这篇论文和原始参考资料一样值得一读,这里有一些我最喜欢的例子。论文链接:https://arxiv.org/pdf/1803.03453.pdf扭转规则,赢!首先,通过模拟生物体来研究不同形式的运动如何演化已经是一项重要的任务,包括为机器人提供新的运动思路。悠久的传统。为什么要在可以翻牌的时候走路?在这个例子中,模拟机器人不是进化自己的腿,而是应该尽可能快地走。相反,它选择将自己组装成一座塔,然后倒下。其中一些机器人甚至学会了将跌倒变成翻筋斗以增加距离。【图:机器人变成倒塌的塔】既然能跳康康,为什么还要学跳?这组模拟机器人本来应该进化成可以跳跃的形态,但是因为一开始程序员就把跳跃高度设置成了**停止的高度,所以(又傻了)机器人在形态上变高了。为了解决这个问题,程序员尝试将跳跃高度定义为第一站的高度。作为回应,机器人进化出一条细长的腿,变成了将腿踢向空中的康康机器人。【图:高大机器人双腿伸向空中,不跳】“超能”,你无话可说!势能并不是模拟机器人学习使用的唯一能量。事实证明,就像现实生活中发生的那样,一旦有了可用的能量,就必须进化出某种东西来使用它。浮点舍入误差作为能量来源:在一次模拟中,机器人学习了数学中的舍入误差规则,他们发现这使它们能够在运动中获得额外的能量。结果,他们学会了快速抽搐,这创造了他们可以使用的大量自由能量。当机器人开始以极快的速度游泳时,程序员才注意到这个问题。从与地板的碰撞中获取能量:在另一个模拟中,学习碰撞检测规则的机器人提出了其他问题。一旦他们设法让自己卡在地板上(首先学会操纵时间使之成为可能),碰撞检测系统就会意识到机器人不应该在地板上,并将它们向上射击。然后机器人学会在地板上快速振动,通过反复碰撞产生额外的能量。[图片:机器人从地板上的振动中获得向前的能量]“颠簸”飞行:在另一个模拟中,跳跃机器人学会了使用不同的碰撞检测错误来帮助它们飞行——每当它们的部件相互接触时,力就会推动它们到空气中。如果这在现实生活中可行,那么今天的商业航班将是一个不同的故事。钻“漏洞”:计算机游戏算法非常擅长发现人类通常用来提高获胜速度的矩阵故障。玩旧的Atari游戏Q*bert的机器算法发现了一个以前未发现的错误,它选择在关卡结束时执行一系列特定的动作,而不是直接过渡到下一关卡,由此所有平台都会开始快速闪烁,玩家从而能够积累大量的积分。另一种专注于毁灭战士的游戏算法也找到了可以阻止敌人发射火球的特殊操作——但它只适用于算法毁灭战士的“梦想版”。好消息是你可以在这里玩这个版本的游戏。游戏链接:https://worldmodels.github.io[图:Q*bert玩家积累了可疑的点数,考虑到它并没有做太多事情]“目标远大”:在一个令人毛骨悚然的例子中,一个算法应该解决如何对试图让航空母舰着陆的飞机施加最小的努力,发现如果它施加“大”的努力,它会溢出程序的内存,注册为非常“小”的努力工作。飞行员会死,但是,嘿,他妈的比分。毁灭也是一种解决方法!即使像列表排序算法这样看似无害的算法也可以以一种无辜但险恶的方式解决问题。你看,它们不是“未排序”的:例如,一个应该学习对数字列表进行排序的算法学习删除列表以从技术上消除“未排序”的东西。完成小林丸测验:算法本应尽量减少自己的答案和正确答案之间的差距,所以它想出了存储和删除答案的位置,所以它得到了满分。在井字游戏中获胜:1997年,一些程序员构建了一种算法,可以在最大的棋盘上互相玩井字游戏。程序员决定放弃设计特定的算法策略并让它自行开发。令人惊讶的是,该算法突然开始赢得所有比赛。原来算法的策略是将棋子放置在极远的距离,这样每次对方电脑尝试模拟新的扩展板时,过大的游戏板就会导致内存不足而死机,输游戏。结论当机器学习解决问题时,它提出的解决方案可能非常聪明,也可能非常不可思议。这就是生物进化的原理——正如任何生物学家都会告诉你的那样,生物体总是会找到最奇怪的问题解决方案,以及最奇怪的能源来利用。我们没有生活在计算机模拟中的最可靠迹象之一是,如果我们生活在计算机模拟中,一些微生物就会学会利用它的缺陷。所以,作为程序员,我们必须非常小心,我们的算法应该解决我们要求他们解决的问题,而不是偷工减料。一旦有另一种更容易解决问题的方法,机器学习很可能会找到它。幸运的是,“杀死所有人类”真的很难。如果“烤出美味无比的蛋糕”也能解决问题,而且比“杀死全人类”更容易,那么机器学习肯定会选择站在蛋糕一边。本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。