社计文库 | 社会学如何研究算法?
点击蓝字关注我们
社计者说
当下,算法在塑造社会和经济生活中作用越来越不可忽视,从“算法——>信息消费”的生产逻辑出发,算法通过生产、改造、创造信息,影响信息消费,对经济社会政治生活产生基础性的影响。另一方面,从“数据——>算法”的供应链逻辑出发,数据是算法的生产资料,因此,算法对数据的渴求是必然的。算法的诸多工具性特征在不同的环节,以不同形式产生了影响。例如算法的获得性具有群体难度,官僚、市场、社会机制对算法的反应速度、使用方式都具有显著差异。该如何研究算法?
“批判性地思考和研究算法”一文为社会学如何研究算法提供可能的路径。作者认为研究算法有三个挑战:其一,算法被作为商业与政治机密存在,不仅具有技术门槛也有制度门槛。其二,算法被商业使用,嵌入一定社会政治经济背景。具有极大的复杂性,如何找到合适的切入点是十分具有挑战的任务。其三,算法是一个动态的过程,被称为一个持续的“社会实验过程”因此,如何对不同的算法进行区分,截取哪个观察点与时间点也是考验研究的难点。作者认为,有六种方法可以使用。第一,审查源代码;第二,根据需求自己构建代码;第三,逆向工程;第四,访谈开发者团队或进行民族志调查;第五,将其放到社会环境中考察;第六,审视算法在现实世界中的效果。
社计者团队认为,算法是数字时代绕不过去的研究议题。这一议题的研究需要调动多学科的理论资源,从理解代码的生产逻辑入手,依托算法的公共性,用社会影响力与学术影响力解锁算法黑箱。实际上,人类社会的“算法之路”刚刚开启,当下的算法仅仅处在算法对信息的选择与排序的弱人工智能时代。未来,人工智能将走向人机交互、人机融合与深度态度感知为特征的强人工智能时代,分别从人脖子以下、脖子以上,以及物理、数理、法理的多重融合角度影响人与人类社会。如何理解、干预这些未来力量,需要多学科学者的协同努力。
目前算法已经深入而广泛地渗透到社会的各个领域,发挥着颠覆性和变革性的作用。因此,越来越多学者关注关键软件代码和算法,剖析算法及其权力和工作的性质。他们的研究通常采用三种形式:对单一算法或一类算法进行案例分析以研究算法的本质;对算法在某一领域的应用进行详细的研究;对算法及其性质和它们如何工作进行更全面、更具批判性的阐述。爱尔兰国立大学的罗布·基钦(Rob Kitchin)教授在他的一文“Thinking critically about and researching algorithms”中对这些研究进行了综述和拓展。全文共分成两大部分(批判性地思考和研究算法)向我们介绍如何批判性思考算法的本质、影响和力量、研究算法的三大挑战以及研究方法的优缺点。
批判性思考算法
在第一部分中基钦提出了要批判性思考算法的本质、影响及其力量。尽管计算机科学家和科技公司对算法的描述:它们是“纯粹的理性形式”,但事实上算法完全不是客观的和公正的,它们由各种决策、意识形态、硬件的物质性构成和塑造。此外,创建算法的目的往往远非中性,它们的存在是为了创造某种价值和资本,它们以某种方式推动行为和构建偏好并识别和分类人。同时,算法在本质上是个体发生的(总是处于一种形成的状态),它们一直在被编辑、修订、删除和重新开始,随着时间和空间经历多次迭代。此外,算法在本质上远不是中立的,它是构建和实施权力和知识的制度,其使用具有规范性含义。算法被用来引导和重塑人、动物和物体之间的关系,算法成为对社会规则的补充和调整,但它们又是虚拟的,它们被压缩和隐藏而难以被发现。
算法研究的挑战
除了批判性地思考算法的本质之外,基钦认为我们还需要考虑它们的影响和力量。算法塑造了我们理解世界的方式,它们以软件的形式在世界中工作,并通过它们的执行创造世界,产生了深远的影响,它们具有深刻的表现性。但必须指出的是,算法的影响或其能力并不总是可以预测的,原因有三,首先,算法是一个广泛关系网络中的一部分。其次,算法的性能可能会产生副作用或意外的后果。第三,算法可能有偏见或错误。此外,算法不仅仅是程序员所创造的,它是基于特定输入所创造的效果。
基钦认为,有必要把更多的注意力放在算法的生产、部署和影响上,以便理解和质疑它们公开或秘密地塑造生活机会的各种方式。但基钦在全文第二部分研究算法中总结了研究者要面临的三个重大挑战。首先,基钦认为人们经常遇到的最重要的算法都是在隐秘的环境下创建的,因为编码团队需要保护其知识产权和保持算法的竞争力,它们的源代码都隐藏在无法透视的文件之中。其次,算法与上下文紧密联系并且被嵌入到复杂的社会技术集合中,大多数算法是大型团队集体协作的作品,它是由许多在不同时间和有不同目标的人制作和维护的,因此难以在实践中完全理解一个算法系统。此外,算法是个体形成的、偶然发生的,它与输入有很大的关联,这都意味着它的结果难以被完美预测和控制。
算法的六种研究方法
基钦挑选了六种研究算法的方法进行批判性评价。第一种研究方法是审查伪代码和源代码。尝试理解一个算法最明显的方法可能是检查它的伪代码或它在源代码中的构造。虽然该方法有利于观察算法是如何构建和运行。但是该方法有三个重要问题,一是因为代码结构混乱、杂乱无章,解构一个随时间变化的代码并不容易;二是它要求研究者必须是该领域的专家,很少有社会科学家和人文学者拥有这种能力;三是该方法在很大程度上使算法脱离了更广泛的社会技术组合和使用。
第二种研究方法是根据自身需求构建代码。一种相关的方法是进行将任务翻译成伪代码以及在代码中生成算法的实践,反思和批判性地质疑自己翻译和构建算法的经验。尽管这种方法将为如何创建算法提供有用的见解,但它也有一些局限性。首先是反思时所涉及的内在主观性。其次,在寻求自我反思时,通常发生的事情可能会以未知的方式发生变化。此外,它还将任何非表征性的、无意识的行为排除在分析之外。
第三种方法是逆向工程。由于代码仍是“黑匣子”,对其核心算法感兴趣的研究人员只能选择逆向工程已编译的软件。主要的方法是选择虚拟的数据,观察其在不同的情景下输出什么。比如,研究人员可能在多个司法管辖区的多台计算机上使用相同的术语来搜索谷歌,以了解其推荐(PageRank)算法是如何构建和在实践中工作的。虽然逆向工程可以揭示一些嵌入到算法中的因素和条件,但它们通常不能有任何特殊性,因此,它们通常只提供算法在实践中如何工作的一角,而不是它的实际构成。同时,许多系统意识到许多人在试图确定它们的算法,因此试图识别和阻止机器人用户。
第四种方法是访谈开发者团队或进行民族志研究。这是一种揭露算法生产背后故事并可对其目的和假设进行询问的方法。例如,罗斯伯格(Rosenberg)对一家公司试图生产一种新产品的研究,期间他获得了对该公司的全面访问,包括观察并与程序员交谈,访问团队聊天室和电话会议。这个方法有助于研究者确定算法构建背后的原因,但算法和它们的工作的特殊性都没有被分解和细化。
第五种方法是将算法放在现实世界中考察。盖革(Geiger)认为在不考虑算法广泛集合的情况下研究算法,就像在不考虑引入法律、法律机构、实施者(如警察)的情况下研究法律一样。解开算法的所有社会技术组合有助于揭示算法是如何被想象和阐述的,阐明那些创造和促进它们的人是如何理解它们的。但收集数据和获取内部链接以解开社会技术组合并非易事,同时它又是大案例研究,需要由一个专门研究小组协作开展。
第六种方法是审查算法在现实世界中的效果。考虑到算法在世界上是主动工作的,重要的不仅仅是关注算法的构建以及它们在更大范围内的生产,而且还要检查它们是如何在不同的领域被部署来执行多种任务。这类研究需要在特定的系统和技术的使用中对不同人群及个体如何通过算法与软件接触进行民族志研究,包括评估他们的意图,他们对相关后果的理解、接触的方式及感觉等。
到目前为止,与大量从更技术的角度研究算法的文献相比,学者们对算法的批判性关注非常有限。本文对这一方面的贡献是:推进对算法作为偶发的、个体发生的并嵌入更广泛的社会—技术组合的理解;详细说明算法学者所面临的认识论和实践上的挑战;批判性地评价六种有前途的方法选择。每种研究方法的优缺点各不相同,如何更好地了解算法的性质、生产和使用,还可以采用哪些其他有益的研究方法,这些都需要学者继续批判性地研究和思考算法。
作者:
梅建昊 中国社会科学院大学社会学系
孙萍 中国社会科学院新闻与传播研究所
参考文献:
Kitchin, R. (2017). Thinking Critically About and Researching Algorithms. Information, Communication & Society, 20(1), 14-29.
往期文章:
社计未来
欢迎关注我们!