《算法的宪法》揭密「黑盒子」:算法关乎数学,更关乎人
2022-03-10 15:21:18来源:新智元
算法,已经成为我们生活中越来越普遍的一部分。
然而,很多对算法的研究仍将它们视为自主运作的「黑盒子」。以这种孤立地观点看待算法,将它们与人的因素分开,可能会导致得出错误的理解和结论。
瑞士洛桑大学STS实验室博士后研究员Florian Jaton的著作《算法的宪法》(The Constitution of Algorithms),通过从内部探索算法,揭示了算法的人性的一面。
Jaton此书的角度比较特别,从看似不相关的实体开始,如人、欲望、文件、好奇心,然后研究所有这些是如何聚集在一起并相互作用,形成我们所说的「算法」的。
「当我在2013年开始对这个问题感兴趣时,已经有大量关于算法的社会影响的文献,而且一般来说是相当关键的,」Jaton说。「这些研究揭示了算法在我们生活中的作用方式,同时也强调了算法的不透明性。」
虽然这些研究很重要,但Jaton对算法的关注点不只于此。
「我特别关注的是,算法大多被认为是由远程代码和晦涩的数学构成的抽象实体,那么,确实如何对抽象、晦涩的实体采取行动?在我看来,对算法的批判性描述并没有产生多少可总结的经验。」
Jaton认为,问题在于,过去对算法的研究是从外部进行的,比如通过报告、软件和学术论文等形式观察算法。这种方法论过滤掉了 「前期对算法的形成发挥了重要作用的框架,而这些因素恰恰是很脆弱的。」
Jaton认为,一种可能的补救办法似乎引入科学意义上的人类学,而不是只靠文件分析(尽管这类分析仍然很重要)。"
写《算法的宪法》一书,Jaton花了两年半的时间,作为一个研究科学家团队的一员,他参与了一种计算机视觉算法的研究。
Jaton参与并记录了讨论内容、数据收集、编程碰头会、代码调试实践和理论的完善等环节。他意识到在实际社会环境中研究算法时,创建算法的很多重要工作都被忽略了。
Jaton将算法的构成分解为三个主要阶段:摸底调查、编程和定型。
第一步:确定Ground Truth实际上,当一群计算机科学家、研究人员或工程师聚集在一起创建一个算法时,最初是由一系列的元素驱动的,包括欲望、技能、手段和希望。
例如,一个研究小组可能想对以前发表的科学论文的结果进行质疑或超越,这些人有一套数学手段和编程技能,可以依靠这些技能来实现这一目标。
然后,他们可能有机会获得有助于完成目标的计算资源、学术论文和数字工具。最后,他们可能希望在某个科学领域做出改变,比如改善医学成像质量,或者解决一个以后可以产品化的问题,比如开发一个可以检测制造厂工艺缺陷的算法。
但是,在开发出能够满足目标的算法之前,这些人必须经历一个「问题化」和「实证化」的过程。在这个阶段,研究人员必须精确定义想要解决的问题,并确定所需要的数据类型来验证算法。
另一方面,一个物体检测算法还必须确定图像中物体的坐标,可能还有其他参数信息:图像是否只包含一个物体或可能包含几个物体?在使用该算法的环境中,光照条件是否有所不同?物体是在各种背景下出现,还是一直在同一背景下出现?
问题有了之后,研究人员需要通过收集正确的材料来建立「基本事实」(Ground Truth),使用来验证算法和之后建立的模型。
以计算机视觉算法为例,研究人员需要收集符合问题描述的图像数据集,并可用于训练机器学习模型。
在「猫识别」算法中,是猫/不是猫的图像标签就是Ground Truth
然后,这些图像必须被附以测试算法所需的数据。例如,如果他们正在创建一个物体检测算法,他们必须用它所包含的物体的边界框的数据来标注每张图像。
重要的是要明白,我们思考问题和Ground Truth的方式,将在很大程度上影响算法及其效果。
比如一个物体检测算法是由物体居中的Ground Truth推导出来的,它在类似的图像上可能效果很好,但在包含多个分散物体的图像上则会惨遭失败。
实际上,正如Jaton在《算法的宪法》中指出的,「我们得到的是关于Ground Truth的算法。」
「因此,一旦一个算法产生了结果,人们的反应应该是:这个算法是从哪个Ground Truth数据库中得到的?」
考察和记录Ground Truth的过程,对于研究算法及其对社会的影响极为重要,特别是在开发算法的目的是为了执行敏感任务的时候。
已经有许多例子表明,不良的设计导致算法犯了关键性的错误,比如会做出错误的、有偏见的决定,制造泡沫,散播假新闻等。
人们对理解和解决算法的风险问题越来越感兴趣。如何对Ground Truth进行彻底的研究和记录,这一过程将是解决算法风险的关键。
在《算法的构成》中,Jaton写道:「只要对算法的构成有影响的实际工作仍然是抽象的、不确定的,改善算法构建和开发的生态就仍然非常困难。」
编程过程最终,一个算法总会走到编程阶段。一系列的模块和指令被创建,用以解决给定的问题,并用基本的事实加以检验。虽然这个过程通常简化为纯源代码,但Jaton在他的书中写道,编程要比把一系列指令堆在一起要复杂得多。
当存在主义者在探究是什么让程序存在的时候,他们看不到比形式更高层次的东西,而这些更高层次的东西才是需要被精确解释的部分。用计算机来比喻思维,这是一种恶性循环。存在主义者最终会提出各种心理上的程序来解释计算机程序和其发展。
这种观点漏洞很多,根植于计算机发展的历史中。科学家、研究人员和企业试图把计算机框定成输入-输出的系统,这种系统是按照人类大脑中的思维模式创造的。
然而实际上,人类的思维是计算机程序的「有机版本」。也就是说,计算机程序是「原版」,人类思维只是人脑复现计算机程序的模式的体现。
这些比喻将编程简化为「给一个数字化的大脑(即计算机)提供一串指令」。这种简化同样改变了训练和评估程序员的办法。在新的理解下,将更加强调指令的编写,而忽视其它所有对开发软件有价值的实践。
Jaton在他的书中记录了他和他的团队编写指令,遇到bug,和其他组员探讨问题的经验。
他强调,在过程中调整、改进程序,和组员多沟通精进代码,还有其它的一些最终不会体现在代码里的步骤、操作,是非常重要的。通过读他的书,程序员们可以对照自己编程、实施算法的过程,可以发现一些平时被忽略了的重要细节。
「我认为,在编程过程中最容易被忽视的方面就是,一些最终被删掉或是在最后的代码中没有体现的临时编码。」
Jaton表示,对编程实践的微观社会学分析才刚刚起步,所以现有的主张和观点大部分都是探究性的。因此,这门学科未来的走向如何很难说。但他相信,通过微观社会学研究掌握编程,会使算法的设计更具灵活性。
对编程实践有更深入理解的程序员往往是优秀的程序员与众不同的地方。优秀的程序员会把深入的理解带到算法设计的社群中去。
算法的最终产生最终,当一个算法落地且被检验之后,就成了一个数学对象,之后可以用在别的算法里。一个算法必须能经受时间的考验,证明其在应用中的价值,以及在其他科学研究或应用中的有用性。
一旦通过这些标准,该算法就不需要再被检验了。它就成了其它新算法的基础或是组成部分,继续为之后的应用服务。
但有一点需要强调一下,当问题、基本规则和最终的落实成为一个抽象实体之后,所有在构建算法过程中的小细节都不再可见。
一个算法在形成以后,会成为其它算法的基础,成为检验其它算法的基本规则。
算法一旦形成,就会成为其他算法的基础,它们将帮助:基础规则的提供、编程、形成算法和其它相关操作。对算法构成的不同阶段有更深入的了解能使我们更好地对其进行建设性的讨论,并探究它们的更广泛影响。
Jaton表示,把算法理解成基本规则、编程、其它算法形成的联合产物,虽然让整体的概念复杂了不少。但是却更加清晰明确。
这样去审视算法的意义,去关注算法所形成的的复杂网络,和它共同进化们的社会组成部分,我们就可以从更宏观的角度去理解为什么算法和人类正越来越不可分割。Jaton表示,「我们还需要在这个领域学习更多东西,不断更新我们的视角。」
当我们看书的时候,有人会觉得算法在社会学上所体现的效果和功用和社会学的概念挺不一样的。但是再多想想的话,这种区别其实是起反作用的。
设计新算法的人也是社会的一份子,他们设计算法,反过来也会被其它算法所影响,他们还会用别的算法来构建新的算法。
因此,不太可能彻底的把算法的效用和使用放在一边闭口不提。我们有必要在算法的设计和实现中把社会学的功能囊括进去。