写点什么

揭秘黑盒子:算法是如何产生的?

  • 2022-04-06
  • 本文字数:4731 字

    阅读完需:约 16 分钟

揭秘黑盒子:算法是如何产生的?

随着软件和算法对我们生活方方面面产生的影响越来越大,人们对它们的兴趣也越来越大,并且更加关注算法是如何影响社会、经济和政治的。

 

然而,对算法的大多数社会研究都将它们视为自主运作、晦涩难懂的黑箱。这种观点孤立地看待算法,将它们与人类元素分离开来,就导致我们得出错误的理解和结论。

 

洛桑大学 STS 实验室博士后研究员 Florian Jaton 在《算法的构成》(The Constitution of Algorithms)一书中,尝试从内部探索算法,进而揭示了算法人性化的一面。

 

Jaton 不是先找一个实用算法,试图弄清楚它是如何产生的,而是从看似不相关的实体(如人、欲望、文档、好奇心)开始,然后研究所有这些实体是如何聚在一起相互作用,形成我们所说的算法。

 

Jaton 将人种学与基本事实、编程与算法制定方面的实践结合起来,从而发现了算法创建过程中所有那些细小但重要的细节和实践,并展示了我们和我们创造的算法是如何相互影响的。如此一来,他对算法构成的研究可以帮助我们发现新的方向,从而让我们的软件与我们的价值观保持一致。 

窥视黑盒之内

 

“当我在 2013 年开始对算法这个主题感兴趣的时候,业内已经有了大量关于算法的社会影响的文献,而且它们的分量都不轻。”Jaton 告诉 TechTalks。“这些重要文献研究了算法是如何作用于我们的生活,同时也强调了算法的不透明性质。”

 

虽然这些研究很重要,有助于提升人们对算法在不同层面上影响的关注度,但 Jaton 认为,对算法的力量进行系统性的谴责可能会产生反作用。

 

“我特别关注的是,算法被大多数人认为是由难懂的代码和晦涩的数学,构成的抽象且不接地气的实体。我们到底该怎样对抽象的、不接地气的和晦涩的实体采取行动呢?在我看来,对算法的批判性描述并没有带来多少实证思考的厚度,我们需要集体性的实证思考。但这要做起来是很难的。”

 

Jaton 在仔细审查后发现,问题在于人们都从外部研究算法的。批判社会学家坐在办公室里,通过报告、软件和学术论文等官方说法来观察算法。他认为,这种方法论过滤掉了“曾帮助人们逐渐描绘算法图景的脆弱框架”。

 

Jaton 说:“我在科技研究(STS)方面获得的训练有了用武之地,因为这个社会科学子领域的基本假设之一是将技术-科学装置视为事关处境和责任的实践的产物。对算法的批判言论的一种可能的补救办法可能是立刻转变我们现在使用的方法,转而将人类科学作为指导理论,例如由 Bruno Latour、Michael Lynch 和 Lucy Suchman 的现代人类学研究来引导方向,而不是通过外部文档分析来盲人摸象(虽然后者仍然很重要)。”

 

为了撰写《算法的构成》,Jaton 作为一个研究科学家团队的一员工作了两年半时间,他们正在研究一种计算机视觉算法。当他参与并记录了相关的讨论、数据收集工作、编程会议、代码调试实践和理论的完善过程后,他意识到在社会科学环境中研究算法时,创建算法过程中涉及的很多重要工作都被忽略了。

 

他在书中写道:“算法发展过程中涉及到的底层实践不能再被无视和忽略了:由于它们是人们反复争论的对象,设法记录让算法得以产生的实践过程当然是重要的,或者至少是有趣的”。

 

Jaton 将算法的构成分解为三个主要阶段:实证、编程和制定。

 

算法的构成

实证

 

当一群计算机科学家、研究人员或工程师聚集在一起创建一个算法时,他们最初是由一系列的元素驱动的,这些元素包括欲望、技能、手段和希望。

 

例如,一个研究小组可能想匹敌或者超越以前发表的科学论文的结果。小组的成员有一套数学和编程技能,他们可以依靠这些技能来实现这一目标。他们可能有机会获得计算资源、学术论文和数字工具等助力。最后,他们可能希望在某个科学领域做出突破,比如帮助改善医学成像结果,或者解决一个将来可以产品化的问题,比如创造一个可以检测制造工厂缺陷的算法。

 

但是,在他们开发出能够满足其目标的算法之前,他们必须经历一个问题化和实证化的过程。在这个阶段,研究人员必须精确定义他们想要解决的问题,并确定他们需要的数据类型,以验证他们的算法。

 

例如,图像分类算法需要确定一个物体是否存在于图像中。另一方面,物体检测算法还必须确定图像中物体的坐标。人们也可能用到其他规范,例如,图像是否只包含一个物体或可能包含几个物体?在将使用该算法的环境中,照明条件是否有所不同?物体是在各种背景下出现,还是一直在同一背景下出现?

 

一旦问题被提出来后,研究人员必须收集正确的材料来建立基本事实,使他们能够验证他们的算法和未来要建立的模型。例如,在计算机视觉算法领域,研究人员将收集符合其问题描述的图像数据集,用来训练机器学习模型。然后,这些图像必须被贴上测试算法所需的数据。例如,如果他们正在创建一个物体检测算法,他们必须对每张图像标注图中所包含物体的边界框数据。

 

我们一定要明白,我们思考问题与基本事实的方式将在很大程度上影响我们创建的算法和它们将产生的效果。

 

例如,如果一个物体检测算法是由物体居中这一基本事实推导出来的,那么它在类似的图像上可能效果很好,但在包含多个分散物体的图像上则会惨遭失败。同样,如果一个面部识别算法只针对特定种族的人类图像做了验证,那么它在其他群体的图像上就会表现很差。正如 Jaton 在《算法的构成》中指出的,“我们得到的是针对我们设定的基本事实的算法”。

 

“正面看待基本事实这一问题,我们就可以得出以下结论:算法作为一种技术,只能检索已经被定义好的东西。因此,一旦一个算法产生了一个结果,人们就应该立即问以下问题:这个算法是从哪个基本事实数据库中得到的?这将凸显出算法的内在局限,它们只是优化技术,同时也不会削弱它们的价值和美感——它们可以说是我们迄今为止设计的最好和最美的优化技术。”

 

考察和记录基本事实的过程,对于算法及其对社会影响的研究工作是极为重要的,特别是在它们承担的是敏感任务的时候。已经有许多例子表明,不良的设计导致算法犯了关键性的错误,如做出错误的、有偏见的决定,创造过滤泡沫,以及宣传假新闻。人们越来越想要理解和解决算法带来的风险。对研究和记录基本事实这一过程开发一个完整的研究流程,将是解决这些风险的关键所在。

 

Jaton 在《算法的构成》中写道:“如果对算法的构成有实质影响的工作仍然是抽象和不确定的,那么我们仍然会很难触动这一领域的生态。于是,只要我们能更好地理解构建算法过程中的这一底层实践,就能实现改变根植于算法的偏见,以使其促进多样化的价值这一目标。如果有更多的研究可以探究算法源头关于基本事实的实践,那么我们就可以慢慢揭示出那些构成算法的潜在要素。”

编程


一个算法终于进入了编程阶段,在这个阶段,人们创建出来一组模块和指令列表,以解决定义的问题,并根据基本事实来做验证。尽管这一阶段通常被简化成了一堆纯粹的源代码,但 Jaton 在他的书中表明,编程的内涵远不止于把一堆计算机指令堆砌在一起这么简单。

 

“当认知论者探究究竟是什么让程序存在时,他们无法超越'程序'这一形式本身,而这种形式恰恰是需要解释清楚的。在一个与所谓的心智计算隐喻有关的恶性循环中,认知论者最终提出了无数的(心智)程序来解释(计算机)程序的发展过程,”Jaton 在《算法的构成》中写道。

 

Jaton 在书中描述,这种关于编程实践的问题视角深深扎根于计算的历史中。科学家、研究人员和公司都试图将计算机框定为一种输入-输出系统,说这种系统是按照人脑的形象构建的。然而,在现实中,是人类的头脑到头来被重新想象成了计算机的某种有机版本。

 

这些隐喻将编程简化为向数字大脑提供正确指令集的过程。它们还塑造了程序员的训练和评估方式,更加强调指令的编写,而忽视了所有其他对软件开发有价值的实践。

 

在他的书中,Jaton 记录了他自己和他的团队在编写指令、偶然发现错误、编写中间代码以锁定问题的根源,以及与其他团队成员协商的经验。他强调了为调整和改进程序而采取的那些中间步骤、团队成员之间在完善代码方面的互动,以及其他许多没有反映在最终源代码中的步骤和实践的重要性。在阅读他的书时,我开始反思自己编写代码和实现算法的过程,以及那些对我的工作很重要但我认为理所当然的小细节。

 

“我认为,编程实践中最被忽视的方面是伴随程序编写过程的所有细节指南和规范(程序写好它们就被抛弃了),”Jaton 说。“我发现所有这些点缀在编程序列中的小著作和实验真的很厉害,在我看来,将它们整合到对编码实践的分析工作中,绝对能帮助我们更好地理解这些吸引人的时刻所发生的事情(因为正如 Donald Knuth 所言,软件是很难理解的)。”

 

Jaton 说,对编程实践的微观社会学分析才刚刚起步,所以这方面的命题大多还是探索性的。因此很难说它可能会产生怎样的结果。但他相信,对编程实践的现场微观社会学研究将使算法设计更加灵活。

 

“更好地理解编程实践中涉及的原因和理由,也许会让我们总结出优秀程序员的特殊之处,进而尝试将这种特殊性注入到算法设计社区中。”

制定


最后,当一个算法被实现并针对基本事实做过验证后,它就变成了一个数学对象,以后可以用在其他算法中。一个算法必须经得起时间的考验,证明其在应用中的价值,以及在其他科学和应用工作中的作用。一旦被证明有效,这些算法就会被抽象化,被当作已被证明的主张,不需要进一步调查。它们成为了其他算法的基础和组成部分,并对科学的进一步工作作出贡献。

 

但这里要强调的重要一点是,当问题、基本事实和实现被制定为一个抽象实体后,所有创造它的小细节和事实都会变得不再可见,往往会被人们忽略。

 

STS 长期以来都在说科学对象需要在实验室中制造,所以一旦关于科学对象的书面主张成为了经过认证的事实,这些实验室中的复杂仪器以及使其运作所需的实际工作往往就会被人们抛弃了。

 

一旦人们对一个新的科学对象不再有争议或分歧,往往就会认为自然界已经包含了这个构建好的科学对象......当某项事实经过认证并被纳入进一步的研究中时,探索这一事实过程中涉及的实验、仪器、社区和实践一般都会被搁置一边。

 

但重点在于,我们要意识到算法一旦制定出来就会成为其他算法的基础,进而会对基本事实、编程、制定和其他实践作出贡献。对算法构成的不同阶段有更深入的了解,将使我们更好地对其进行建设性的讨论,并调查其更广泛的影响。

 

Jaton 写道:“这种将算法视为实证、编程和制定活动的联合产物的概念——它们本身往往由可能经历了类似构成过程的其他算法所支持——使整体情况变得更加复杂,同时也使其更容易理解。”

 

事实上,每当人们对一个算法的效果产生争议时,争议者就可以参考这个基本的映射,共同考虑以下问题:该算法涉及的基本事实是如何产生的?从输入数据到输出目标的转变涉及哪些公式?这一切需要哪些编程工作?如果需要更深层次的思考,争议者可以挖掘出另一个层次:哪些算法对这些实证、编程和制定的过程做出了贡献?以及这些二阶算法一开始是如何构成的?

 

放大并查看这个错综复杂的算法网络及与其共同发展的社会组成部分后,我们就得到了一个更宏观的图景,即我们和算法是如何成为彼此不可分割的一部分的。我们在这个领域仍然有很多东西需要学习,需要重新考虑自己的观点。

 

“我越来越觉得,我们总是在其他算法的基础上构建一个新的算法,这让我们记住,关于算法效果和用途的问题仍然是对社会中各种算法的分析工作的核心。的确,在阅读这本书时,人们有时会认为关于算法的效果和用途的社会学/人种学理论与我们平常理解的这些学科截然不同。

 

但仔细想想,这种区分其实是完全不对的,设计新算法的人们也是社会的一部分。他们是使用其他算法并在不同程度上受其影响的行为者,他们有时会用这些算法来构建新的算法。因此,我们不可能完全抛开算法的影响和使用问题,在研究算法的构成时也必须纳入对算法的社会影响的研究。”

 

原文链接:https://bdtechtalks.com/2022/02/21/constitution-of-algorithms-florian-jaton/

2022-04-06 14:003042

评论

发布
暂无评论
发现更多内容

公排自动滑落模式智能合约dapp系统开发逻辑详情

开发微hkkf5566

Java注解系统学习与实战

Java-fenn

Java

详解Java中的异常和处理时间

Java-fenn

Java

Java基础 | 如何用Javadoc Tool写规范正确的java注释

Java-fenn

Java

面试重点:建立Java并发知识体系(含工具全图鉴)

Java-fenn

Java

活动回顾 | 基于英特尔技术的端到端音视频优化

网易智企

音视频

测试必会 | 通过容器化 Python Web 应用掌握 Docker 容器核心技能

霍格沃兹测试开发学社

测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

霍格沃兹测试开发学社

测试开发基础|一文搞定计算机网络(一)

霍格沃兹测试开发学社

java时间日期类

Java-fenn

Java

外包程序员的开源 Java 低代码开发平台光 2.3.0 Beta4 版发布,显著提升生成物质量

Java-fenn

Java

Java毕设项目——超市POS收银管理系统(java+SSM+Maven+Mysql+Jsp)

Java-fenn

Java

测试开发基础 | 计算机网络篇(二):物理层与数据链路层

霍格沃兹测试开发学社

智能遍历测试在回归测试与健壮性测试的应用

霍格沃兹测试开发学社

构建测试平台与对应的组织架构需要哪些能力? 21/100

霍格沃兹测试开发学社

详解:Java 的静态工厂方法

Java-fenn

Java

Java 函数式编程

Java-fenn

Java

数据持久化技术(Python)的使用

霍格沃兹测试开发学社

接口自动化你不懂?听HttpRunner的作者怎么说

霍格沃兹测试开发学社

BAT 名企大厂做接口自动化如何高效使用 Requests ?

霍格沃兹测试开发学社

最流行的接口测试体系,从入门到项目实战

霍格沃兹测试开发学社

测试工程师如何突破职场瓶颈?

霍格沃兹测试开发学社

Baklib|搭建在线帮助中心网页的策略分享

Baklib

页面 帮助中心 在线帮助中心

为什么越来越多的企业开始建立自己的知识库?

Baklib

企业 知识库

解决java多继承问题

Java-fenn

Java

公私域营销新技术:小程序一键转App

Speedoooo

小程序 APP开发 APP软件开发 小程序容器

飞书项目负责人洪涛:从抖音研发到飞书项目背后的管理经验

B Impact

飞书 飞书项目

【数据库】ClickHouse在亿级广域物联标签云平台ZETag Server的探索与实践

ZETA开发者

数据库 物联网 Clickhouse Server 云平台

Java 中HashMap 详解

Java-fenn

Java

怎样才能做好企业内部wiki(维基)?

Baklib

企业 wiki

微软出品自动化神器Playwright,不用写一行代码(Playwright+Java)系列(二) 之脚本的录制及调试...

Java-fenn

Java

揭秘黑盒子:算法是如何产生的?_AI&大模型_Ben Dickson_InfoQ精选文章