上帝就是黑箱。

编者按:本文节选自Carl Miller的《诸神之死:新的全球权力攫取》(The Death of the Gods: The new global power grab)。原文标题God is in the machine。

2012年,格鲁吉亚第比利斯,一名员工展示“警察用平板电脑”

版权来源:David Mdzinarishvili/路透社

研究员和我的秘密谈话

“如果有人知道我说了这些,我会失业的。”

我没有回复他。这是我渴求已久的会面,我不敢搞砸。对方向前探身,距离我更近了些:“有人会仔仔细细地看你的书,会从蛛丝马迹里发现我的身份。”

他曾经是才华横溢的研究员、学者,直到他的朋友创办了家小型科技公司,他参与进来,一同呵护公司的成长。最终这家公司长大了,然后又被一家科技巨头收购了。这就是他了。

他为这家科技巨头研发了核心算法,获得了一大笔钱;还签署了正式法律文件,禁止与任何人谈论他的工作。但随着时间流逝,他的担忧——实际上是他的内疚与日俱增。“这是没有责任的权力,”他暂停了一下继续说,“权力这么大,责任却这么少。还不是名义上的抽象权力,这是日常生活中的真实权力,是物质的、文化的、金融的权力。这个世界必须知道它是怎么运作的。‘丹麦,恐怕发生了些不可告人的坏事呢。’”他有点夸张地引用了《哈姆雷特》。

他决定冒次险。“如果他们发现这是我说的,我会被赶出办公室,从科技领域被驱逐出去。这是最好的情况了。”他不只跟我谈他的工作,还向我展示了一些东西。

这位研究员从包里拿出自己的笔记本电脑,轻敲了几分钟,带着一种合时宜的庄重,把屏幕转向我。“这是所有的东西。”白色的屏幕上有着整整齐齐地排列在盒子里的指令。

第一步:“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兴奋地在办公室里勾画草图,白板上的涂鸦变得更加丰富。他收集了一些人的犯罪记录数据,其中一些人在获得保释之后选择了再次犯罪,另一些人没有。他还通过比较宽容和严格的法官这种方法,构建关于那些被释放但通常会被关押的人的数据,以及他们是否也犯了其他罪行的数据。

他说:“关键是,算法比人类法官的表现好30%。迄今为止,这些机器学习算法主要被用于互联网中的‘猜你喜欢’,你肯定明白这个的。我想说的是,这些风险很低。你可能看到一条不喜欢的广告。你可能因为看了不好的电影而不开心。这是最坏的情况了。但如果将这些算法应用到高风险领域——”

“这种应用越来越多吗?”我插嘴说。

“我认为这种应用越来越多了。然后就必须保证我们开发的方法,以及关于我们使用这些方法的途径、验证它们的方法的标准都是非常严格的。”

据《华尔街日报》的报道,美国至少有15个州已经使用自动风险评估工具来帮助法官做出假释决定。Predpol和许多其他公司一样,能够使用算法根据过去的犯罪行为预测未来可能发生犯罪的地区。Pegged是一家提供智能猎头服务(以人工智能为动力,以大量数据为动力)的公司,能够帮助找到特定工作的最佳人选。算法被用作合同谈判代表,可以在瞬间决定提供和接受哪些条款。算法不仅变得越来越复杂,而且承担着越来越重要的工作,你已经看到了——保释判决也好,别的什么也罢,换句话说,如果将来有更多的领域引入了算法来进行决策或者说辅助决策的话,我一点也不会吃惊的。

Jure说:“我认为一场巨大的革命即将到来,关于在社会中如何做决定的革命。”他并不是说算法应该取而代之,只是说它们应该用来支持人类的决策,“刚才保释的例子——我可以说算法做得更好。我提倡让我们用这些算法来帮助人类法官。他们有时候很艰难;他们只有一分钟的时间来做决定;他们经常没有关于他们是否做出了正确的决定的反馈;法官之间也没有知识共享。我认为很明显,当人与机器能够访问相同的数据时,机器就会打败人。我们一遍又一遍地看到这个结果。而要做到这一切,只要给它足够的数据就行了。”他的想法的确让人不由地思考算法以及我们人类的未来,在我看来,人类已经赋予了算法真正的决策权,容许它们在那些隐藏着的复杂过程中完成决策,而我们其实对过程一无所知,这才是让人有点不寒而栗的事情。

“数学毁灭武器(Weapons of math destruction)”是作家Cathy O’neil对那些令人讨厌、有害的算法的描述,它们不像人类决策者那样面临同样的挑战。假释算法(不是Jure的算法)会基于收入或(间接的)种族偏见做出决定。招聘算法会基于错误的身份而拒绝候选人。在某些情况下,比如维持治安,它们可能会创建反馈循环:将警察派往犯罪较多的地区,然后导致更多的罪犯被发现,也许在无意中造就了自我实现的预言。

对算法“讨厌”或者认为算法“有害”的想法,毋宁说是我们对自己无法掌控未知事物的恐惧的映射。没错,算法也许助力甚至取代了我们的决策,但问题就在于很多情况下,我们根本不知道这个过程。研究员冒着巨大的风险向我展示了他所创造的东西,因为他的算法,就像大多数真正影响我们的算法一样,是专有的和隐藏的,它们是昂贵的知识产权。不管它们是有意还是无意隐藏起来的,我们都无法理解,也无法挑战。正如学者Frank Pasquale所描述的那样,这是一个“黑箱社会”,被一种全新的保密制度所危害的社会,这种制度掩盖了那些影响我们生活的自动判断。

正如Jure所怀疑的那样,如果机器判断在重要决策方面明显优于人类判断,那么使用它的理由只会越来越充分。在输入和输出之间的某个地方——过程本身的决策部分——是一种能够以有意义的方式塑造我们生活的东西,但它已经变得越来越难以理解,而我们还要眼睁睁地看着它“攻城略地”,在本该由我们说了算的情况下堂而皇之地取代我们。

Jure强调说:“我们需要加快步伐,想出以公正的方式评估-审查-算法的方法。我们要能理解和解释他们的决定。我们不想要最优算法,我们想要一个足够简单的算法,专家看了之后会说:‘别怕,不会有什么疯狂的事情发生的。’我认为我们需要做好准备,认真考虑如何把这些东西应用于社会日常,为它们在高风险的决策环境中一展身手铺平道路。因此关键问题就在于,我们该如何调试这些东西才能确保它们的决策质量好效率高。”

现实中发生的事情比任何单一算法都要深刻。有时,它们几乎处于新哲学的前沿。“上帝就是机器,”研究员告诉我,“黑匣子就是真相。如果有用,就有用。我们甚至不应该试图弄清楚机器输出的是什么——它们会选择那些我们甚至不知道的模式。”

————

编辑 ∑ Gemini

来源:36kr

微信公众号“算法数学之美”,由算法与数学之美团队打造的另一个公众号,欢迎大家扫码关注!

更多精彩:

☞如何向5岁小孩解释什么是支持向量机(SVM)?

☞自然底数e的意义是什么?

☞费马大定理,集惊险与武侠于一体

☞简单的解释,让你秒懂“最优化” 问题

☞一分钟看懂一维空间到十维空间

☞ 本科、硕士和博士到底有什么区别?

☞小波变换通俗解释

☞微积分必背公式

☞影响计算机算法世界的十位大师

☞数据挖掘之七种常用的方法

算法数学之美微信公众号欢迎赐稿

稿件涉及数学、物理、算法、计算机、编程等相关领域,经采用我们将奉上稿酬。

投稿邮箱:math_alg@163.com

上帝就在机器里:复杂算法背后隐藏的可怕现实相关推荐

  1. AI创业成功公式:数据×数据+机器学习能力+算法

    投资者最关注的事情之一就是创业者是否找到了自己的护城河.以及,在未来岁月里,你的护城河是否越挖越深.在AI时代,一家希望在AI领域创业成功的公司的护城河是什么?不是算法,不是数据,而是数据的平方. 这 ...

  2. 探索强化学习算法背后的思想起源!

    https://www.toutiao.com/a6630657888442384909/ 接受生物大脑的混乱和电子大脑的秩序 人们对人工智能的追求总是与另一场斗争交织在一起,更富有哲理.更浪漫.更不 ...

  3. 逻辑回归算法c语言_逻辑回归算法背后的数学

    逻辑回归算法背后的数学 看完深蓝学院的机器学习公开课后,对于逻辑回归部分,打算写篇学习笔记记录总结一下,也和大家共同分享. 1 基本思能 逻辑回归(Logistic Regression)和线性回归( ...

  4. 求最小生成树-Prim(普里姆算法)

    普里姆算法时间复杂度为O(V^2),适用于稠密图 #include <iostream> using namespace std; #define Maxsize 100 typedef ...

  5. USACO 3.1 Agri-Net 最短网络 (最小生成树)(普里姆算法)

    题意 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助.约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场.为了用最 ...

  6. 最小生成树(普里姆算法【Prim】与克鲁斯卡尔算法【Kruskal】)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  7. JavaScript实现prim普里姆算法(附完整源码)

    JavaScript实现prim普里姆算法(附完整源码) Comparator.js完整源代码 Heap.js完整源代码 MinHeap.js完整源代码 PriorityQueue.js完整源代码 G ...

  8. 机器学习-算法背后的理论与优化(part5)--结构风险最小(下)

    学习笔记,仅供参考,有错必纠 参考自:机器学习-算法背后的理论和优化: 文章目录 结构风险最小(下) 回归的正则化 L 2 L_2 L

  9. 机器学习-算法背后的理论与优化(part2)--广义线性模型

    学习笔记,仅供参考,有错必纠 参考自:机器学习-算法背后的理论和优化: 广义线性模型 广义线性模型的定义 对于第一个问题,后面的分析中会看到在一定的假设下选择Sigrnoid函数是一种必然. 关于第二 ...

最新文章

  1. Upwork 发布最赚钱的编程语言 Top 15
  2. java arp 攻击_基于Jpcap的Java ARP断网攻击
  3. MyBatisPlus插件扩展_PaginationInterceptor分页插件的使用
  4. shell 脚本逻辑判断
  5. 31.javaweb简介
  6. 「网络流24题」 题目列表
  7. C++ 模板何时被实例化
  8. 移除string的最后一个字符几种方法
  9. delve应该安装到哪_消防水炮安装高度为多少米标准
  10. 增加javascript的 trim函数
  11. Android中binder,hwbinder,vndbinder之间的关系
  12. 阿里开源 10 年,这封信里也有 Flink 的身影。
  13. lua学习03:tolua的编译和使用:C/C++调用lua、lua调用C++、lua调用tolua、常用tolua和lua的API介绍
  14. cesium-模型处理(FBX2GLTF)
  15. Excel技能之查找筛选排序,同事竖起大拇指
  16. 18771:奶牛的草(multimap)
  17. GPS手机射频的一些测试项目
  18. 阿里云现代农业园区解决方案,智慧园区大数据、产品管理、物联网、企业管理平台解决方案
  19. R语言时间序列分析之ARIMA模型预测
  20. Oracle全文索引

热门文章

  1. 使用javafx百行代码搞定多边形面积计算(可下载)
  2. java ee ide 添加spring,如何在Eclipse IDE项目文件夹中为spring添加jar文件
  3. android scrollview居中,使用 HorizontalScrollView 实现滚动控制
  4. win7系统一直反复重启_iPhone7开机白苹果反复重启进不了系统维修过程
  5. 软件工程教学博客 (备份)
  6. 软件使用手册模板_我的印象笔记使用手册(精简说明)
  7. json最大长度限制_api接口返回动态的json格式?我太难了,尝试一下 linq to json
  8. IOC操作Bean管理XML方式(FactoryBean)
  9. hsv 直方图均衡化_Opencv从零开始 - 「启蒙篇」- 直方图、直方图均衡和反向投射...
  10. android opencv 水印,关于opencv对图片添加水印