编者按: 本文 节选自 Carl Miller 的《诸神之死: 新的全球权力攫取》(The Death of the Gods: The new global power grab). 原文标题 God is in the machine .
2012 年, 格鲁吉亚第比利斯, 一名员工展示 "警察用平板电脑"
研究员和我的秘密谈话
"如果有人知道我说了这些, 我会失业的."
我没有回复他. 这是我渴求已久的会面, 我不敢搞砸. 对方向前探身, 距离我更近了些:"有人会仔仔细细地看你的书, 会从蛛丝马迹里发现我的身份."
他曾经是才华横溢的研究员, 学者, 直到他的朋友创办了家小型科技公司, 他参与进来, 一同呵护公司的成长. 最终这家公司长大了, 然后又被一家科技巨头收购了. 这就是他了.
他为这家科技巨头研发了核心算法, 获得了一大笔钱; 还签署了正式法律文件, 禁止与任何人谈论他的工作. 但随着时间流逝, 他的担忧 -- 实际上是他的内疚与日俱增."这是没有责任的权力," 他暂停了一下继续说,"权力这么大, 责任却这么少. 还不是名义上的抽象权力, 这是日常生活中的真实权力, 是物质的, 文化的, 金融的权力. 这个世界必须知道它是怎么运作的.'丹麦, 恐怕发生了些不可告人的坏事呢.'" 他有点夸张地引用了《哈姆雷特》.
他决定冒次险."如果他们发现这是我说的, 我会被赶出办公室, 从科技领域被驱逐出去. 这是最好的情况了." 他不只跟我谈他的工作, 还向我展示了一些东西.
这位研究员从包里拿出自己的笔记本电脑, 轻敲了几分钟, 带着一种合时宜的庄重, 把屏幕转向我."这是所有的东西." 白色的屏幕上有着整整齐齐地排列在盒子里的指令.
第一步:"In [3]".
接下来:"In [8],in [9]"
这些单词五颜六色, 有绿色, 紫色, 红色, 粗体, 斜体...... 不一而足. 我看向研究员, 他脸上露出了自豪的笑容. 这就是它了, 真正影响人们生活的算法. 它看上去...... 十分普通.
23 个世纪前, 希腊数学家埃拉托色尼 (Eratosthenes) 坐在亚历山大图书馆内, 试图找到一种识别质数的方法. 他把 1-100 这 100 个数字写成 10 行, 每行 10 个数字. 他先划掉 1; 接着他圈出当前数列中最小的数字 --2, 然后删掉所有 2 的倍数; 圈出 3, 然后删掉所有 3 的倍数...... 他创造了一个算法, 本质上非常简单. 就像所有算法一样, 他的 "筛子" 接受输入, 遵循一系列描述准确地步骤, 并生成输出. 输入, 处理, 输出: 这就是算法的全部.
纵观历史, 算法一直被用来解决各种各样的问题. 它们有时被应用于天文计算, 有时又用来制作时钟, 甚至还可以把秘密信息转化为密码. 研究员说:"直到 90 年代, 算法仍然处于非常简单的状态. 以前的算法是非常清晰的. 比如, 你把 Google 的原始算法拿出来, 你能很直观地看出它基本上就是关于受欢迎程度的算法: 你只需要把人们点击次数更多的东西呈现出来(或者让它排名更高). 总的来说, 设计它的人理解它的整个工作." 有些算法就更复杂了, 但输入 - 处理 - 输出的整个流程通常清晰, 可理解, 至少对设计和使用它们的人来说是这样的.
他屏幕上的算法也是为解决问题而设计的. 它以一种重要的方式对现实进行了排序和重组, 试图将重要的和不相关的区分开. 但它不同于非常简单的算法(Really Simple Algorithms,RSAs)."它比看上去复杂多了," 研究员说, 一边用铅笔在方括号里的一些单词上划来划去,"但我需要告诉你原因." 就这样, 我们开始了他的创作之旅.
首先, 它引入了 "库" 的概念. 库是定义, 指令和操作的特定语音. 接着, 研究员向我展示了它是如何带来数据的. 他说:"喂给算法尽可能多的数据, 越多越好. 事实上, 我们处理的数据比大多数团队多得多." 他把光标移到给算法提供海量数据的脚本上. 吉字节, 太字节, 拍字节的数据有序排列在页面上.
通过指令 15,"函数" 添加完成. 研究员高亮了每一个函数, 说:"每个函数都是一个小工厂. 它们是算法的基本组成部分 -- 子算法." 他展示了自己是如何构建这些 "积木"(building block)的: 将 "get component","filter by station","sort_nodes_in_degree" 等短语串 (string) 在一起. 然后是主要的 stage. 他说:"这是算法起作用的一端, 我就把'积木'堆在这里." 他应该向我展示这些函数是如何联系起来的, 但我不懂这些. 我说:"我不明白, 你如何做到跟踪什么在做什么的?"
每一个子算法函数 -- 他的 "积木", 都是另一个完整的房子. 每一个都是复杂的指令和处理过程, 有些本身就是由子算法 "积木" 组成的. 屏幕看上去很简单, 但我看到的是积木套积木的蓝图: 短短几页代码里就又数百万条指令. 它的设计者就坐在我旁边, 但就连他也在努力解释这些 stages, 当他试着在头脑中保持一层又一层的抽象概念时, 他也在追溯这些步骤并纠正自己. 他似乎讲完了, 但又停了下来, 说:"我真的不记得最后一点是怎么来的了."
当然, 这位研究员明白自己在处理中喂了什么数据, 他知道设计的目的, 也知道算法要解决的问题及它处理后的输出. 然而, 在试着解释一个多小时之后, 他筋疲力尽地坐在椅子上, 说:"是, 正如你看到的, 输入和输出之间的差距很难理解." 他在算法中注入了大量的信息, 他说这是一种 "趋势", 因为在那个科技巨头里, 他能做到, 也就意味着每个人都能做到. 但数据的总量意味着很难判断其中的显著输入是什么."从人类的角度来看, 你不确定哪些输入是重要的, 很难知道驱动输出的究竟是什么. 作为人, 很难回溯到为什么要做出这样的决定."
在这个科技巨头内部, 算法很少单独存在. 相反, 它们存在于网络中, 纠缠在一起, 相互利用, 相互增强. 研究员说:"我依赖于其他算法产生的信号." 其他算法把自己的输出喂给他的算法. 就像汽车装配线, 他和他的同事们一样, 在一个巨大的流水线中仅处理一个小的, 特定的部分, 然后这些小部分汇集起来, 形成更为庞大的结果输出, 最终呈现在人们面前的是一个庞然大物.
算法也在不断变化. 数据输入是实时流入算法的, 但是算法的实际权重, 度量和权衡并不是静态的. 研究员在机器学习中编织的一些函数, 机器学习是机器不断学习和适应最重要的图式, 相关性和关系的技术. 这意味着随着世界的变化, 算法被喂的数据也随之变化, 算法也就在不断发生变化, 只不过越来越复杂, 越来越具有与其他算法密不可分.
我们坐在那里, 看着电脑中他的代码以多种颜色的字体呈现. 这位研究员沉思着说道:"这一切都与复杂性有关. 输入的复杂性, 分析的复杂性, 输出是如何组合, 结构化和使用的复杂性." 他被雇来设计该进程的原因之一是它可以通过自身成为复杂本身来解决复杂性. 它抓住了各种令人眼花缭乱的因素, 信号和影响, 它们每时每刻都在以我们根本无法做到的方式相互碰撞, 然后获得结果.
算法已经发生了变化, 从非常简单 (Really Simple) 到无比复杂(Ridiculously Complicated). 它们有能力完成以前从未完成过的任务, 有能力解决以前从未解决过的问题. 它们能, 真的能比人类更好地面对这个深不可测的复杂世界. 但正因为它们可以, 它们工作的方式本身也变得愈发深不可测: 从一个算法到下一个算法的输入循环; 通过更多指令, 更多代码的数据处理. 如此周而复始, 带来的是一个令人抓狂甚至敬畏的系统. 算法的复杂性, 动态性和完全不可理解性意味着在输入和输出之间的部分 -- 没有人能确切地知道它们在做什么. 算法什么都能学习, 而你根本不知道它学习到了什么, 或者在你以为的学习之外还习得了其他什么东西, 说句不好听的, 对此我们完全处于抓瞎状态.
"事实是, 从专业角度讲, 我只能在出问题后才能看到问题的本质. 而且我们完全不可能理解到底发生了什么."-- 好吧, 考虑到我眼前的这位研究员对自己造就的东西的一部分也是相当茫然的, 如果连他都是这样, 普罗大众就更不用说了.
研究员得意地轻轻一挥手, 按下一个键, 算法就开始运行. 20 秒后, 算法运行结束. 白纸黑字呈现着输出. 当然我无法具体描述, 但这是我们每天都要用的一个输出. 算法制造了一种现实, 我们基于此做决定, 它可以改变我们的生活.
研究员浏览了一堆指令, 把一行指令变成了两行. 算法重新运行, 又出现了输出. 但这一次, 输出少了四分之一.
我不由地皱了皱眉, 下意识地问道:"发生了什么? 你为什么要改那里? 你知道两行是错的, 但你怎么知道一行就是对的?"
他指着残缺的结果回答道:"这就是问题所在. 这是一个启发函数(heuristic), 我之前试过, 似乎能运行. 然后我就继续测试它, 结果看上去是正确的. 我不能说这是真的, 我只能说它通过了最低评价标准. 整个算法充满了可能是其他东西的参数. 真理已经死了," 他叹息道,"只有输出还活着, 能为我们所用."
我问:"谁来检查这些呢?"
- "我自己."
- "你的老板呢? 他能检查吗?"
"你已经看到想真正理解它有多难了. 有时我和它作斗争, 而且我创造了它啊. 现实情况是, 如果算法看起来像是在做它应该做的事情, 人们就不会抱怨, 也就没有多少动力去梳理所有这些指令和代码, 看看究竟发生了什么." 你在网上看到的 -- 你阅读的新闻, 你浏览的产品, 出现在你眼前的广告 -- 它们都依赖于不一定非得是真实的 "值". 因为根据这位研究员的说法, 它们都不是真的, 它们只是通过了最低评价标准而已.
Jure Leskovec 的保释算法
Jure Leskovec 说话带着浓重的斯洛文尼亚口音, 坚持着发大舌音. 回到学术界之前, Jure 曾在 Facebook 工作过一段时间, 还在 Pinterest 担任过首席科学家. 我们坐在他位于斯坦福的办公室里, 斯坦福和加州其他科技中心一样, 似乎在迅速扩张. 就在我们聊天的时候, 炽热的白色尘土从他的窗户下方的施工地飘了上来, 似乎在预示着将来这里的场景会和现在一样热火朝天.
他抓起一支笔, 走向一个巨大的白板(这占据了他办公室一整面墙). 他最近的工作时设计一种算法, 帮助刑事法院的法官在是否批准保释的问题上做出更好的决定. 他边在黑板上画出一个大黑色矩形, 里面有一个巨大的 J, 边说:"有一个法官, 一个被告, 法官试图做出一个决定: 如果被告获得保释, 他会不会犯罪? 我可以训练一个机器学习算法来回答这个问题:'如果我释放你, 你会不会再次犯罪?'"
Jure 兴奋地在办公室里勾画草图, 白板上的涂鸦变得更加丰富. 他收集了一些人的犯罪记录数据, 其中一些人在获得保释之后选择了再次犯罪, 另一些人没有. 他还通过比较宽容和严格的法官这种方法, 构建关于那些被释放但通常会被关押的人的数据, 以及他们是否也犯了其他罪行的数据.
来源: http://www.tuicool.com/articles/ey6Fbu7