算法的复杂度计算是否让你觉得备受打击?请放轻松,让我们来聊一些算法的有趣事情吧。
2016年3月,Google 的人工智能程序 AlphaGo 以4:1的总比分战胜职业九段棋手李世石,从而震惊了世界。紧接着,AIphaGo又横扫中韩围棋高手,60局无一败绩!2017年5月,中国乌镇围棋峰会迎来了历史性的一刻—AIphaGo和围棋世界冠军柯洁的对弈。万众瞩目下,AlphaGo 又以3:0的总比分完胜。柯洁称其为“围棋上帝”,已经完全超过了人类围棋的顶尖水平。
2017年,硅谷有一位工程师想去 Reddit 上班,觉得“入伙”得先有个见面礼。于是费尽心思地写了篇改进Reddit 推荐算法的文章,准备直接发给 Reddit 的CEO 霍夫曼。他先到 Facebook 等平台寻找 Reddit 公司CEO霍夫曼的公开账号,并收集该账号广告定向的关键字,如性别、年龄、地区和爱好等,形成了一张霍夫曼的人物画像,然后再用定向算法把自己的文章投放给符合人物画像的197个人,没想到竟然真的命中了霍夫曼本人。于是他被顺利录取,而这次推广只花了10.6美元。
这就是算法的“魅力”。不过这仅仅只是冰山一角。下面再列举一些算法应用的“翻车”例子。
2017年底,中国香港地产商李建勤(Li Kin-Kan)将自己的25亿美元资产交给了由奥地利的AI 公司42.CX 研发的超级计算机 K1(通过抓取实时新闻和社交媒体的数据,以深度学习算法评估投资者的情绪并预测美国股票和期货,然后发送指令进行交易)来打理,准备在金融市场上大赚一笔。然而,现实总是残酷的。截至2018年2月,他仍处于亏损状态,有时候一天的亏损额超过2000万美元,李建勤终于明白算法在金融市场是不起作用的,于是他一怒之下将科斯塔(Costa)告上了法庭,声称他夸大了超级计算机的作用。
科斯塔是李建勤在2017年3月19日去迪拜吃午饭时遇到的意大利金融家,正是他向李介绍了 K1 的智能技术。
2013年,IBM 与得克萨斯大学 MD 安德森癌症中心合作开发的沃森癌症机器人诞生了。它的使命是让临床医生能够从癌症中心的众多患者和研究数据库中发现宝贵的见解。
2017年2月,在花费了6200万美元之后,得克萨斯大学终止了和 IBM的合作。因为IBM的沃森癌症机器人有时候给医生的治疗建议是错误的,甚至是危险的,比如建议有严重出血症状的癌症患者使用会加重出血的药物…
在德国汉堡,由于朋友出差,奥利弗便到朋友家借住一晚。然而,在奥利弗离开朋友家之后,朋友的亚马逊智能音响突然以最高音量开始播放摇滚音乐。那时是凌晨1:50分。
在美梦中被吵醒的邻居无奈之下只能报警,警察破门而入之后终于拔下了音响的插头,而奥利弗只能跑一趟警局并支付一笔昂贵的换锁费用。
无独有偶,在加利福尼亚州,一个5岁的小女孩用智能音箱给自己买了超过300美元的饼干,把她的父母都惊呆了。故事还没结束,让人啼笑皆非的是,电视主持人在报道该条新闻时说了一句“Alexa,给我订购一个玩具屋”,结果更多的音箱听到了主持人的语音,真的下单购买了这个玩具屋,从而让亚马逊不得不为此事道歉。
还有更多的例子。2018年3月,一名用户准备休息时试图通过Alexa 关闭灯光,没想到 Alexa 却发出了“啊-哈-哈”三声机器合成音的诡异笑声,把他吓坏了。一石激起千层浪,Echo的老板们纷纷表示自己的智能音箱也曾发出这种诡异的笑声。结合另外两件事则更加蹊跷。其一,霍金曾预言,人工智能或许不但是人类历史上最大的“事件”,而且还有可能是最后的“事件”,也就是说,人工智能可能会导致人类的灭亡;其二,霍金正是于2018年3月14日逝世。
2018年5月,在俄勒冈州波特兰一家中,Alexa又偷偷录制了一对夫妇的私人对话,并且在该用户不知情的情况下广播给了该用户的同事。
2016年3月,微软在 Twitter 上开发了一个叫 Tay 的AI 聊天机器人(通过挖掘网民对话进行自我学习),Tay 的定位是善解人意,活泼可爱,因此 Twitter 上的网民和其聊得非常开心。然而,仅仅 12小时后,Tay便变成了一个满嘴脏话的“恶魔”机器人,于是微软立即关闭了Tay,而这离 Tay 上线还不到24小时。
或许正是由于有Tay 的前车之鉴,所以微软对其推出的小冰(人工智能框架)也更加谨慎。
除了以上列举的一些失败的算法应用例子外,生活中还有很多类似的例子。例如:乘客登机前的嫌疑度评分,经常有乘客因嫌疑度较高被拘留检查而错过飞机:Faccbook(现为 Meta)的回忆功能,会在使用者的亲人逝世的周年纪念日那一天显示他的照片,或者督促使用者向已故朋友说生日快乐;Uber 公司在美国坦佩市测试自动驾驶时识别错误,撞上了伊菜恩并致其死亡;城市中安装的智能交通摄像头(检测、识别红灯时乱穿马路的行人),误将公交车广告牌上的明星头像识别成行人,还曝光了“某某乱穿马路”的照片,甚至把婴儿车识别成机动车,然后将照片放在大犀幕上?…
最可笑的是,2015年6月,一位外国用户发了条说说:Google Photos, yall fucked up.My friend’s not a gorilla。大致的意思是:谷歌,我的朋友才不是大猩猩。原来,Google Photog利用人工智能算法,能够对照片中的人脸和物品等进行自动识别然后分类,没想到出了乌龙事件,把外国用户的黑人朋友归到了 gorilla(大猩猩)的文件夹中。
讲了这么多算法应用的失败案例,笔者并不是为了逗你们笑的,更重要的是在笑完之后,我们要对其失败的原因进行更深层次的思考——为什么会这样?
原因无非有三点:技术、数据和人性
算法并非万能的,也无法独立于人类而存在。就像牛津大学计算机教授莱斯利?安?高柏所说:“我认为人们并不真正了解算法的局限,有的问题根本无法通过算法得到有效解决。”数据只关注相关性而不是因果关系,它可以提供显著的信息,但却无法给出解释,因为数据是缺乏想象力和感知力的,它无法感知人们行为背后的复杂动机。数据的意义仍然来自人们对它的解读,如果脱离了具体的语境,那么它所呈现的只是这个世界的抽象表征而不是世界本身。
算法是一系列规范的计算步骤,对一个或多个输入值进行计算,转换成所请求的结果并输出。我们也可以这样理解:算法是由一系列数据对象的一系列运算和操作组成的。
通常来讲,算法有5个特征,即“两项三性”,分别指输入项、输出项、确切性、有穷性和可执行性。此外,算法还有5个非强制特性,即正确性、可读性、健壮性、鲁棒性和可移植性。
算法的设计策略主要有遍历、迭代、递归、回溯、贪心、分治等。
空间复杂度和时间复杂度是衡量一个算法优劣的两个标准。
空间复杂度包括以下三个方面:
时间复杂度则是指运行算法所需要的计算工作量。