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