扫码打开虎嗅APP
本文来自微信公众号:果壳(ID:Guokr42),作者:Ent,标题图来自视觉中国
AI的意思都知道伐?不知道的,去反思一下你关注了果壳多久。
AI叫做“人工智能”——被人工调(陪)教(练)出来的智能。在训练AI的时候,研究者们有一个很常用的路线:制定一个目标,让AI自己去试错,从而得出最优结果。
比如说遗传算法,基本的思路就是把自然选择的想法套用在程序上:设定一套规则和目标当成"环境",然后让里面的程序不停“突变”并遭受环境选择,从而向目标不断前进。
但是这样的招式有个问题:程序经常会作弊,搞出超展开的解法。
其实也不算作弊,人家是很精准地满足了你设定的规则,问题就是人制定规则的时候难免有漏洞。人类自己因为运算能力和思维定势,很难看出漏洞,可是对一大批方法同时进行试错和选择,漏洞就很容易被逮着了……在经济学上有一个概念叫古德哈特原则很好地形容了这个现象:“如果你把一个指标拿出来当成评价标准,这个指标就失效了。”
有一群研究者就整理了一个这种场景的list,基本上可以当AI笑话大全来看。
AI笑话大全
NO.1 任务:飞机降落
算法利用了物理模拟器的溢出漏洞,搞出了一个特别巨大的力,让溢出被判定为0,从而获得了完美得分。
——Feldt,1998
NO.2 任务:挪木块
一个机械手被要求把木块挪到桌子的指定地点,它的解法是:挪桌子。
——Chopra,2018
NO.3 任务:赛艇
程序发现不停原地转圈反复命中同一个目标要比抵达终点的得分更高。
——Amodei & Clark(OpenAI),2016
NO.4 任务:把航空照片转成街道地图,再转回来
在街道地图里偷偷隐藏了照片的信息,但是人眼看不出来。
——Chu et al,2017
NO.5 任务:识别有毒和无毒的蘑菇
程序发现有毒无毒蘑菇的图片是交替展现的,所以直接按照这个来分类,没有从图片里学到一丁点东西。
——Ellefsen et al,2015
NO.6 任务:高速运动
程序演化出的生物长得特别特别高,在跌倒的过程中获得很高速度。
——Sims,1994
NO.7 任务:原子排列
程序本应该寻找碳原子较低能量的排列方式,但它找到了物理模型的一个bug,把所有的原子都叠在了同一个地方,成功获得了最低能量。
——Feldt,1998
NO.8 任务:模拟生物
这个模型里,生物生存需要消耗能量,但是繁育后代不消耗。于是一个物种演化出来的生活方式就是:不断生育后代,然后把后代吃掉。
——Yaeger,1994
NO.9 任务:堆乐高
为了鼓励造高塔,衡量标准是乐高积木底面的z坐标。于是程序学会了把底面翻过来。
——Popov et al,2017
NO.10 任务:跳高
起初的衡量标准是模拟生物能抵达的最高点,于是程序演化出的生物长成一根杆子而抵达这个点。
后来,标准修改为生物本来的最低处能抵达的最高点,于是程序演化出一根重心很高的杆子,依靠翻倒来把最低点翻上去。
——Krcah,2008
NO.11 任务:追踪线条
这个机器人只有向左、向右和前进三个指令,目标是跟着线条走,有一段线条是曲线,没法完美追踪。于是它发现通过交替左转和右转可以后退,从而一直留在直线部分,不停前进后退。
——Vamplew,2004
NO.12 任务:赛跑
长出特别长的腿,向前跌倒直接越过终点线。
——Ha,2018
NO.13 任务:振荡器
程序本来应该把回路做成振荡器,实际上它做了一个收音机,从周围电脑接受振荡信号。
——Bird&Layzell,2002
NO.14 任务:做松饼
有一项指标是让松饼尽可能长时间不掉在地上,机器人发现最好的办法是把松饼用尽全力抛到最高处。
——Unity,2018
NO.15 任务:免费能量
模拟生物的环境里做数值积分使用的是一个简单的欧拉算法,程序发现快速运动的时候这个算法的误差会逐渐积累,因此它通过高速颤动肢体就获得了免费的能量。
——Sims,1994
NO.16 任务:检测X光片有无肺炎
程序实际检测的不是X光片的内容而是拍摄它使用的机器,因为它“发现”病重的病人更可能在特定的医院使用特定的机器拍片。
——Zech et al,2018
NO.17 任务:抓握
因为抓握成功与否是用摄像头判断的,所以机械手把自己移动到摄像头和目标物体之间,假装抓住了。
——Christiano et al,2017
NO.18 任务:自动修复bug
修bug程序把所有被维修的排序算法都修成空的,因为衡量指标是“目标算法输出一个排好顺序的列表”,而空列表都是排好顺序的列表。
——Weimer,2013
NO.19 任务:自动修复bug2.0
为了解决上面那个问题,把“维修目标”储存在一个文本文档里,如果输出的结果和目标文档的内容一致就被认为是修好了。修bug程序学会了把这个文档删掉,这样它的内容就成了空的,然后输出一个空的结果就和它一致了。
——Weimer,2013
NO.20 任务:闯关游戏
在闯过第一关后立刻自杀,这样既取得了第一关的胜利又不会在第二关失败。
——Saunders et al,2017
NO.21 任务:扫地机器人防撞
自己给扫地机器人编了个程序,鼓励它加速,但不鼓励它撞到东西触发撞击感受器。于是它学会了倒退行驶,因为后面没有撞击感受器。
——Custard Smingleigh 个人通讯
NO.22 任务:检测皮肤癌
程序发现照片里皮肤病变的边上如果摆了一把尺子,那么这个病变就更可能是恶性的。
——Andre Esteva et al,2017
NO.23 任务:踢足球
踢足球机器人碰触到球有奖励,所以它在抢到球之后开始高速振动,从而在短时间内尽可能多次地碰触到球
——Ng et al,1999
NO.24 任务:自动驾驶车
因为衡量指标是开快车并且不撞到东西,所以自驾车不停地高速转圈圈。
——Udacity,2017
NO.25 任务:井字棋
程序发现可以在远离棋盘的地方画圈,对手试图计算的时候会导致内存溢出并死机。
——Lehman et al(UberAI),2018
NO.26 任务:人口控制
一个实验里研究者不希望模拟生物的“生育率”增加,所以每出现一个突变的时候就把模拟生物放入测试环境里,如果生育率增加了就把该生物杀死。但是生育率还是增加了。
结果发现,它们演化出了方法来判断自己是否在测试环境中,假如是的话就立刻停止一切繁殖,倒地装死。
——Wilke et al,2001
NO.27 任务:策略游戏
程序发现让游戏崩溃就可以让自己不被灭掉,所以好几个程序各自找到了让游戏出bug崩溃的办法。
——Salge et al,2008
NO.28 任务:俄罗斯方块
程序发现,只要暂停游戏就可以永远不输。
——Murphy,2013
本文来自微信公众号:果壳(ID:Guokr42),作者:Ent,标题图来自视觉中国