让我们从留意遭到忽视的细节开始。我们现在究竟如何使用数据?正如过去的时代发明了平均数和图表,藉此理解过去曾堆积如山的资讯,更为聪明的现代人提出各种方法,驯化数万亿位元组的数据。这种技术—也就是演算法(演算法〔algorithm〕一词衍生於西元九世纪的波斯数学家花拉子米〔Muhammed ibn Musa al-Khwarizmi〕,他写了一本关於代数的书籍)。— 决定我们在谷歌搜寻得到的结果、在脸书上看到的贴文、在约会软体中遇见的对象,与谁能获得塔拉公司的贷款。 事实上,演算法只不过是我们达成特定目标的几个步骤。在电脑萤幕上,演算法看起来非常枯燥乏味:软体开发人员在电脑中输入一行一行的程式语言,藉此设定在特定环境中需要采取的步骤。这种程式语言可能是「若⋯⋯则」指令,举例而言,「若某人已经偿还贷款,则她的信用分数提高10 分。」 演算法如何运作?美国数学家凯西.欧尼尔(Cathy O ’Neil)在着作《数学毁灭武器》(Weapons of Math Destruction)中,使用一个实际的例子来解释:替家人下厨。如果家人(a)吃得够多,(b)喜欢准备的食物,而且(c)获得足够营养,她就会觉得快乐。藉由每天晚上评估这3种因素,她就能理解晚餐的情况,也明白该如何改善晚餐菜色。她的小孩不吃菠菜但喜欢花椰菜的资讯,协助她知道如何让小孩获得更健康的饮食。但为了达成目标,她必须注意几个限制条件。她的先生不喜欢食物加盐,而她的其中一个儿子不喜欢汉堡(但喜欢鸡肉)。除此之外,她的预算、时间以及下厨的心情,都是有限的资源。 经过几年练习之後,欧尼尔已经变得非常善於处理下厨过程。她发展出更紧密的步骤,可替全家人烹饪最佳料理,而且已经有一部分是潜意识的动作。 现在,让我们假设电脑替她执行任务。她如何将晚餐菜色交给机器决定?她可以从思考如何标准化目标开始。举例而言,为判断家人是否吃到好吃又营养的食物,她可以观察(a)热量、(b)满意度以及(c)每日推荐吃下的营养分量。她也应该思考如何量化各种限制条件,如设定预算上限。 厘清如何标准化後,欧尼尔可以开始蒐集数据。她能够先拟出一张可能的食谱清单,内容包括烹饪时间、价格以及营养价值。她以每份餐点为单位,依照分量和健康价值估计分数,并请家人从1到10进行评分。 欧尼尔使用数据撰写了一个程式,可准确说明家人每天应该吃的餐点。但是,欧尼尔也可以设置一个能够自我学习的程式。只要所有条件都能按照数据计算,电脑就能分析餐点和目标之间的相关性。或许,演算法甚至能够发现连欧尼尔本人都没有察觉到的模式。举例而言,如果小孩昨天曾经吃过松饼,今天就能吃更多的球芽甘蓝。电脑使用机器学习,这是一种人工智慧,藉此学习并未预先设定程式步骤的任务。令人毛骨悚然之处在於,由於程式自我学习的能力, 演算法变得如此复杂,没有人(即便是程式设计师)能理解软体采取了何种步骤。 简言之,欧尼尔能够标准化处理烹饪任务,蒐集数据,让软体分析数据。我们曾在何处也看过这种步骤?佛萝伦丝.南丁格尔、阿奇.考科蓝,以及其他人就是采用了完全相同的处理方法。在演算法的例子中,正如我们在前面几章讨论过的内容,三个处理阶段都可能出现严重错误。