【美】约叔华•A. 克鲁尔等 著 沈伟伟等 译:可问责的算法 ||《地方立法研究》
可问责的算法
作 者 :
约叔华•A. 克鲁尔(普林斯顿大学信息技术政策研究中心研究员)
乔安娜•休伊(普林斯顿大学信息技术政策研究中心副主任)
索伦•巴洛卡斯(普林斯顿大学博士后研究员)
爱德华•W. 菲尔顿(普林斯顿大学计算机科学与公共政策罗伯特•E. 卡恩讲席教授)
乔尔•R. 瑞登伯格(福特汉姆大学法学院斯坦利•D和尼基•瓦克斯博格讲席教授)
大卫•G. 罗宾逊(耶鲁大学法学院信息社会研究中心访问学者)
哈兰•余(斯坦福大学法学院互联网与社会研究中心学者)
译 者 :
沈伟伟(中国政法大学法学院副教授,美国宾夕法尼亚大学法学院SJD)
薛迪(清华大学法学院研究生)
来 源 :《地方立法研究》2019年第4期,因篇幅较长,已略去原文注释。
许多传统上由人做出的重要决策,现在都是由计算机做出的。算法统计选票、批准贷款和信用卡申请、指定公民或社区进行警务审查、选择纳税人进行税务审计、批准或拒绝移民签证等。然而,监管此类决策流程的问责机制和法律标准,尚未跟上技术的步伐。目前,可供决策者、立法者和法院使用的工具,是为监督人类决策而设计的,当把它们应用于监督计算机决策时,通常会失灵。例如,如何判断一个软件的意图?由于自动化决策系统可能会输出不正确、不合理或不公平的结果,因此,我们需要采取其他手段,以使此类算法具有可问责性和可操控性。本文提出了一套新的技术措施,它能够以法律公平为准绳,来验证自动化决策。法学界的主流文献认为,算法透明可以解决这些问题。本文对这一主流观点提出挑战。通常而言,源代码的公开,既不必要(由于计算机科学中的替代技术),也不足以证明决策流程的公平性(由于分析代码时所存在的问题)。此外,算法透明也可能是不可取的,例如,它可能会披露个人信息,也可能会帮助不法分子或恐怖分子与税务审计或安全检查的系统进行周旋。真正的核心问题是:如何使自动化决策更具可问责性,以确保公民个体和整个社会的利益?本文认为,技术正在创造新的机会——以比算法完全透明更巧妙、更灵活的方式,来设计自动化决策的算法,使其更好地顺应法律和政策的目标。这样做不仅可以改善当前对自动化决策的治理,而且在某些情况下,还可以改善普通决策的治理。人类决策者的内在(或外在)偏见,很难被发现和根除,但我们却可以窥视算法的“大脑”:计算过程和目的规范可以在事前声明,并在事后验证。本文介绍的技术可以得到广泛应用。它们可以用来设计私营机构和公共部门的决策流程,并可根据决策者、监管者或公众的需要进行定制,用以验证不同的特性。通过更加仔细地权衡决策规则的影响,它们也会激活政策讨论,以及更细致的法律标准审查。因此,这些工具在整个法律制度和社会制度中,将有深远的影响。文章分四部分。第一部分简单介绍了相关基础计算机科学技术。这些技术可用于检验和证明自动化决策是否符合法律公平,而无须公开决策的关键属性或做出决策的整个过程。接下来,第二部分阐述了这些技术如何确保决策具有程序规制性(procedural regularity)这一关键治理属性,即决策是根据在每个案例中统一适用的、既定的规则做出的。我们介绍了如何使用这种手段,来重新设计和解决签证抽签的问题。在第三部分,我们进一步探讨了其他计算技术如何确保自动化决策对实质性法律和政策选择的忠实程度。我们论证了如何使用这些工具,来确保避免某些不公正歧视,以及自动化决策的过程如何顺应管理决策的社会标准或法律标准。我们还论证了自动化决策如何使现有的差别对待和差别影响的理论变得更为复杂。除此之外,我们还讨论了,计算机科学——尤其是在大数据和机器学习的背景下——近期在监督和消除算法歧视方面的努力。最后,在第四部分,我们提议进一步加强计算机科学、法律和政策之间的协作,以推进问责制自动化决策流程的设计。
关键词 :自动化决策 可问责性 算法透明 算法审计 程序规制性
◆ 引言
◆ 一、计算机科学家如何设计和评估软件
◆ 二、设计符合程序规制性的计算机系统
◆ 三、设计算法以确保对实质性政策选择的忠实程度
◆ 四、促进跨计算机科学、法律和政策的协作
引言
许多历史上由人类做出的重要决策,现如今都是由计算机系统做出的:算法统计选票、筛选选民名单、批准贷款和信用卡申请、决定福利和财政援助、选定纳税人进行税务审计、指定公民或社区进行警务审查、挑选安检航空旅客、批准或拒绝移民签证。自动化决策的效率和准确性,确保了其适用领域将继续扩大。即使是我们的日常活动,现在也涉及复杂的计算机决策:大到汽车,小到家电,它们现在都持续执行计算机代码——这是其正常运行的一部分。
然而,管理决策流程的问责机制和法律标准,却尚未跟上技术的步伐。目前可供决策者、立法者和法院使用的工具主要用于监督人类决策者。许多人认为,我们当前的框架并不能很好地适应计算机可能产生不正确、结果的情况。公民,乃至作为一个整体的社会,对于这些自动化决策的可问责性,有着强烈的诉求。为了有效控制这些新设计,我们必须弥合这一鸿沟。
在本文中,我们阐述了权力机关如何证明自动化决策公平适用既定法律,我们还讨论了公众和监督机构如何验证自动化决策是否符合法律公平的核心标准。我们考察了两种手段:第一种是事前手段,旨在确定决策流程按预期工作(通常由技术人员和计算机科学家来实施);第二种是事后手段,比如审查和监督(它们在现有治理制度中很常见)。我们的建议旨在利用事前手段,来确保事后手段能够有效地发挥作用。具体而言,我们阐述了如何使用技术措施,来验证计算机系统的正确性,以确保留存合适的证据以供事后监督。
我们首先从软件验证、算法测试和密码学的领域入手,简要介绍了我们的论点所依赖的计算机科学概念。我们的论点是基于如下事实所做出的:技术人员理论上能够且实际上也可以验证一套软件系统是否按照既定设计方案来运作。世界上不存在一个完全神秘的计算机系统。虽然我们不主张对计算机系统的设计者施以任何特定的责任制度,但我们阐述了计算机科学家和其他技术人员可用工具的范围,并说明了这些工具如何确保系统满足特定的政策目标。尤其值得一提的是,虽然其中一些工具主要是为了向系统的设计者或操控者做出说明,但我们可以利用其他已有的手段,来说服更广泛的受众,这其中包括监管者,甚至还包括社会公众。
在计算机系统的设计过程中,比起那些在设计之后接入既有系统的工具,可用的工具要强大得多,也要丰富得多。我们认为,在许多情况下,为了使利益相关方实现问责制目标,我们可以去设计一个具有可问责性的系统,但这并不是通过算法透明来实现的。
本文认为,我们能够设计出一种计算机系统,它可以向监督机关和公众证明,决策是根据一套既定的、统一适用的规则做出的。我们称之为程序规制性(procedural regularity)。为了确保程序规制性,我们设计了一些技术措施,这些技术措施可以被用于实现某些实质性政策选择,例如,刻意屏蔽某一特定属性(为防止种族歧视,在信贷决策中,屏蔽客户的种族信息)。程序规制性确保了决策流程对于标准和实践的统一适用。但它却并不能保证决策流程本身是否合理。决策流程本身是否合理或是否有足够论据支持,这是独立于程序规制性的另一个问题。尽管对于自动化和非自动化治理系统来说,程序规制性很好理解,也普遍适用,但它仅仅是研究算法公平性的原则之一。
即便计算机系统屏蔽某些属性(比如,在应聘的自动录取环节,为避免性别歧视,系统屏蔽应聘者的性别信息),质疑计算机系统是否能够避免某些类型的不公正歧视,也很常见。稍后我们将展开讨论,新兴的计算技术如何确保自动化决策满足其他公平性诉求,这些诉求不仅是程序性的,而且也积极考虑到计算机系统的实质影响。我们特别关注那些应对算法歧视的技术(即使是在机器学习系统中,这些系统从数据而不是从程序员编写的代码中习得决策规则)。最后,我们提出了一些建议,以促进计算机科学家和决策者之间逐步出现的且极其重要的合作。
20年来,法学家们不断主张,自动化决策需要更高的透明度,但这种透明度应该以什么方式体现出来,尚未有定论。也许最直白的方式,就是公开系统的源代码,可充其量,源代码公开只能部分解决自动化决策的可问责性问题。对于非专业人士来说,计算机系统的源代码是难以辨识的。事实上,即便是专业人士,也常常难以理解源代码会产生什么效果。这是因为检测源代码本身,对于预测计算机程序将如何运行,作用极其有限。而且,机器学习——作为一种日益流行的自动化决策手段——特别不适合于源代码分析,因为它涉及的决策规则本身是从被分析的特定数据中生成的。有时候,这种算法是没有人能够解释的。在这种情况下,源代码只能让审查者了解到极少的内容,因为这些源代码只披露了其所使用的机器学习手段,而不公开数据所驱动的具体决策规则。
此外,在人们关注的许多情况下,算法完全透明是无法实现的。比如,决定哪些纳税申报表需要审计或者哪些旅客在机场进行二级安全审查的过程,我们可能需要在一定程度上刻意遮蔽决策流程,这么做是为了防止不法分子税务欺诈或恐怖分子规避安全审查系统。当被监管的决策是商业决策时,比如提供信贷,透明度也可能是不可取的,因为它破坏了对消费者数据、商家专有信息或商业秘密的合法保护。最后,当对规则如何运作的解释需要披露有关数据,而这些数据是私密的或敏感的(例如,在决定商业信贷要约时,贷款人审查申请者的详细财务信息),披露数据也可能是不可取的,甚至是为法律所禁止的。
再则,无论采取源代码公开的方式,还是其他方式,使得自动化决策规则实现透明,也仍然不能解决大多数问题。不管算法有多透明,人们仍然会怀疑,在他们自己的个案中,公开的算法规则是否真的被用来做出决策。尤其是当这个过程中涉及随机因素时,一个被安检抽查或被搜身的人可能会想:我难道是真的是被公平的规则选中了吗?还是决策者一时兴起,挑中了我?而且,充分披露具体决策是如何做出的,往往并不可取。这是因为自动化决策本身往往包含敏感的健康、财务或其他私人信息,它们作为输入数据、输出结果或两者兼而有之(例如,个人的税务审计状态可能本身是敏感的或是被独立保护的,但这一状态也可能暗示了个人财务数据的细节)。
即使我们将决策的来龙去脉完全披露给被决策的对象,这也存在问题。即使自动化决策是透明的,大多数人没有能力审查这些决策是如何做出的。此外,计算机辅助决策是为决策提供一种规模性的要素,在这些要素中,相同的规则表面上被适用于大量个案或迅速地被适用。审查自动化决策的官员(或协助他们的专家),都会需要审查适用于他们的决策的大量规定,并通常能够将他们的结论推导出其他人的决策情况,从而引发上述隐私披露问题。也就是说,虽然规则的透明度,更有利于审查决策依据,但它并不能代替对特定决策的单独审查。
幸运的是,技术正在创造新的机会——比算法完全透明更微妙、更灵活——以使自动化决策更忠实于法律和政策目标。虽然目前自动化决策的治理尚未成熟,但我们可以通过设计算法来进行治理和问责。这样做不仅可以改善当前针对计算机系统的治理,而且在某些案例中,还可以改善针对普通决策的治理。
本文认为,为了使计算机系统以一种更负责任的方式运行——无论是在执行一个重要的民事程序时,还是从事日常商业活动时——可问责性必须从一开始就成为计算机系统设计的一部分。这些计算机系统的设计者——以及经常监督或控制系统设计的、非技术的利益相关方——在一开始就必须考虑到监督和可问责性。我们提供了当前可用措施的示例,这些措施可以用于计算机系统的设计,并可以为处理政策模糊性和技术精度之间的明显冲突提供帮助。
在本文的第一部分中,我们首先介绍计算机科学家如何设计和评估计算机系统,以及构成它们的软件和算法。尤其值得一提的是,我们阐述了计算机科学家为了验证程序是否具有特定属性,如何做相应评估,并讨论了随机性在大多数计算机系统中的作用。我们还说明了计算机系统的哪些特性可以被测试,并揭示了计算机科学的一个基本定律——计算机系统的某些特性不能被完全测试出来。在我们看来,现实世界中的计算机系统在设计、实施和运行期间都会(或至少应当)定期进行测试,仅仅是为了确认它们是正常运行的。
第二部分探讨了如何以程序规制性为目的,来设计计算机系统。程序规制性是诸多社会的法律和公共政策所体现的一项重要治理原则。我们将讨论如何确保参与者、决策者和观察员按照相同的程序,做出每一个独立的决策——例如,如何确保决策是根据既定规则来做出的,而不是根据决策者的个人意志。我们论证了为什么单纯公开源代码,对于这些目的来说,是不切实际或是不充分的。事实上,如果没有完全的透明性(包括源代码、输入数据和软件的完整操作环境),即使公开程序运行时的操作日志,也不能保证所公开的信息切实反映了计算机系统的所作所为。为了超越完全公开透明的需求,我们将重点放在能够仅仅利用部分秘密信息的工具上,这样一来,即使在出于政策利益、个人隐私、商业秘密或其他顾虑使得计算机系统以及它的输入、输出或它的运行环境无须被披露的情况下,问责制和监督仍能发挥作用。结合之前分析,我们以美国国务院的多样性签证抽签为例,说明如何重新设计现有的、法律授权的自动化决策系统,使其具有可问责性。
第三部分讨论了一个更为宽泛的问题:如何评估计算机系统是否忠实执行程序规制性的政策原则。这包括确认自动化决策系统是否以符合管理决策的社会或法律标准的方式对待各类群体(包括受保护的群体)。这种将政策原则转化为系统属性的扩展,将会引发一系列问题。某些实质性的政策原则,很容易被转化成系统属性。比如,预设屏蔽敏感特征的规则。然而,其他一些政策目标(比如防止普遍的歧视)则是更复杂、更令人困扰的事情,特别是当系统的运行依赖于机器学习,而不是由程序员预先设定的决策规则时。我们着重探讨了自动化决策可能引发的算法歧视,找到了新风险,并指出了一些可能符合政策目标的系统设计。最后,我们阐明自动化决策如何使现有关于差别对待和差别影响的理论变得更加复杂。
第四部分呼吁计算机科学家和决策者加强合作,开发和利用算法治理的技术措施。鉴于自动化决策的适用范围不断扩大,对于计算机科学家而言,他们需要了解监管层面上的挑战;对于决策者而言,他们需要了解新兴的和即将出现的技术如何帮助他们来应对这些挑战。我们提出了一些建议,以弥合技术对确切性的诉求与政策对模糊性的需要之间的鸿沟。首先,我们敦促决策者认识到,即使计算机系统的细节未完全披露或必须保密,问责制也是可以实现的。其次,我们还认为,即便政策存在模糊、矛盾和不确定性,我们也应当鼓励计算机科学家做出建设性的支持和参与。
一、计算机科学家如何设计和评估软件
尽管计算机缺乏一些纯物理设备所具备的优点和局限性,本质上而言,计算机是通过编程来完成计算任务的通用机器。计算机工程师们经常寻求强有力的证据,力图证明计算机系统按预期方式来运作。此类证据所尝试说服的对象,或者是系统的创建者和操控者,或者是预先指定的受众(如监督机构),或者是广大公众。在多数情况下,系统在进入实用阶段之前,都要经过仔细的评估和测试。对于确保可问责性而言,最有效和最可取的方式是向公众提供具有充分说服力的且不敏感、可披露的证据。
在本部分中,我们讨论了计算机科学家如何看待软件功能,业内如何设计和测试软件以及有哪些工具可以确保单个软件或大型计算机系统的安全。本部分提供了一系列关键概念的简要介绍,并指出了计算机科学家如何思考和处理这类挑战。
一般来说,计算机程序是接收一组输入,并产生一组输出的系统。我们常常发现,程序无法按程序员的预期来运行,这可能是因为程序存在错误,也可能是因为程序对输入数据做出预设,而这些预设并不总是准确的。程序员通常以评估和测试为目标,来建构或设计程序,以避免这些错误,或者将风险降至最低。许多受人推崇的、流行的软件工程手段都基于如下理念:代码的编写方式应当为分析代码提供便利。
例如,程序员可以采取如下措施:
▪将代码拆分成能够单独评估的模块,然后再拼合起来。
▪单独或分组测试这些模块的功能,甚至可能利用端到端的方式,测试整个计算机系统。此类测试通常涉及编写测试用例或每个模块将运行的预期场景,并且可能涉及每次更改软件时运行测试用例,以避免引入新的漏洞或减损效能。
▪用“认定”(assertion)注释代码。认定,是对代码阐述错误条件导致程序立即崩溃的报错状态。如果程序按预期运行,认定值将为“真”。当出现问题时,认定值将变成“假”,导致程序崩溃(附带错误信息),而不是继续处于错误状态。认定是一种特殊的程序错误——用以考察软件内部状态和运行环境,如果这些状态和环境与程序作者的预设不匹配,则中止认定调试。
▪详细说明程序的行为,并提交可供检验的证据,用以证明程序符合指定属性。这与认定的不同之处在于,这种证明过程可以提前保证程序在所有情况下都能按预期工作(或者换一种说法,证明程序按预期运行的认定值永远为“真”)。如果现实条件允许,这种手段是程序员为测试所能采取的、最有利的方案,因为它可以提供真实证据(而不仅仅是间接证据或局部证据),来证明整个程序是否按预期运行。
这些技术就是更大的工具箱(toolbox)的例证。软件的测试和验证以及软件开发的工具,构成了计算机科学研究的一个复杂而活跃的子领域。一个欣欣向荣的行业会不断开发工具,来协助软件的开发。在整个技术行业中,有关软件工程实践的争论不断。下面,我们将指出这个领域的简要分类、一些示例、可预期的结果以及每一类别的局限性。我们还将论证如下观点:在编写代码之后测试代码,不管它是多么面面俱到,都不能真正确保系统是如何运行的,因为对现有计算机程序的任何分析,都是在本质上不完整的。这种不完整意味着,审查者永远无法确定计算机系统是否具有所需的属性,除非该系统是为保证该属性而设计的。
当技术人员评估计算机系统时,他们试图建立不变量(invariants),或者说确定有关程序行为的事实——无论程序的内部状态或输入数据是什么状况,这些事实始终是准确的。不变量可以涵盖与单行代码行为一样微小的细节,但也可以指示整个程序中的复杂属性,比如,哪些用户可以访问哪些数据,或者在什么情况下程序可能崩溃。通过建立简单不变量(simple invariants)的方式,设计代码模块和程序,可以建立一个完整的计算机系统。在在这样一个计算机系统里面,一些关键不变量可以得到证成。一个程序所应具备的成套的不变量集,形成了其固有属性。
归根结底,软件代码是对其自身的严格而准确的表述:代码在运行时,既解释也引发了计算机的行为。与此相反,公共政策和法律则是不那么精确的,而之所以如此,往往是决策者或立法者有意而为之的。因此,即使一个设计精良的软件有能力确保某些属性,也始终会有人质疑这些属性是否符合公共政策或法律的需求。本文所提出的措施,力图推进(而不是去除)有关法律的内涵及其如何运作的辩论。它们旨在通过授权决策者处理含糊不清和缺乏精确性(即审查和监督)的工具,来强化政策过程。我们希望证明,软件如其所声称的那样运作,并允许审计人员为特定的决策规则设定特定的软件属性。此外,如果确实存在某个策略的精确规范,我们希望呈现执行该策略的软件实际上是按流程运作的。
算法的相关属性,是评估算法的关键。算法操控者应该解释算法所提供的不变量。对于系统解释的验证,可以产生一些证据,用以证明所讨论的软件实际上满足它所声明的功能。如果没有强有力的证据证明算法是正确的,即使该算法的作者也不能保证它将按照其政策声明来运行,并且任何决策者或监督者都不应相信这类说法。比如,根据制造商的声明,一个带有软件控制模块的医疗辐射装置,获批用于患者,但该软件中存在一个细微缺陷,导致超标辐射,从而引发6起事故、3人死亡。
计算机科学家使用两种手段来评估程序:①静态分析,不运行程序而单单检查代码;②动态分析,运行程序并评估特定输入或程序运行状态的输出。动态手段可再细分为:(a)观察手段,分析人员可查看程序如何在其自然输入的情境中来运行;(b)更强大的测试手段,分析人员主动选择输入数据,并将其提交给程序。
1.静态分析:仅进行源代码审查
阅读源代码就可以让分析人员了解很多关于程序如何运行的情况,但是它存在一些重大限制。代码可能是复杂的或模糊的,甚至分析人员也常常遗漏程序的关键问题。例如,对于大多数互联网用户来说,Heartbleed安全漏洞是一个潜在的灾难性漏洞。它是由常见的编程错误引起的,但该错误却顺利通过了开源审核流程。尽管在相当长的一段时间里,任何人都可以自由地阅读和分析相关开源代码,但两年时间过去了,大家都没有留意到这个漏洞。虽然市面上存在源代码自动纠错程序,但即使专门查找此类错误的最佳商业解决方案,也未能发现Heartbleed这一漏洞,这因为它的结构与用于检查漏洞的自动纠错程序有所不同。这类案例进一步表明,发现算法上的细微错误和简单错误是多么困难。而更复杂的错误,则更不容易被发现。
此外,静态手段本身并不说明程序如何与运行环境交互。对于一些程序来说,它们需要检测任何类型的外部数据(比如每天的具体时刻),而对于每个不同的运行环境,这些程序可能引发不同的行为。例如,长期以来,编程实践中一直使用时间作为混沌函数的起始值,用于在进行统计抽样的程序中生成随机数。这些程序自然会根据启动那一刻的时间,来选择不同的数据样本。这就意味着除非在程序中输入的时间数值十分精确,否则我们便无法复制其输出。
基于程序所使用的技术,静态分析可能会导致不完整或不正确的结论,仅仅是因为它没有考虑到外部依赖性——也就是说,没考虑到特定程序为了顺畅运行所需的其他外部软件。对于某些技术,同一行代码可能具有完全不同的含义。因此,静态分析需要覆盖任何系统的大部分信息,并且至少涵盖一些关于程序如何运行的动态信息。
在一定程度上,静态分析对于确定程序的事实非常有用,例如,它所接收的输入数据的性质、它可输出的类型、程序的一般形态以及程序运行中涉及的技术。特别是,静态分析可以辨明可能导致程序以特定方式运行的输入类型。分析人员可以利用这些发现,在不同输入类型上测试程序。在某些情况下,高级分析可以弄清程序行为的方方面面,并确定程序的不变量,或者有关程序行为的事实;在这种情况下,无论程序接收到什么输入数据,这些事实都是固定的。特别是那些采取先进分析技术的程序,他们可以协助分析人员使用静态手段来核实程序行为的复杂不变量。简而言之,人们设计一些编程语言,用来防止某些程序错误。例如,有些程序设计,就是为了防止Heartbleed漏洞。这些技术也已在航空工业中得到应用,以确保在火箭、飞机、卫星和科学探测器上提供制导功能的软件,不会像以往那样轻易崩溃。在过去,这类软件故障曾经导致了一些运载装置的损毁。不断改进的技术最终可能会使得强不变量(strong invariants)的应用变得更普遍、更低成本。
算法透明的支持者常常声称,通过审查公开的源代码,分析人员便能够确定程序的行为事实上,算法透明在多大程度上能够帮助外行人士理解系统功能,取决于静态分析的有效性。但是,这种说法被识别代码——甚至是纯恶意代码(“恶意软件”)——的超高难度所驳倒。这种基于互联网代码样本的仔细审查,催生了一个价值数十亿美元的行业。当然,在某些情况下,透明度还可以利用动态手段来实现,例如,在公开的输入数据上模拟公开的代码。我们将在第二部分进一步讨论算法透明问题。
2.动态测试:通过运行程序来评估程序的实际行为
动态测试可以获得静态分析所无法获得的信息。但这并非没有限制。虽然静态分析可能无法说明程序将要做什么,但动态测试也会受到可测试输入或可观察输出的限制。这一点非常重要,因为相较于动态测试所观察或测试的内容,决策政策往往具有更丰富的可能输入。动态测试,包括对潜在输入的结构化审计,只能分析这些潜在输入的其中一小部分。因此,无论动态测试有多频繁,它都不能确定系统在其他尚未测试的输入情况下会产生什么后果。
动态测试可分为“黑箱测试”(只考虑系统或组件的输入和输出)和“白箱测试”(考虑系统内部结构,用以设计测试用例)。直观地说,白箱测试威力更大。这是因为任何可以在黑箱中执行的测试,也可以在白箱中执行。当多个测试产生相同的行为或者输入可能触发输出差异时,白箱测试可以提供更多更强大的测试用例。白箱测试还可以协助开发人员和操控者确定如何监控其操作,以便检测和纠正预期行为(例如,不可预见的错误、安全妥协、不当使用以及其他意外行为)的偏差。
即使软件系统的结构化“审计”,其审计范围也无法覆盖程序的全部行为。软件系统提供了相关的输入数据,并对差异行为进行分析。审计范围不能完全覆盖的原因是相同的:这种手段对未经测试的输入(即使那些差异很小的输入)不能做出任何解释。此外,黑箱审计几乎不能向分析人员提供差异行为的原因。一个计算机程序可以对两个输入进行截然不同的处理,因为它被明确地设计为对一个或两个输入使用特殊的逻辑,因为这些输入数据天然地属于不同的决策类别,或者因为决策规则对输入数据的微小变化非常敏感。动态程序评估的一种非常直接而常用的形式,来自于日志记录,或者是在某个程序行为发生之前或之后,立即将其记录在一个文件中。在大多数软件程序中,日志记录的分析是最简单的、也可能是最常见的功能评估手段。但是,分析程序日志需要在程序执行可能对分析有意义的事件时,将其载入日志(并记录足够的有关信息,以便实际执行分析审查)。由于日志和计算机上的其他文件一样,可以很容易地被修改和重写,并包含一系列与系统软件实际操作无关的事件。因此,用于记录需要可靠审查的敏感操作的审核日志,通常是被设置了访问权限控制的,或者被发送到专用于接收日志数据的、附带权限审核的远程系统。
3.测试的最根本限制:不可计算性(Noncomputability)
本质上,任何类型的、用于确定计算机系统的状态真假与否的测试,都是一种有限的手段。静态或动态地评估代码的限制,有时候是出乎意料的。与人们直觉相悖的是,计算机的能力通常受到一个被计算机科学家称为“不可计算性”概念的限制。简而言之,某些类型的问题在任何有限的时间内,都无法由任何计算机程序来解决。有许多“不可计算性”的例子,但最著名的是图灵提出的“暂停问题”,它询问给定的程序是否将完成运行(“暂停”),并返回给定输入的答案,或者将永远运行在该输入上。没有任何算法能够解决这一问题。也正因此,没有任何测试机制可以为所有可能的程序确定任何属性,因为任何机制甚至都不能确定程序是否会终止运行。与之相关,Rice提出的一个定律,限制了测试的理论有效性。他认为,对于程序行为的任何特定属性,没有任何算法能够始终确定被分析的程序是否具有该属性。即使该算法可以同时对程序进行静态和动态分析,任何此类算法也都必定出错。但是,这类测试在确定某些特定的不变量时,非常奏效。在有限的程序类别上,当程序被设计为便于使用测试来建立这些不变量时,它会变得更加奏效。也就是说,虽然测试不能保证通常情况下会有作用,但它在特定情况下会起作用,特别是当这些程序在设计之时,就已嵌入了测试的考量。
虽然静态和动态手段都属于系统设计完成后的评估——它们将计算机系统及其设计作为一个给定的条件——但是,同时使用这两种手段,通常是有帮助的。如果分析人员可以通过静态手段确定某个程序在某类输入上的程序行为相同,那么,分析人员就可以测试该类中的单个输入,并类推其余部分的程序行为。然而,即使运用这样的组合手段,我们也不能确保每一个计算机程序都能被分析得清清楚楚。
随机性对于许多计算机系统的设计是必不可少的,因此,任何涉及可问责性的措施都必须做出应对。然而,当我们使用随机性时,却很容易妨害可问责性,因为根据定义,随机过程产生的任何结果至少表面上与该过程的设计相一致。随机过程的问责制必须确定需要随机性的原因,并确定随机性的来源及其在审查过程中的存在符合这些目标。
在决策中,随机性最直观的好处,是它有助于防止策略行为——即系统的“博弈”。例如,当税务稽查员使用软件选择审计对象时,随机性使纳税人不可能确定其是否会被审计。那些试图逃税的人,将面临着一种未知的风险。这种风险可以被最小化,但不能被消除,而且这些人不知道是否应当或者何时会接受审计。同样,如果对通过安检的人员随机进行额外的安全检查,或者如果每天随机更改安检程序,那么,走私人员或恐怖分子就无法事先做好准备。此外,对安保人员表现的研究表明:程序中的随机性减少了无聊状态,从而提高了安保人员的警惕性。
扑克牌游戏说明了随机性的第二个好处:隐藏秘密信息。一个好的扑克玩家掌握秘密信息——他手牌有多好——会影响他下注的方式。他偶尔虚张声势,随机性地展示自己的行为,使对手更难推断出他手牌的好坏。
当我们必须将稀缺资源分配给同等机会的参与者时,并非所有合格的申请者都能得到份额。这时,随机性帮助操控者更为公平地分配资源,而这种分配方式不能由操控者把控或预测。例如,第二部分所讨论的多样性签证抽签,就是一种随机抽签分配稀缺资源的例子——美国绿卡数量有限。作为公平来源的随机性,需要具备两个属性:第一,结果不能由系统操控者控制,否则与系统操控者单方面选择赢家的模型相比,随机性不能起到任何作用;第二,结果不能是可预测的,否则,系统操控者就可以在系统运行之前,将其最青睐的赢家,放入特定的时段或将其“中奖票”直接投到他头上。此外,更重要的是,运行系统时所做的随机选择对系统操控者具有约束力。如此一来,系统就不能多次运行,以通过在系统的许多实际运行中博得有利结果来控制最终输出。我们将在下面详细探讨如何解决这些问题。
许多机器学习系统使用随机性作为正常运行的一部分。结果表明,随机猜测和调整每类输出的概率,往往会比人为决策发挥更佳的作用。
最后,随机性可以让计算机在不可预知的环境中,更灵活地执行任务。我们设想扫地机器人是如何被编程的,如果在控制机器人的软件中嵌入了运动轨迹设定,那么,一个不规则的家具,就可能会导致它被卡在角落或桌子下面,或者在不清扫房间其余部分的情况下,重复地沿着同一条路径清扫。加入随机性运动可以让它摆脱这些模式,更有效地工作,而无须在所有可能的房间配置中进行编码。通过承认未知因素的存在,不管环境变得多么不友好,随机性策略都可以避免高概率的不利后果。
然而,设计不当的随机性可能导致无法解释的自动化决策。如果决策取决于随机选择的特定数值,那么任何与随机选择的某个可能数值一致的结果,无论可能性多小,都必须被视为有效。具体而言,如果一个决策是基于硬币翻转的结果,即使硬币偏向于100次中的99次正面落地,基于尾部翻转的结果也不能被证明是不正确的,因为每100个结果中就有一个是由尾部的数值得出的。一个腐败的决策者可以影响这一假定的随机选择,选择与其首选结果一致的硬币的价值,或者可以翻转许多硬币,然后将每一次翻转的价值分配给他必须做出的一组决策(可能通过改变他考虑决策的顺序),以选择他所做的结果。计算机系统所生成的随机选择,也可以通过重复运行一个程序来重新选定,直到输出与理想结果匹配为止。如果不通过设计算法来证明这种重复运行没有发生,决策者很难证明他没有做过。自动化决策的速度提升,只会加剧这类风险;虽然彩票摇奖器中乒乓球的物理随机性只能保证每小时产生少量结果,但是,计算机却可以在几分钟之内,产生数千或数百万个结果。
此外,随机过程不容易重现。例如,如果它依赖于与环境的交互(例如,运行它的操作系统、人类用户或具有快速更改记录的数据库),则它的行为可能会以不确定的方式进行更改,因为该环境可以在两次运行之间进行更改。解决此问题的一个笨拙的手段是捕获所有环境,程序运行的状态,以便分析人员可以重现这种环境。然而,如何验证可能需要随机性的所有理由,这一解决方案并不能给出答案。
二、设计符合程序规制性的计算机系统
任何管理自动化决策的首要目标,都应该是让监督者——无论他们是政府官员、企业高管还是社会公众——知道计算机系统是如何做出决策的(或者至少知道它是基于某种规则做出决策的,即使该规则不完全公开)。在大多数情况下,最低要求是程序规制性:每个参与者都知道相同程序适用于他,并且程序设计并未对他不利。这一最低要求借鉴了《美国宪法第十四修正案》的正当程序原则。自19世纪的一个开创性的案件以来,最高法院就明确指出,程序公正或者正当程序要求规则的普遍适用,而不是为个案而设计。同样,联邦法规明确规定了,行政机关行为中程序规制性的要求。这些原则也被纳入联邦民事诉讼的程序规制性当中。
在本部分中,我们将论证技术措施在纳入计算机系统的初始设计时,能够保证程序规制性的重要因素。具体来说,这些措施可以确保:
▪每个决策采用相同的策略或规则。
▪在知道特定决策主体之前,充分规定了决策政策(并可靠记录了该政策选择),降低了有意设计流程以使特定主体处于不利地位的风险。
▪每个决策可从指定决策政策和该决策的输入中得以重复。
▪如果决策需要任何随机选择的输入,这些输入超出任意相关方的控制。
在介绍了这些属性并阐明了它们的执行机制之后,我们将把它们应用于一个案例——美国国务院的多样性签证抽签。在这个案例分析中,这些技术措施的应用,极大地提高了自动化决策程序的合法性和公平性。
验证程序规制性的一个天真的解决方案,是寻求源代码的透明度以及相关决策的输入数据和输出结果。如果所有这些元素都是公开的,则似乎很容易确定程序规制性是否得以实现。事实上,在许多情况下,算法完全或部分透明可能是治理的一个有用措施,人们常常把算法透明作为对计算机化系统问责问题的补救措施。然而,仅仅算法透明本身,并不足以在所有情况下使算法变得具有可问责性。
第一,最重要的是,通常需要对决策的要素、执行决策的算法、关键输入数据或输出结果保密。决策的各个方面保密,将有助于防止系统的策略性“博弈”。例如,国税局可能会在纳税申报表中,寻找与之前审计的纳税申报表中的逃税高度相关的特征。但是,如果公众确切知道纳税申报表中的哪些内容将被视为欺诈的特征,那么,实施税务欺诈的不法分子可能会调整其行为,随之,这些特征也可能会失去其预测价值。此外,当被监管的决策是商业决策(比如提供信贷的决策)时,企业在保护专有信息或保护商业秘密(如承销公式)方面的合法利益可能与完全透明相冲突。在许多情况下,自动化决策可以用作输入,也可以作为输出、敏感或私人数据创建,这些数据不应大范围共享,为的是保护商业利益、隐私或执法或调查手段的完整性。在某些情况下,特别是在金融或医疗数据方面,信息披露可能会受到法律或法规的限制。最后,在许多情况下——例如,为消费者的信用或保险风险评分——自动化决策流程的目的,是确定一些不可直接测量的变量,如信用违约或保险索赔的风险。因为这些变量是不能直接测量的,所以要通过替代变量来计算它们,比如消费者的信用历史、收入或身份特征。了解这些精算过程的消费者,在试图控制输入替代变量时是合理的,这反过来会使评分过程在阐明不可测量的风险时,变得不那么有效。保密会阻碍系统参与者的策略性博弈行为,并对抗数据披露的法律限制。
第二,虽然透明性允许前述测试策略(即静态和动态测试,包括算法审计),但是如果这些系统的设计未能考虑到未来的评估和责任,那么,这些手段通常不足以验证软件系统的属性。
第三,对于涉及一些随机性的决策流程,即便实现了算法完全透明——系统源代码、输入数据、操作环境和输出结果——也不能保证一定不会出现无法检测的输出结果。前文所述的签证抽签,就是一个典型案例。一种完全透明的算法,它使用随机数生成器为每个申请者分配一个数字,并使数值最小的申请者获胜,将产生无法复制或验证的结果,因为随机数生成器每次都会产生不同的随机数。单独检查代码,甚至将输入代码的数据以及操作代码的环境一并检查,也不能告诉我们代码实际上是用来产生特定结果的。通过这样的设计,整个运行过程将会产生不可预测的结果,而这些结果又是不可复制的。
第四,随着时间的推移而不断改变的系统,是不能仅仅通过透明度来理解的。系统设计者经常改变复杂的自动化决策流程,例如,搜索引擎排名手段、垃圾邮件过滤规则、入侵检测系统手段或选择网站广告的算法——以响应系统参与者的策略性博弈行为。选择向用户推送社交媒体文章的计算机系统,可能会响应用户的行为。“在线”机器学习系统可以在每次决策后更新预测模型,并将每次新的观察作为培训数据的一部分。即使我们知道这些系统的源代码和数据,也不足以复制或预测它们的行为——我们还必须准确地知道它们是如何以及何时与环境交互的。系统的更新是否受到人类工程师和操控者(例如,搜索引擎工程师修改搜索结果排序的软件)或机器学习系统(例如,搜索引擎算法发现用户更频繁地点击某个搜索结果的第二位链接,而不是第一位链接,因此,搜索引擎算法调整了两个链接的顺序)的影响,算法透明本身并不能解释算法为什么做出任何特定决策,也不能解释算法在用户响应基础上运行的公平性。对于这样的系统,所披露的规则在分析那一刻,就已经过时了,这是一个额外风险。在线机器学习系统会在每次查询后,更新其决策规则,这意味着一旦进行任何信息披露,其披露的信息都将被废弃。
除了算法透明以外,算法审计是验证计算机系统运行方式的另一种策略。审计将决策流程视为一个黑箱,其输入和输出是可见的,但其内部运作是不可见的。该手段在传统规制情境中,例如,在汽车销售谈判中引入歧视性的审计,这是因为,仅凭透明度并不能有效地确定商家是否根据种族或性别出具歧视性价格。
在计算机科学中,算法审计是指“对软件产品和过程与适用的规则、标准、准则、计划、规格和程序相符合的独立评估”。算法审计旨在揭示算法是否符合正当程序,并检查对计算机系统的任何篡改。例如,计算机科学中有大量文献涉及电子投票系统的审计。安全专家普遍认为,适当的算法审计是必要的,但它还不足以确保电子投票系统的安全。
然而,计算机科学家已经证明,对系统的黑箱测试,是理解和验证系统行为的最差手段。即使是为了检测软件系统的属性(例如,测试系统是否没有漏洞、正常运行),理解整个系统并对其细节部分进行测试,往往是更为奏效的手段。如果我们试图通过检测输出对输入变化的响应来审查系统故障,将受到以下限制:要么无法将这些变化归因于某个原因,要么无法解释某个变化是否重要或为什么这么重要。取而代之,程序员经常使用其他更强大的评估技术。这些技术包括白箱测试(在白箱测试中,进行测试的人员可以看到系统的代码,并利用这些信息,更有效地排查漏洞)和使用自动排查漏洞的编程语言。
如上文所述,算法透明和算法审计往往不足以使算法具有可问责性。在这一部分中,我们将介绍一系列技术措施,通过这些技术措施,即使某些信息是保密的,也可以实现程序规则性。这些手段可以与算法透明和算法审计一并使用(如果条件合适的话),并适用于所有计算机系统。
试图利用技术措施的强大功能,而并不拘泥于计算机系统的设计。相反,我们明确地提倡通过系统设计来为下述技术措施提供便利。当算法的全部或部分必须保密时,我们也不会放弃算法治理。我们依靠计算机科学的一些先进技术措施,来实现保密系统的治理:软件验证、加密承诺、零知识证明和公平的随机选择。与直觉相反,即使一个软件或其输入数据是秘密的,这些技术措施也可以保证软件和输入数据满足程序规制性的要求。他们可以验证每个决策都使用了相同的决策规则,事先确认并记录了决策,并且结果也是可重复的。仅仅因为一个给定的计算机系统或软件是保密的,并不意味着关于该系统的任何信息都不可知。
1.软件验证
软件验证是证明软件具有某些特性的一组技术,它可以通过分析现有代码,也可以通过使用设计专门软件来提取具有证明力的不变量。几十年来,它一直是一个前途无量的领域,虽然许多收益只在研究模型中实现,但这些手段正逐步被推广到业界,特别是在软件安全或安全风险很高的领域以及责任制度很强的领域。任何程序的完全验证都是非常昂贵的,需要精通这一领域的专业技术人员,更重要的是要从政策上了解可用的选项,以便权衡成本和收益并采取行动。
与静态分析(其目的是检查已经编写的代码是否存在漏洞或偏离其既定规则)或者动态测试(其目的是通过在特定配置中执行软件来验证软件是否满足特定的功能需求)不同,软件验证的目的是在数学意义上,证明程序的不变量,它使用逻辑链条来解释程序在所有条件下的行为。经过验证的程序有一个数学上可查验的证明,以证明它们具有某些不变量。因此,我们不再需要对这些不变量进行测试,因为软件将始终通过此类测试。
验证软件的手段多种多样。例如,我们可以利用形式逻辑,详细注释程序,以精确的方式确定其行为(尽管这种手段可能成本不菲,并且不会持续产生所需的不变量);程序可以由另一个程序进行认证,该程序将其转换为保证具有所需属性的形式;程序可以穷尽所有可能的输入进行测试,以确保不会违反不变量;我们可以采用含有详细不变量特征(以及这些不变量的证明)的工具,来设计程序。研究人员甚至已经开始使用这些技术,验证整个操作系统。验证可以通过多种手段传递给客户:所谓的自带证明代码(proof-carrying code)带有一个机器可检验的认证,证明它的已验证不变量,用户可以在运行程序之前进行检查用户可以重新计算用于生成认证的分析;或者证明的真实性可以由用户信任的实体进行确认,并使用密码来保证提示用户运行的版本与验证的版本相互匹配。
然而,仅仅因为一个程序已经被验证或已被证明是正确的,并不意味着它完全符合政策需求。验证软件通常可以检验软件是否匹配其所对应的规则,但本文的分析却并不表明规则本身是否足够详细、是否正确、是否合法、是否能为社会所接受,或者是否构成良好政策。软件验证是一个急速发展的领域,在未来几十年里,设计完全验证软件的成本将急剧下降;而由于减少了安全隐患和消除了诸多软件漏洞,这类软件将会在业界中得到广泛的应用。
2.加密承诺
加密承诺类似于封存于信封中的文件,由第三方持有或存放在安全位置。我们可以给任何数字对象赋予加密承诺(例如,文件、文档、特定时间搜索引擎索引的内容或任何字节字符串)。加密承诺将承诺者与承诺对象(即信封内的对象)的特定值绑定在一起,以便在事后可以被披露,任何人都可以验证承诺是否与该数字对象对应。如此一来,正如信封一样,审查者可以确定,自提交后,对象没有改变,提交人确实知道提交时对象的价值(例如,程序的源代码或文档或计算机文件的内容)。重要的是,信息在安全加密承诺中并未公开,这意味着对承诺本身的了解(或类似情况下拥有信封)不会泄露有关内容的信息。这就产生了一个密封文档的类比:一旦一个对象“在”密封的信封中,观察者就看不到它,任何人也不能更改它。但是,与物理信封不同,承诺可以通过非常低的成本发布、传输、复制和共享,不需要对其施加保护以防篡改。在实践中,加密承诺比它们所代表的数字对象要小得多。因此,加密承诺可用于在特定时间(例如,通过发布或发送给监督机构)锁定秘密信息(例如,未公开的决策政策),而不透露秘密信息的内容,同时,仍然可以在事后披露必要的秘密信息(例如,在法庭案件中,根据发现令),并保证该秘密在过渡期间没有被篡改(例如,决策没有从明显歧视性的政策修改为中立的政策)。
当我们向数字对象赋予加密承诺时,该加密承诺还将生成一个可用于验证的开放密钥。重要的是,任何人只能使用与其计算相关的精确数字对象和开放密钥,来验证加密承诺;从计算机原理上说,任何试图发掘另一个数字对象或是另一把开放秘钥来验证加密承诺的努力,都将是徒劳的。在“信封”比喻中,这相当于证明无论是信封还是信封中的文档,都没有被秘密地替换为其他信封或文档。任何数字对象(例如,文件、文档或任何字节串)都可以有一个加密承诺和一个开放密钥,这样做的好处是:①不可能仅从加密承诺中推断出原始对象;②可能在给定开放密钥的情况下,验证原始对象是否与加密承诺对应;③不可能生成假对象和假开放密钥,这样匹配(真实)加密承诺和假开放密钥,将会得出错误信息。
对于自动化决策中的程序规制性而言,加密承诺具有实用价值。它们可以用来确保对多重决策中的每一个决策,都适用统一尺度的决策流程。它们可以确保在特定的时间点,完全确保软件中的既定规则。这意味着,政府机构或其他组织可以承诺以下认定:①使用了特定决策;②将特定数据用作决策的输入(或从输入数据中计算出政策的特定结果)。机构可以通过获取其秘密源代码、私人输入数据和私人计算的决策结果,并计算承诺和开放密钥(或每个政策版本、输入或决策的单独承诺和开放密钥)来验证这些认定。做出自动化决策的公司或机构将公布加密承诺,并以此确定可靠发布日期,可能在报纸或联邦公报等场所发布。之后,该机构可以通过向法院等监督机构披露源代码和公开密钥,来证明其在承诺时拥有源代码、输入数据或计算结果。此技术确保在发布承诺之前,确定并记录实施决策的软件,这有助于证明软件和决策均不受后期信息或事件的影响。
然而,加密承诺本身并不能防止提交者的不实陈述,并生成一个完全不能公开的虚假承诺,也不能破坏(或拒绝披露)允许公开有效承诺的信息。无论是哪种情况,当披露承诺内容的时候,都可以证明承诺人行为不当。然而,观察者并不知道错误行为的本质。提交人可能没有正确的开放密钥(类似于将不可理解或不相关的文档密封在信封中),或者可能想隐瞒原始文件中的内容(类似于发现信封含有令人尴尬的内容)。在这两种情况下,监督机构可能会惩罚提交人,并对丢失文件的内容,做出最坏的假设。但是,最好能够完全避免这种情况,我们可以使用下面阐述的另一种工具零知识证明来实现这一目的。
3.零知识证明(Zero-Knowledge Proofs)
零知识证明是一种密码工具,它允许决策者(作为加密承诺的一部分)证明实际使用的决策(或在特定情况下达成的特定决策)具有特定属性,但不必透露该属性是如何被披露的,也不必透露数据的内容或者实际需要被执行的政策。
举个例子。让我们设想,资金是如何在托管交易中流动的。传统上,在满足某些条件之前,托管代理持有款项。一旦他们这么做,代理人证明了这一事实,就将根据预定的时间表支付款项。零知识证明可以在没有可信代理的情况下实现托管。假设一个独立的承销商希望证明他已经从销售中免除了适当的税款,以便由交易对家支付,但他却没有确切地透露销售金额。一旦使用零知识证明,他可以在不向第三方披露销售价格或收入的情况下,证明其已经足额支付税款。密码学中的另一个经典例子是:假设两个富翁出去吃午饭,他们同意更富有的人应该买单。然而,两人都不愿向对方透露彼此的资产数额。零知识证明可以让他们两个都知悉谁更富有(因此,谁应该买单),而不必透露这两者的资产数额。
零知识证明可以与加密承诺互相配合,可以通过如下方式验证程序规制性。如果决策者做出三个承诺,A、B和C,其中A是对决策的承诺,B是对特定案例中输入的承诺,C是对在这种情况下实现的结果的承诺,那么,零知识证明让公众验证A、B和C确实是相互对应的。换句话说,决策者可以证明,当提交的策略A应用于提交的输入B时,得出提交的结果C。决策者可以设计审计日志,公众可以查验该日志,以确认决策者将适当的策略应用于正确的输入,以达到他所声明的结果,这一切都没有暴露决策本身,也没有披露可能包含在输入或结果中的私密数据。之后,如果结果受到质疑,法院或其他监督机构可以强制决策者披露其所使用的实际决策和输入,并验证其是否符合其所公布的承诺,有效地提供数字证据,证明决策者对其所公布的决策是真实的。通过在多个决策主题的决策中使用对同一政策的承诺,决策者可以证明其在这些主题中应用是一致的。这种零知识证明可以通过披露输入产出关系的属性(例如,如果被试的性别被颠倒,信用评分将是相同的)或政策本身的属性(例如,政策仅为某些目的使用某些输入)来实现强化,以测试决策的部分内容。
4.公平随机选择
当随机选择是决策流程的一部分时,算法随机性的公平性应该是可验证的。设计不当的随机性,可能导致无法解释的自动化决策。在这种情况下,决策者可以操纵假定的随机选择,或者可以多次生成多组随机值然后择其心仪的组合。此外,随机选择的过程,不容易被复制。例如,如果它依赖于与外部环境(例如,运行它的操作系统或用户)的交互,则其决策可能会以不确定的方式发生改变,因为外部环境可能在运行中发生改变。
因此,我们必须从一开始就设计自动化决策流程,以便监督自动化决策,防止出现意外状况。为了解决这个问题,决策者需要证明软件中任何不可预测的行为或随机选择,都不会影响最终输出。例如,一个设计用于查找顶峰的程序(即优化一些目标),可以从任意选择的点开始,选择向上走任意的路径,并且会最终反馈相同的顶峰位置。
更为常见的是,自动化决策流程所做的随机选择,会对结果造成影响。在这类情况下,我们可以重新设计执行决策的算法,用一个较小的、记录的随机输入(种子值, seed value),来替代不可逆的、采用非随机的方式计算的任何必要随机值。如此一来,只要我们知道种子(seed),并且输入的随机性完全被种子的随机性所捕获,那么,我们就可以重现自动化决策流程。利用这种技术,决策者不必在每次需要新的随机值时,都生成新的随机选择(这可以通过使用种子来生成可重复值的加密算法来实现),也不必预先知道应做出多少个随机选择。这种技术允许随机选择的算法(比如抽签),可以完全重现和审核。这种技术不像上面讨论的那样分析整体环境,将环境的某些相关部分,缩减到一个极小的、可控的值(种子),同时,仍然保留了在系统中使用随机性的各种益处。
在应用这种技术之时,我们还必须防止决策者篡改种子值,因为它完全确定实现决策的程序访问的所有随机数据。几种手段有助于确保种子价值的公平选择。公共程序可用于选择一个随机值:例如,从彩票抽奖的设备中,掷骰子或挑乒乓球。或者种子值可以由可信的第三方提供,例如,由美国国家标准技术研究所(NIST)操作的随机“信标”。此外,只要至少有一个参与者提供随机输入,相互不信任的各方(可能包括决策者本身)就有可能参与产生不可预测的交互。也许,最佳选择是将许多不同的随机性(有时称为熵)混合在一起。这种做法最简单的形式,是让决策者输入一个短的随机数,作为其决策输入的一部分(例如,在申请表上)。然后,决策者将通过将这一已知的单一随机值与以下两者相结合,从而为每个决策产生一个种子值:①决策者承诺在看到个体随机值之前使用的预先选择的随机值;②特定决策或决策者的唯一并难以更改的标识符(例如,参与者的社会保险号码)。为了最大限度地提高对随机选择的信心,决策者应使用以下组合来得出这些选择:①来自可信第三方的随机值;②决策者选择并可能保密的随机值;③参与者或决策特定的标记,这些标记不能被决策者更改或者控制,如社会保险号、身份证号、个体姓名或数据的其他不可变的部分;④决策者选择的值。由于这些值不在决策者的控制范围内,或者在决策输入已知之前已被披露、固定并随后可验证,因此,这些手段可以确保决策者不会通过控制随机值的选择而操纵结果。
如果随机选择是决策流程的一部分,那么,在这些决策中,随机性的公平性(即与随机性实施到特定系统中的目标的一致性)应该是可验证的。这可以通过依靠一个随机种子并验证其来源来实现。即便我们以令人满意的方式选择了一个随机种子,我们仍有必要验证该种子在事实上被用于后续决策中。这可以通过我们所介绍的技术措施来实现。
一般而言,在设计对其程序规制性负责的系统时,我们的策略是要求系统创建加密承诺,作为其行为的数字证据。系统可以设计为:在实施前发布承诺,阐述它们将做什么(即对系统实施的决策政策的承诺,如源代码所示);在实施后发布承诺,阐述它们实际做了什么(即对输入的承诺和任何特定决策的输出)。零知识证明可用于确保这些承诺实际上与系统所采取的行动相对应。事实上,我们可以使用零知识证明,来验证对于每个决策是否将承诺决策政策适用于承诺输入从而产生承诺输出。这些零知识证明可以要么公开,要么提供给系统的决策者及其对象。
通过公开承诺而不是源代码、输入和输出,系统操控者可以全方位解释系统所执行的任务,而无须实际公开这些系统的运行方式。之后,如果在法院案件或监管诉讼期间有必要审查系统的行动或决策政策,系统运营商可以在保护制度下,披露其承诺的内容(即源代码、输入和输出)。如果可以公开披露这些值,那么,系统操控者也可以选择(或被要求)这么做。然而,无论这些数据是否被披露,已公布的承诺和零知识证明,都允许监管者和广大公众核实某些权威机构的决策是否符合特定的预定政策,而不是决策者的个人意愿。此外,通过审查所有源自同一政策的决策,任何审查这些承诺的人,都可以通过审查对决策政策的承诺在各个决策中是否一致,来确定该政策是否落实到所有决策中。
通过要求在做出任何决策之前公布承诺,我们可以确保决策的细节是独立于做出决策的因素而确定的。例如,我们应基于逃税风险,来选择哪些人将接受税务审计,而逃税风险又可由纳税申报表本身的信息推断而来。然而,腐败的税务机关可以挑选个人进行审计,并猜测其纳税申报数据的细节,然后相应地调整审计决策政策。此外,如果某项政策必须事先得到某个监督机构或认证机构的批准,则该政策需要提前足够长时间确定,并在软件中执行,以便接受检验或审查。最后,如果确实进行了此类认证,则确定了在被认证的政策是实际使用的政策之后,政策决策的主体(或监督者)也可被确定。
如果算法中的不变量足够简单、并能够进行演算,那么,我们就可以通过证明代码输入和输出之间关系的相同零知识证明,来验证它们的真实性。由于强大的现代零知识技术可以应用于任何代码,因此,它们也可以应用于执行这些不变量分析的代码,并且,执行代码可以被视为系统操作的一部分。
仅仅公布对系统输入和输出的承诺,而不是使其透明,并不能解决第一部分提出的所有算法透明所带来的问题。但是,它可以解决对系统、输入或输出的合法保密的需要。由于可以使用这些手段来验证特定的输入和特定的决策是否与特定的输出相对应,因此,不必严格地查看这些值以研究系统的程序规制性。
我们将在下面的第二(五)节中更详细地阐释如何对随机软件(如抽签算法)进行程序规制性认证。随后,在第三部分中,我们将解释这些技术措施是如何扩展,被用来证明其他更复杂的不变属性的,从而证明一个系统符合既定的实质性目标或原则,而不仅仅是满足于简单的程序规制性。
有了这些技术措施,我们现在可以转而讨论:如何保证自动化决策的程序规制性。为了说明如何使一个计算机系统更具可问责性,我们将上述技术措施应用到一个具体案例:由美国国务院施行的多样性签证抽签(diversity visa lottery,简称“DVL”)。
1.现行的多样化签证抽签流程
通过DVL,美国国务院每年都会向来自世界各地的5万名移民发放美国永久居民签证(简称“绿卡”)。《美国法典》第8章第1153(c)条规定的这一程序,旨在通过向移民人口中来自比例不足地区的移民发放签证,以提高美国移民在地区意义上的多样性。
DVL程序按如下方式运作。首先,移民需要申请进入抽签程序,并根据他们的出生国家,对申请者进行分组。在每一国家组别中,申请者按随机顺序(抽签步骤),被列入一个排名列表。然后,利用基于近年来每个地区移民到美国的人数的公式,美国司法部长统计出每个国家应当被接受的申请者数。获选者从每个地区的申请者列表中高位选出。这些获选者将接受进一步资格审查。一旦他们通过资格审查,他们就将获得签证。在某些年份,即便出现申请者未通过筛选程序、放弃申请或未能完成其签证申请等情况,系统也会追加额外的获选者,以便所有法定授予的移民签证名额都能物尽其用。
人们对抽签过程的正确性和责任性也提出了质疑。申请者有时会质疑抽签过程是否真的是随机的,或者,抽签过程是否被操纵,从而向美国政府支持的个人或群体倾斜。反过来,这种质疑可能会使DVL获选者遭到报复,这是因为人们怀疑获选结果其与美国政府机关或利益群体秘密合作的证据。
在执行DVL的过程中,也确实存在不可否认的错误。例如,2012年,DVL起初出具的报告就出现了错误,这些错误是由于编程漏洞和管理松懈导致的。为了保证DVL的可问责性,我们可以通过验证抽签过程不存在偏袒以及协助外部人员查验流程来解决上述两个问题。
2. 透明度不足以解决问题
DVL是一个自动化决策系统,仅凭透明度无法解决它的问题。
第一,执行决策的算法是不可重复的。抽签系统依赖计算机系统提供随机参数;因此,即便我们尝试在另一时间或另一台计算机上重复执行算法,也将产生不同的随机参数,进而产生不同的抽签结果。值得注意的是,无论我们对软件程序进行多么详细的阅读、分析或测试,都无法解决算法的不可重复性。
第二,参与者的隐私权也给算法完全透明带来阻碍。DVL的申请者不希望公开他们的个人信息,甚至不希望公开他们申请的这一事实本身。然而,这类个人信息的公开,是算法透明和算法审计的必要步骤。为了解决这一问题,美国国务院可以尝试为每个申请者分配一个账号,然后让抽签选择记录账号,而不记录申请者的真实姓名。但是抽签的操控者可以通过追溯性地将中奖账号分配给他们想要录取的人,以此来操纵结果。此外,这一做法也很难被验证,抽签的操控者是否有意添加与任何申请者都无对应关系的额外虚假账号。
3.设计符合程序规制性的多样化签证抽签流程
为了取代现有的无法验证的手段,我们提出如下技术解决方案:用我们所阐述的技术设计一个具有可问责性的DVL。美国国务院可以利用它,在一组无须被公开的申请者中,进行公平的签证抽签。
如前所述,我们可以通过选择一个随机种子,来解决不可重复性这一问题。生成随机种子的随机值的第三方,可以是一个或多个受信任的非政府组织,也可以是申请者在其申请材料中提供的“PIN”码。
让我们回想一下,DVL的决策政策是法律法规所给定的,因此,它也是公开的。为了提供额外的监督,美国国务院可以在联邦公报上,公布对其软件源代码的声明(在做出任何抽签决策之前),以及对用于创建排序列表和计算截止点的所有输入(即申请美国签证时的每个数据元素)的声明。美国国务院还可以提供一个零知识证明,证明软件中的声明会产生已公布的抽签结果。零知识证明还可以证明,在所有决策之前发布的软件声明与每个决策中使用的软件声明完全一致。这些行动将约束美国国务院对软件、源代码和申请者数据的选择,确保对软件的声明不是伪造的,并证明每个决策都采用统一适用的程序。监督机构的事后算法审计,可以确定承诺中的源代码是否忠实地执行法规规定的政策(该代码应依据这一目标来进行设计)。
最后,美国国务院可以为抽签过程,指定一种生成随机种子的合适方式。这种方式应该向公众保证,美国国务院不可能通过重新安排申请,来筛选获选者。这可以通过配合在公开场合上选择的随机数据来实现(就像各州的抽签过程一样);或者,美国国务院可以与相关的非政府组织合作,生成一个可验证的随机种子,其随机值由美国国务院专门指定(并在公开场合和任何抽签申请之前发布),以及唯一标识特定抽签条目的内容(例如,申请者的完整申请数据,通过加密散列减少为一个小数值)。根据实施和申请的情况,美国国务院还可以将申请者在其申请中选择的随机性包括在内,这些随机性可以通过在申请过程中跟踪申请者的鼠标移动来获取。
一旦采取这些步骤,我们就可以保证美国国务院对每位申请者申请的抽签结果,是完全可被解释的。如果申请者对程序有疑问,或者政府监察官员希望对程序进行算法审计,则决策将是可复制的,并且,如有必要,法院或审计机构可以披露和验证机密源代码和机密输入数据(包括抽签过程中的随机选择),以作为所使用的正确代码和数据。
这些解决方案的成败,取决于如何重新设计软件代码(技术解决方案)以及采取哪些与软件程序有关的措施(法律或政策解决方案)。它们必须在决策流程的设计过程中,就被嵌入在内,而不是在事后才介入,试图挽救设计糟糕的系统。为了保证算法的可问责性而重新设计算法本身,这并不奇怪。这在与算法无关的行政程序中,也是如此——最具可问责性的行政程序,在制度设计之时,就带入了可问责性的考量。
三、设计算法以确保对实质性政策选择的
忠诚程度
在第一部分中,我们阐明了实现系统属性认证的一系列措施。在第二部分中,我们说明了如何确保这些措施按照既定规则实现自动化决策,我们称其为程序规制性。在这一部分中,我们将研究如何利用这些手段,来验证决策者所希望的其他系统属性。可问责性要求我们,不仅要证明一项政策在所有主体中得到了统一应用,而且要确信该政策促进了其他实质性目标或原则。一个主体可能想知道:规则是否正确实施?它是道德的吗?它是合法的吗?它是符合伦理的吗?它是否具有对实质性政策选择的忠实程度?
我们在这里重点关注如何防止算法歧视。一方面,是因为当前已经有技术人员开发了具体的、专门的技术措施来实现它;另一方面,是因为自动化决策的使用,已经引发了人们对算法歧视和当前法律框架应对这类技术变化的担忧。这类担忧,在采用机器学习的算法中尤为突出,因为它的决策规则本身不是人为设计的,而是从数据中推断出来的,这可能加剧不公平性,从而引发歧视问题。然而,是什么使得一条规则对某些人或群体具有歧视性,这既是一个基本的问题,也是一个有争议的问题。我们在这里不讨论这个问题,更不讨论如何利用算法的精度来解决它。取而代之,我们要探讨一整套新兴的计算机科学技术,如何被用来避免歧视性的结果。
与程序规制性相比,对于反歧视等政策的忠实执行,是一个更为复杂的目标。而且,现行的解决方案,也并不那么牢靠。技术措施可以改善这些问题,但它们通常需要一个明确的概念,即它们应该执行什么样的公平性。在这一部分中,我们提出一些定义明确的概念。我们将这些技术作为系统属性的示例,他们可以用第一部分所阐述的技术措施来实现认证,但我们不一定支持其中任何一种技术措施。最终,决策者必须根据非歧视性的政策目标,来决定采取某种属性或其他属性。
此外,计算机代码的精确性,往往使人们更加关注它与当前反歧视法律框架之间的张力。算法偏重于硬性的、简洁的规则,而不是普通法体系和民权法律中所常见的法律标准和法理衡平。虽然当前这些法律裁量的特征表明,为了使算法决策得到更好的运用,法律必须做出调整和变革。然而,我们并不认为,整个政策体制只能由完全由明晰规则或预先明确的公平标准构成。事实上,我们认为,对公平性的审查,应始终处于事后审查程序的范围内。我们将介绍算法歧视问题、相关技术措施的现状以及这些技术措施与现行法律框架之间的关系。我们的目标是阐明当前的技术状况,并为进一步的研究和行动提供指导。
在本节,我们关注的是通过机器学习所确定的决策——在机器通过接收大量数据而被“训练”的条件下,并根据机器观察到的模型来推断规则。计算机特别适合于发掘这些输入输出模型,从而指导接下来的决策。与人类制定的规则相比,这类决策规则是从先例中归纳出来的——实际上,它们是通过先例学习的规则。人类只是设计机器学习的过程,而不是直接给定规则。机器学习的决策,会给第一部分中介绍的技术措施带来问题,因为这里并不存在由工程师确定的、明晰的决策规则,也不能用我们介绍的技术措施来进行验证。相反,对于其所应用的技术措施,决策者必须确定某些系统属性,则将如实反映实质性的政策目标。如果这些属性确实存在的话,那么,第一部分和第二部分所描述的技术措施,则可以对它们进行认证,并可以实现上述讨论的可问责性。
机器学习被越来越多地应用到那些曾经因其复杂性而难以计算的问题(例如,照片中的物体识别)。近期,软件系统的应用范围不断扩张,这主要归功于机器学习,这是为什么我们把它作为主要焦点的原因。
自动化决策存在一个重要问题:它可能将歧视行为变成算法的一部分,并将其藏匿起来。由于很难事先预测算法规则的影响(特别是对于大量的、复杂的算法规则或由数据生成的机器学习规则),监管者和审查者可能无法直接判断算法规则是否具有歧视性。此外,计算机做出的决策对公平性或客观性有着不甚恰当的预设。但是,自动化决策系统的设计和实现,很容易受到各种问题的影响,而这些问题很可能导致系统性错误和有偏见的决策。
这些决策规则是机器制定的,并从输入数据中数学地遵循,但它们所体现的经验可能有偏见或不公平。下面,我们将阐述一些通过机器学习生成的模型或从数据中派生的决策规则可能会带有歧视。我们借鉴了Solon Barocas和Andrew D.Selbst在之前的文章中所提出的分类法,并阐述了Hardt和Dwok等人提出的机器学习系统的“歧视性错误目录”(catalog of discriminatory evils)这一概念。
第一,如果算法是在反映过去偏见的先例上训练的,或者是在被歪曲的统计数据上训练的,那么,这种机器学习算法就可能导致歧视性结果。例如,如果一个招聘流程接受了有关人们以前做出的招聘决定的训练数据,而这些先前的决定本身也有偏差,那么,这些受污染的培训数据将成为问题的导火索。统计失真——无论其有没有恶意——也会引发类似的负面影响。举例而言,让我们设想这么一种算法,该算法将可以提示警察搜查特定的行人。如果该算法的训练数据夸大了某些群体中的犯罪率(因为这些群体历来是不成比例的执法目标),那么,该算法可能会提示警察以不成比例的高概率,搜查这些群体的成员(而搜查该群体之外的成员的频次,则是不成比例的低概率)。纽约市警察局的Stop and Frisk项目就是这样一个例子。根据2004年至2012年的数据,在一个由52%是黑人或西班牙裔人、33%是白人组成的社区中,高达83%的搜查是针对黑人或西班牙裔人,仅仅10%的搜查是针对白人。值得注意的是,如果使用这个针对黑人和西班牙裔人搜查频次过多的样本,很可能训练出来一个歧视性算法,将黑人或西班牙裔这一特征与警察搜查联系起来,这仅仅是由于种族身份特征在搜查的人群中被夸大了。
第二,机器学习模型可以通过选择如何设计模型来建立识别。特别值得关注的是,选择应该考虑哪些数据模型,这是计算机科学家称之为特征选择(feature selection)的一个问题。输入数据可能带来三类问题。第一,直接将受保护群体的成员身份作为输入数据(例如,明确考虑性别的决定)。第二,通过一组输入数据不够充分的因素,来评估受保护群体成员(例如,在雇佣流程中,如果先前较少的女性被雇佣过,那么,关于女性雇员的数据可能比男性雇员的数据更不可靠)。第三,依赖于恰好作为群体成员的替代要素(例如,离开工作生孩子的女性比所有女性的平均工作年限都要低,这使得这一指标在雇佣程序中,成为“性别”的替代特征)。消除替代特征很困难,因为替代特征通常包含分析人员希望模型参考的其他有用信息(例如,邮政编码可能暗示对贷款人有着合理诉求的本地政策中的种族和差异)。当我们可以采取其他办法来达到同样结果,而且对受保护的群体成员产生影响较小,那么,拒绝使用替代特征就显得更为合理。在某些情况下,可能通过收集更多数据或更多特征,来解决数据不够充分的问题,但如果歧视已经是系统性的,则新数据仍将保留歧视性影响。虽然我们倾向于认为,技术措施可以允许完全执行禁止使用受保护属性的规则,但这实际上可能并不合理。如前所述,在某些情况下,允许算法考虑受保护的群体的状态,实际上可以使结果更加公平。这可能需要一种理论上的转变,因为在多数情况下,在一个决策中考虑受保护群体的状态,其本身就会被推定为一种法律上的损害。
第三,这个问题是“掩饰”,即将故意歧视伪装成上面所提到的无意歧视。持有偏见的决策者可能会歪曲培训数据,或者为特定群体选择替代特征,以引发歧视性后果。在设计机器学习模型这一人为干预的过程时,很可能会产生恶意掩盖的现象。
如前一部分所述,透明度和事后审计能做的,只在于防止不期望的结果。在理想状况下,这些类型的事后分析应该在算法设计过程中与强大的事前技术一起使用。我们在第二(四)节中提出的这一策略:发布承诺,并使用零知识证明来确保承诺符合系统的决策行为,以此来证明决策算法的任意属性(这些属性可以通过外部算法进行检测)。这种检测可以通过如下方式来实现:我们可以公开算法,给出零知识证明,以证明“如果检测算法以秘密方式运行,它将报告该算法具有所需属性”。问题就转化成了,决策者会希望将哪些属性被纳入特定的决策系统中。
这种属性的一个简单示例,是从决策流程中排除某个输入数据。决策者可以证明,特定的算法不会直接使用敏感或禁止的信息类别,如性别、种族、宗教或医疗状况等。
由于机器学习的决策规则是动态发展的——它们来自数据推断而非直接确定,因此,机器学习的使用带来了另一个问题。然而,静态的、预先给定的决策规则的缺失,并不必然否定我们的认证策略。包括Hardt、Dwork等计算机科学家,已经开发出将公平形式化的技术措施,使其能够约束机器学习的过程,从而使机器学习的决策规则具有特定的公平性属性。这些属性也可纳入系统的设计中,以便在决策流程中对其进行认证和验证。
我们在下面阐述了三类属性。首先,为了最大限度地从经验中学习,决策可以包含随机性。其次,在机器学习系统中,计算机科学提供了许多新的手段来,最大限度地提高公平性。从更高层次上讲,所有这些定义都可以归结为这样一个命题:同样处境的人应该被同样对待,而不考虑敏感的身份特征。正如我们将看到的,仅仅屏蔽这些身份特征,并不足以保证公平性。最后,来自差分隐私(differential privacy)的相关论点,也可以用来保证受保护状态不会成为某些决策的实质性因素。
如今,那些使用算法决策的人经常对这些算法的属性做出认定,而没有切实证明它们。这很可能是因为法律要求他们向监管者和消费者披露他们的决策流程的某些事实,他们只是想表达良好意愿,或者他们想表现得比竞争对手更好。但如果没有证据,这些认定也只是纸上谈兵,它们会受到监管者的质疑,以及消费者的不信任。这些质疑并非空穴来风:在以往,这些认定曾被证明是错误的。数字证据(如零知识证明)为被认定的事实和决策的技术机制这两者,提供了直接联系。这一证据为消费者提供了高标准的保证,即所提供的认定与事实实质相关。
1.从经验中学习
正如在第一(二)节中所提到的,将随机性合并到一个算法中,可以使它在设计它的环境之外灵活运行。同样,随机性可以防止算法设计或实施中隐藏的、导致歧视性结果的偏见。有大量的文献讨论,如何最大限度地从原始数据中学习以及如何使用随机选择来确保模型的真实性。
假设我们使用一组有偏见的原始数据来训练机器学习算法,这些原始数据表明:即便性别因素不能预测总人口的工作表现,女性仍然是表现较差的应聘者。如果由此产生的模型主要聘用男性,那么,雇佣算法可以创造一个自我实现的预测,它可以预测到被录用者的特征与性别的替代特征密切相关。但是,如果该算法设计为包含一个随机性元素,使得一些未被预测到的、表现良好的候选人可以被聘用(并跟踪他们的表现),那么,我们就能够测试初始假设的有效性,并且整个系统的准确性和公平性,也将随着时间的推移而受益。通过偶尔对模型难以准确做出预测的候选对象进行猜测,模型可以收集更多的数据,并不断演进,从而更加忠实于现实世界。
同样地,在训练机器学习模型时,随机性也通常是必要的。模型可能会变得过于专业化,或者过于特定化,这是一个“过度匹配”(overfitting)的问题。在训练机器模型时嵌入随机性,就可以防止这个问题。同时,模型可能会发现决策规则非常适合匹配的某些部分,但却无法匹配整体。随机性也有助于避免这种偏见。例如,我们设想一个信用评分模型,它最初是基于一组有偏见的、低估了少数群体的信用度的数据。即使该模型是匹配有偏差输入数据的人群的最佳决策规则,该模型也可能歧视性地拒绝对该少数群体成员的信贷申请。除歧视外,使用这类模式也将剥夺贷款方与被不公平拒绝的申请者之间的商业机会。同样,允许模型偶尔随机猜测,同时监控预期效果与实际效果的差别,可以提高模型对实际使用的人群的忠诚度,而不是有偏见人士的忠诚度。这种随机性所注入的信息,可以反馈到模型中,以提高系统整体的准确性和公平性。
2.公平的机器学习
一种常用于证明决策流程不受敏感特征干扰的手段,是将这些敏感特征排除在决策流程之外。例如,种族、性别和收入,都可能被排除在决策流程之外,以认定该决策过程“无种族歧视”“无性别歧视”或“无收入歧视”。然而,从技术角度上看,这种想法很天真。长期以来,大家认为,屏蔽敏感特征并不足以保证决策过程的公平。这些被屏蔽的或受保护的特征,通常隐含在其他未被屏蔽的特征之中。例如,当种族被排除在信贷决策之外时,邮政编码可能被用作与种族紧密关联的替代(proxy)特征,用来判断种族特征。
这类“屏蔽”不足以确保公平或符合政策目的。尽管有许多关于公平的概念,我们在采用如下公平的定义:对于处境类似的人,给予类似的对待——也就是说,一个公平的决策流程会赋予处境类似的参与者类似的概率,来接受每一个可能的结果。这是有关机器学习中公平分类(fair classification)文献的核心原则。这是首先由Dwork, Hardt, Pitassi, Reingold和Zemel正式划定的领域。这篇文章源于对数据隐私机制的一系列研究。接下来,我们将进一步阐述数据使用的公平性与隐私之间的关系。
对于处境类似的人给予类似的对待,这一原则通常被称为个体公平(individual fairness),这有别于群体公平(group fairness)。因为在某种意义上,一个决策可能对个体来说是公平的,而对群体来说则是不公平的。尽管几乎可以肯定的是,群体公平有着更为显著的政策意涵,但是它也更难以被界定和实现。最常被研究的群体公平性概念是统计平价(statistical parity),即每个群体的等分部分可以得到每个可能的结果。因为统计平价消除了敏感特征或替代特征,所以,它看起来有用。然而,它也无法实现完全的公平。例如,统计平价某决策是否处理一个组的“正确”子集没有任何意义。我们设想,对于一个度假村的广告而言,我们不会期待针对每个收入阶层,向相同数量的人展示该广告,会引导相同数量的人点击广告或购买相关产品。例如,心怀歧视的广告主若希望将某一少数族裔排除在度假村之外,他便可以设计其广告程序,以最大限度地吸引受欢迎群体,同时最大限度地降低该少数族裔入住的可能性。同样,如果一家公司想改善其员工的多样性,向普通求职者提供与少数族裔求职者相同比例的面试机会,这并不能保证最终所雇佣的人数能反映少数族裔在申请人总数或总人口数中的比例。公司还可以通过只接受条件不合格的少数族裔成员申请,来隐匿其歧视行为。实质上,这是以机器学习建立的决策规则为幌子,来实现一个精心设计的圈套。
针对“通过屏蔽来实现公平”这一观点,Dwork等人的文章还发现了另一个有趣的问题:通过持续性地屏蔽敏感特征,分类规则有可能会导致与预期完全相反的内容。例如,我们设想有这么一个系统,该系统根据人名的唯一性,将社交网络中的个人账号区分为真账号和假账号。在大多数资料来源于欧洲文化的情况下,名字是通过从一组可能性较为有限的姓和名中得来的,因此,在这一人群中,采取独一无二的名字的账号就可能被怀疑是假账号。然而,其他文化(特别是美洲土著文化)却青睐独特的名字,因此,在这些文化中,人们取一个独一无二的姓名,是很常见的事。大多数账号将来自于总人口中的多数族裔,而这其中,独特的名字是很罕见的。因此,任何基于姓名独特性的分类,都更可能把含有少数族裔名字的账号推定为假账号,并且也可能出于对多数族裔姓名的依赖,而错过一些真正的假账号。如果系统“知道”哪些姓名属于少数族裔的姓名,这时候,算法就可以推算出这账号是真是假,如此一来,这种不公平就可以得到纠正。
这一观点可以解释Dwork为什么会推崇这样的手段,即在相似的人身上执行每个可能结果的相似概率,并限制接受任何特定结果的个体的总概率差异。具体来说,Dwork等人要求结果概率的差异小于个体之间的差异。这就需要一个数学上精确的概念,来说明“不同”的人是怎样的,这可能是某种打分,也可能是由相关数据产生的数值。这种相似性概念还必须捕获所有相关特征,包括可能的敏感身份特征,如种族特征、性别或病史。由于这种手段需要收集敏感身份特征,因此,本文将公平的定义阐述为通过信息来实现的公平。尽管Dwork等人的文章只为设计公平分类机制提供了一个理论框架,其他人已经使用它来设计分类机制,其性能几乎与其他分类机制不相伯仲。
Dwork等人的文章同时也为公平平权措施(fair affirmative action)这一概念提供了理论基础,即当针对特定群体施加外部限制时,这对相似的群体给予相似对待的原则应产生最小的影响。这提供了一类强制公平性要求的技术(比如统计奇偶性),即便这类技术不是由某些分类机制自然生成的。
确保机器学习过程公平的更直接的手段,是修改或选择输入数据,使输出满足某些公平性。例如,为了确保分类机制不会夸大某个组别的少数状态,我们可以从该组中选择额外的训练样本或已有的重复样本。在这两种情况下,都必须小心避免以其他方式偏袒训练过程,或者将模型过度拟合到不具代表性的数据中。
其他文章把重点放在数据集的公平表现(fair representations)上。例如,我们可以获取数据点并将其分配给群组(clusters),将每个群组视为原始数据的原型示例。这是Zemel,Wu,Swersky,Pitassi和Dwork,特别是Zemel等人采取的手段。具体而言,这些论者阐释了如何自动生成这类原型表现,并保证原始数据中的任一组别实现统计平价。尤其值得一提的是,受保护群体中的任何人被映射到任何特定原型的概率,等于非受保护群体中的任何人被映射到同一原型的概率。因此,只能访问原型的分类程序一定是不带歧视性的,因为它们不能区分受保护的个体和未受保护的个体。他们在许多真实的数据集上测试这一模型,包括Heritage Health Prize数据集,并确定它在确保公平性的同时,执行了几乎与最顶尖的“公平的数据披露”。在这种披露中,我们仅需要公开数据集运行分析(无论公平与否)并生成公平的结果所依托的原型。
一种相关的手段,是使用机器学习中的一种被称为规则化(regularization)的技术,它包括引入新的信息,以使经过训练的模型更具可概括性,其形式是对不需要的模型属性或行为进行惩罚。这种手段也带来了许多有用的、利用机器学习的修改工具,产生了有效的公平分类机制。
Zemel等人的文章提出了一种相关的、被应用到实践中的手段:生成公平综合数据的手段。对于任何一组数据,我们都可以生成新数据,这样,任何分类机制都无法分辨随机选择的输入是从真实数据还是虚假数据中提取的。而且,我们可以使用Zemel等人提出的办法,来确保新数据代表原始数据,并实现对个体公平或群体公平。因为合成数据是随机生成的,所以当利用实际数据训练分类机制会带来隐私顾虑的情况下,合成数据就变得非常有用。此外,合成数据可以公开供其他人使用。当然,我们也必须小心避免让其他人通过合成数据,来推断有关底层实际数据。这种建模逆向(model inversion)攻击以及其他推理或非符号化攻击,已经在现实中发生。这些攻击无须访问实际数据,便可以推导出复杂的结论。
所有这些手段都表明,至少在公平定义已知的情况下,我们有可能在各种数据分析和分类系统中,确立各种各样的公平规则。对于确保机器学习系统的设计者或操控者保证系统的行为符合反歧视法,我们没有明确的规则。我们也不相信这样的规则可以,甚至应当存在。技术人员不需要一个预先设定的、适用于所有情况的公平概念。取而代之,公平性必须根据具体情况来确定,而且通常必须在事后进行审查。无论如何,将公平性设计到自动化决策系统中当然是可能的,这表明无约束地使用数据分析,并非总是必要的。当我们采用不能确保公平的数据时,我们必须考虑用其他方式来解释其决策。
这些方式中的大部分,都依赖于统计平价针对群体公平性的不充分概念。越来越多的技术研究有助于解决大数据分析中的不公平问题,这是通过两种方式:第一,扩大群体公平定义的范围,以便在实践中有效地应用;第二,提供更好的探索和解释工具,来比较不同的公平概念。从公共政策的角度来看,对于算法设计者来说,拥有一套规则、标准或最佳实践来解释在特定的实际应用中应该使用什么公平概念,这是非常行之有效的。
机器学习系统的一个补充概念可以保证预先指定的、形式上的公平性,这是Rudin对可解释的机器学习系统的论述。这样的系统生成模型,可以用来对个人进行分类,也可以解释为什么要进行分类。稍后,我们可以分析这些解释,以了解模型为什么以某种方式运行,以及在某些情况下,输入数据的更改,将如何影响模型的决策。这些解释对于希望避免将模型视为黑箱的专家和监督机构来说,非常有价值。
3.歧视、数据使用和隐私
判断决策是否公平的另一种标准是,我们能不能从决策结果中,分辨出某一个体是否属于特定群体。也就是说,如果针对某一个体的决策结果,无法让我们推断这一个体的特定特征,那么,我们就可以说结果是公平的。要想知道这是为什么,我们要从反面来看:如果一个人被银行拒绝贷款这件事,揭示这个人更有可能生活在某个社区,这意味着银行很可能拒绝据向这一社区的居民提供信贷,因此,也就意味着银行很可能是根据申请者信用风险以外的因素做出信贷决定的。
因此,与隐私类似,公平可以看作一种要求信息隐藏(information hiding)的形式。如果我们认可公平的决策不可以推断某一主体的特定属性,我们就会得出这样的结论:公平是保护这类隐私的。
事实上,通常情况下,人们更关心的是,他们的信息被用于做出某种决策或以某种方式对其进行分类,而并非单纯信息被披露或被共享。这种关注与著名的隐私权概念有关,即“独处权”。一般来说,人们担心,信息披露会阻碍他们享受“不受侵犯的人格权益”(inviolate personality)。
数据使用关注也出现在Solove的开创性著述中,在那里,Solove提到了对“排除”(exclusion)在信息处理中会带来的问题,或者由于数据处理主体的知情权和控制权的缺失“信息传播”造成主体声誉的损害。数据使用Solove认为,通过赋予数据主体个人信息的知情权和控制权,这些问题可以得到解决。在此框架中,自动化系统的预测模型可能使用看似无害或自然的行为作为输入,却会对数据主体带来麻烦。我们提出了一个补充手段:如果算法的设计者能够向监管方或每位数据主体证明,算法根本不会引发这些让人焦虑的行为,那么,这类数据使用将更容易被接受。
我们可以对比两类问题,一类是数据分析和分类问题,一类是隐私法领域中讨论得更为频繁的数据聚合和查询问题。有关个体的决策代表着个人信息(即我们可以从决策中推断输入数据或决策本身就带有私密性),这引起了人们对隐私的关注。从本质上讲,披露敏感信息的自动化决策,存在侵犯隐私的风险,就像自动化决策会给公平性带来风险一样。在这个类比中,使用模型来绘制自动化决策的机构,希望这些决策尽可能准确;与之相对应,数据分析师的目标,是尽可能完整而准确地为数据主体画像。
使数据集私有化的一种天真的做法,是从数据集中删除“个人识别信息”。这类似于当前通过从输入数据中删除受保护的属性,以保证数据分析公平性的做法。
然而,这两种做法都不能确保实现其目的。公平性方面的失败或许比隐私保护方面的失败,更令人称奇——几十年来,反歧视法已经意识到,保护个体特性的替代特征问题以及它们利用替代特征造成不利的、歧视性的影响。
Hardt的文章,将Dwork等人有关公平性的文章与Dwork有关差分隐私的文章联系起来。因为差分隐私是一个很强的概念,它可以防止他人从“匿名”数据中推导和恢复个人身份。自动化决策系统的形式公平属性,也同样适用于个体公平这一概念,以及囊括特定群体公平性相关的诸多概念的理论框架。
上述保证公平性的数据分析和分类系统的许多技术,大多要求决策者能够——至少在算法的设计阶段——访问受保护的信息。然而,在许多情况下,对误用、重复使用或滥用这些信息的担忧,催生了一种限制决策者使用这类信息的政策制度。这些技术措施若是要得到应用,需要政策做出改变。如果我们采取上述措施,就可以使此类政策变化不那么容易引发数据滥用的担忧。
从法律角度来说,第二部分所讨论的程序规制性相对简单。程序规制性是正当程序理论中的一个核心理念:政府必须一视同仁,不能对某一个人采用不同的程序。如果说正当程序要求算法程序规制性的行政措施,这样的论点比较没有说服力,但是,执行这些行政措施的机构却不会产生任何违法风险。
相较于程序规制性,对算法歧视的治理,却进入了反歧视法的复杂领域。在这里,平权运动与涉及差别影响的在先判例产生了冲突。我们认为,鉴于目前反歧视法的现状,采取技术方案设计非歧视法相当重要。这是因为法律可能给使用算法的用户纠正歧视带来障碍,而技术措施可以提供解决方案。
1.里奇案(Ricci v. DeStefano):平等保护、差别对待和差别影响之间的张力
反歧视法的基础,是宪法平等保护条款和相关补充保护条例。当今学界对平等保护条款的解释,大体上分为两大阵营:第一是那些信奉无肤色歧视的宪法(color-blind constitution)的人,他们保护个人评价,并避免基于群体地位的任何歧视性评价;第二是那些支持反屈从(antisubordination)原则的人,他们试图弥补群体之间的不平等。总体趋势一直朝着无肤色歧视的方向发展。
对于法律条文,我们将重点关注1964年《民权法》第七章。《民权法》第七章提供了差别对待(歧视性意图,或者针对不同群体采取不同规则的正式适用,disparate treatment)和差别影响(对于不同群体有着不同结果,disparate impact)的救济。算法决策模糊了差别对待和差别影响的定义,并带来了许多开放性问题。
当使用的输入是受保护群体成员的替代特征时,是否属于差别对待?在这种情况下,不同的规则实际上应用于不同群体,但这种差异可能对结果不产生任何影响。如果负责决策的人知道算法的行为方式会引发差异影响,这是否意味着他们意图引导歧视性结果呢?假如算法对一群人产生了不利结果,那么,该算法需要多精确,才能让决策者能够不必为差别影响而负责(以及决策者需要多仔细地考量其他算法)?如本文第三(二)2小节所述,如果有关群体成员的信息有助于提高所有群体成员的结果公平性,那么,这样做是否应被视为差别对待呢?
这些理论最近在里奇诉德斯蒂法诺案(Ricci v. DeStefano,下称里奇案)中得到了讨论,最高法院认为,“在雇主为了避免或补救无意中的差别影响,而进行故意歧视之前,雇主必须有强有力的证据,以证明其将受到差别影响。”如果不能采取有种族意识、歧视性的行动,则雇主应承担责任。纽黑文市消防队员晋升考试;尽管该考试旨在确保不存在种族歧视,少数民族的通过率仍约为白人通过率的一半。纽黑文市由于担心城市的公平性和差别影响责任,委员会没有对测试结果进行认证(并审核晋升程序)。
里奇案说明了差别对待和差别影响之间的紧张关系。表面上中立的政策可能会给受保护的群体带来不平等的结果,但要纠正这种差别影响,就需要国家根据群体成员身份,对人们进行差别对待,而里奇案主张禁止这种做法。里奇案还暗示,在协调法院对《宪法》平等保护条款和差别影响原则的非歧视性解释方面,存在困难。这一裁定并没有直接解决宪法问题,但是斯卡利亚法官的协同意见明确指出,“差别影响和平等保护之间的战争,迟早会打响”。这两种理论上的紧张关系,都受到立法者和决策者的关注。
2.里奇案推动了非歧视性设计
尽管里奇案已经就平等保护、差别对待和差别影响,进行了广泛的讨论,但我们希望强调它给以非歧视为目标的决策算法治理,带来了怎样的影响。里奇案的判决表明,除了本文第二(一)节中讨论的原因外,我们不能仅仅依靠审查法律因素。如果一个机构运行的算法具有差别影响,在事实发生后纠正这些结果,将触发与纽黑文市拒绝其消防员测试结果相同的分析。法院甚至有可能“将一系列差别影响的合规工作,置于严格审查之下”。这是一个很高的标准,在大多数情况下,这个标准很难达到。
事后纠正歧视性算法的难度很大,这使得设计非歧视性算法的措施显得更为重要。法院对纽黑文市设计的测试流程没有异议。该流程着眼于非歧视性,其理由是“《民权法》第七章并不禁止雇主在管理测试或施行之前,考虑如何设计该测试或施行,以便为所有族裔的个人,提供公平的机会”。然而,“一旦这一流程建立起来,雇主就已明确了他们的选择标准,他们未必会抛弃测试结果,从而破坏了雇佣流程杜绝种族歧视的合理期待。”
算法决策与差别对待和差别影响之间的冲突,意味着有人可以就算法设计中带有替代特征导致实质歧视,来主张差别对待。然而,这样的主张对于几乎适用于所有具有大量输入的制度。法院似乎更可能拒绝将算法决策视为差别对待。最后,在算法的初始设计中加入非歧视性要素,是决策者可以采取的最安全的手段,我们应该鼓励类似技术措施的开发和应用。
四、促进跨计算机科学、法律和政策的
协作
在本部分,我们将讨论前述技术措施与法律和公共政策的监督机制之间的关系。传统上,我们对于所有的情境,都有一个详细的、定义明确的设定。在立法和公共政策的应用中,规则的解释是正常的,甚至是被鼓励的,法律和政策的细节由特定案件中的争议所产生的人为事后判断来填充。对于这两者之间的显著冲突,我们建议两个不同领域的专家必须加强合作。
我们强调,计算机科学家不能设想政策能给予他们对于公平的有意义的、普遍的、一以贯之的理论,携此理论就可以用来设计特定算法属性。这样的理论至今尚未出现,这有着其结构性理由、政治理由和法理理由。同样地,决策者也不能接受完全按照工程师逻辑来设计的理论。
与此同时,立法者和决策者需要根据这些新技术进行调整。我们强调自动化决策产生的变化。首先,我们需要在设计算法时选择将特定的政策决策和价值嵌入这些算法中,无论它们是否具备可问责性。然而,尽管对于可问责性而言,算法完全透明既不够充分,也不总是必要的,但是,算法依然可以对公众或其他第三方具有可问责性。对于这两个群体,我们注意到这些领域之间的相互作用将产生新的问题,并可能对这些决策流程的目标应该是什么,提出新的见解。
对于可问责性,计算机科学家可能倾向于把它当成是在设计算法之前应当遵循的详细规范。例如,对于程序员来说,一个典型的思路就是根据程序的规范来定义漏洞——任何不符合规范的东西都是漏洞;任何符合规范的东西都是系统属性。
本节旨在使计算机科学家认识到,立法者和决策者不可能排除所有的模糊之处,并为他们提供一个清晰、完整的规范。尽管立法者和决策者可以通过澄清或做出调整,来指导程序开发人员,但他们可能由于政治原因无法消除某些模糊之处,也可能为了实现灵活性目标而刻意保留某些模糊之处。因此,在设计决策算法时,计算机科学家必须考虑到精确性的不足,以及法院或其他审查人员对事后监督的相应需求。
计算机科学家的思维方式与权力机关的思维方式之间,可能存在着深刻冲突,这样,舆论和社会规范本身,就没有界限明确的规定。公司对员工满足上司(或上司的上司)的要求,也可能不是泾渭分明。也许对计算机科学家来说,最重要也最隐晦的是,美国法律和公共政策的运作,也与规范的明晰背道而驰。它们往往故意制造出模糊的法律和规定,为的是留下细节——有时甚至是主要因素——供执行人员来加以解释。
造成这种模糊的原因之一,是立法的政治现实。立法者可能无法获得多数人的支持,就拟议法律的细节达成一致,但立法者可以通过相对模糊的语言,使各种条款和条件不明确,来争取到更多的票数。例如,不同的立法者可能支持彼此冲突的各个具体提案,这些提案可以由更为一般的法律规定所涵盖。即使是诉求不明确的立法者,也可能会反对某一特定的提议细节;在成为法律之前,每一个引起足够反对的细节,都需要从法案中删去。
对法律模糊性的另一种解释是,立法者可能对法律或政策适用的情况,存有不确定性。立法者可能担心他们没有充分考虑到所有可能性。这就为建立足够的灵活性,创造了一种激励。这么做,可以涵盖当前存在或将来可能存在的意外情况。在这方面,美国宪法经常被视为一个典范:尽管社会格局发生了巨大变化,但政府和个人权利的一般宪法条款仍然适用。
法律文本上的模糊,或许源于对如何最好地解决已知问题的共同不确定性。在这里,立法者可能觉得他们会预见到法律问题,但仍然不知道什么是最佳处理方式。实际上,他们可以通过对法律或政策的特定方面进行模糊处理,选择将权力委托给其他方。有了这种模糊性,我们就可以借助社会实践,来确定哪些手段是最佳处理方式。
美国在处理这些模糊的问题上,有着悠久的历史,即通过事后监督和法院的追溯监督来解决在美国的普通法制度中,含糊不清和不确定性一直没有得到解决,直到出现纠纷并有必要解决为止。对一项法律或法规适用于一组具体事实的分歧,美国法通过案例来解决,而随着时间的推移,对具体情况的裁决不断增加,模糊的领域也得到了澄清。即使法规和规章可能有具体而精细的语言,它们也是通过案例来解释的——法官们通常对行政机构的专业知识给予充分尊重。这些案例形成具有约束力的先例,在美国普通法体系中,这些先例与法规本身都是法律渊源。通过特定事实模式的案例逐步发展和扩展法律,可以仔细考虑在法律起草过程中通常无法达到的、细节上的意义和后果。
在实践中,这些特征意味着计算机科学家应专注于设计可审查的算法,而不仅仅是符合起草过程中的规范。例如,这意味着,如果有一套公平、随机的算法被用到第二(五)节所述的多样性签证抽签中,并能让美国国务院向法院或持怀疑态度的申请者证明该算法是公平的、随机的,那么,这将是极好的。
本文所阐述的技术措施,为算法设计者提供了几种思路,奠定事后能够验证决策的实际基础。通过这些工具,审查人员可以检查算法是否实际被用来做出特定决策,算法是否公平地选择了随机输入,以及算法是否符合设计时的既定规则。从本质上讲,通过协助传统司法系统在最终确定特定决策的合法性,这些技术措施允许对算法不断进行事后评估。
采用本文所提到的技术措施,将显著提高决策算法的可问责性。我们认为利用算法实现治理只是第一步,我们还鼓励对上述技术措施的继续开发,以及旨在促进监督的新技术的进一步研究。
立法者和决策者需要认识到并适应算法决策所带来的变化。算法的特点为制定管理决策的法律制度,提供了新机遇和新挑战:算法决策将会减损法律模糊性所能带来的益处,增加对公众的负责程度,并允许在决策流程仍然保密的情况下,使决策比以往更具可问责性。
1.减损法律模糊性所能带来的益处
虽然计算机科学家可以在事实评估和问责制之后设计算法,但他们不能改变任何算法设计都会指向特定值并涉及特定规则的这一事实。此外,算法的设计可能会限制事后问责的机会。换句话说,如果一个算法的设计不允许对某一特定特征进行认证,那么,监督机构就不能确定它是否能够证明该特征。这两个特点,都意味着自动化决策可能会加剧法律模糊性的某些缺点。
在上述框架中,我们确定了造成法律模糊性的主要原因:政治僵局与妥协、未来环境的不确定性以及政策试验的期待。在这里,对于每一个驱动因素,我们将讨论转向算法决策如何减损法律模糊性所能带来的益处,并且我们将建议如何保留法律模糊性在美国立法系统中提供的功能优势以及更易于配合自动化决策的手段。由于政治僵局与妥协而产生的法律模糊性,实质上把立法者敲定细节的责任推给了后来者。这些后来者往往更容易受到政治压力的庇护,从而能够在不危及他们在下次选举中的情况下,做出更为具体的决策。法院和行政机构经常扮演这一角色。法院希望出具公正的裁决,以抵御公共压力;行政机构则希望提供超出立法者预期的专业知识的工作人员。
然而,当涉及软件系统时,这种责任的转移通常不甚理想。完全自动化的决策可能会通过增加另一个可以被责任转移的参与者(即编写决策软件的开发人员)来加剧这些问题。Citron为自动化系统在确定福利获取资格方面的不足,特别是针对机场“禁飞”人员、恐怖分子、拒绝抚养子女的父母的惩罚。立法者应考虑这种可能性,并避免将法律细节的补充责任,交给程序开发人员,因为:①这些算法将广泛适用,影响所有参与者;②程序开发人员不太可能对当前的政治进程负责;③程序开发人员不太可能具备特定的专门知识,来理解正在做出的政治决策。
限制开发人员自由裁量权而不寻求立法的一个可能方案,是由行政机构发布软件开发指南。在代码选择和策略效果之间的转换仍然存在困难,但使用我们所阐述的技术措施可以在一定程度上解决这些困难。例如,管理机构可以与开发人员合作,确定他们希望某个软件拥有的属性,然后设计程序,以满足这些属性并允许事后验证。
更困难的是,如何回应由于情境环境的不确定性而产生的法律模糊性,或者由于政策实验的愿望而产生的法律模糊性。在这里,自动化决策所带来的问题是,一个软件在其使用期间会锁定特定的法律解释(特别是在政府环境中),并可能不会制定更新软件代码的规定。我们可以通过向软件系统添加日落条款(sunset provisions),需要定期审查和重新修改软件,来缓解对变化或意外状况的担忧。此外,软件的设计应考虑到最终的修改和更新。至于为了保留政策实验的好处,传统的解决方案可能有多个并行程序。这个解决方案的一个更复杂的版本,是将机器学习纳入决策系统。同样,机器学习也有自己的公平陷阱(fairness pitfall),应注意考虑公平机器学习手段,并建立预防措施,比如对机器学习模型中的预设进行不断测试。
更具普遍意义的是,在算法决策的情况下,模糊性的益处会受到限制。在此,编程参与者可以确定一个未成形的细节,然后将它们大范围适用。此外,算法的选择,巩固了在该软件中编码的特定策略选择的使用期限。立法者应该考虑是否应强化法律和政策所提供的细节,以防止程序员擅自填补这些模糊之处。
在某种程度上,这个问题反映了法律中规则与标准的争论,两者有着各自的优势:前者适用于确定法律行为和法律后果(比如机动车行驶速度限制),而后者提供了一个可供开放解释的原则(比如“根据具体情况,用合理速度行驶”)。规则提供了明晰和预警,而标准则提供了更大的解释灵活性。
问题是,立法者是否应该为开发人员制定更清晰的规范。在实践中,立法者可能希望在一个普适的、总体的标准中,嵌入一套具体的规则。例如,立法者可以要求算法涵盖他们所希望每一个属性,并使这些属性在事后可以核查。此外,立法者可能会考虑为算法寻求一个通用的目的声明。这样做可以让开发人员在编写代码时,有一定的灵活性,同时也可以确保之后可以查验特定属性。
2.公众可监督的问责制
通常,法院、执法机构或其他指定实体(如监察机构)是行使监督的主体。通常而言,公众和第三方通过提供政治反馈以及在特定情况下允许提起诉讼,都具有间接的监督作用。算法的使用,可以改变法律系统和公众监督决策流程的效力。
在某种意义上,执行决策的算法可以通过允许更多地参与监督,来加强对公众和相关第三方的问责。我们阐述的技术措施允许这些相关方进行更直接的监督。传统法律监督机制,通常需要发掘或收集内部证据;与之相反,技术措施却可以使公众和完全独立的第三方实施验证。例如,熟悉技术的公众或第三方可以验证程序是否使用了特定算法或者程序是否具备特定属性。我们还可以建立一个系统,使参与者能够查验这些属性,以便让不具备技术能力的用户,也能够查验这些事实。而这整个系统将由具备技术专业知识的其他人(可能是政府内部和外部)来监督。此外,第三方可能参与设定公平的随机性。
与增强公共问责制的可能性不同,在不依赖技术措施进行监督的情况下,使用软件可能减损可问责性。这是因为法院和其他政策执行者通常并不具备评估软件的专业能力,从而妨碍它们对于决策的审查。美国法院系统旨在通过司法审查,来防止政府的不当行为。司法审查赋予法官权力和责任,以确认政府行为是否符合法律义务。同样,对于私人行为,法律制度赋予法官和监管机构权力,以确认这些行为是否符合法律标准。
然而,使用算法进行决策,就将这些审查责任转移给外部专业人士或软件开发组织。法院和执法机构将不再有能力就规则是否得到适当应用或决策是否得公正执行做出决策。这一审查责任,转移到能够评估自动化决策流程的专业人士身上。为了解决这种非预期的责任转移,我们可以向法院和执法机构委派技术专家。当需要特殊技能或知识时,法院通常会任命技术专家协助其履行职能。
挑战可问责性的另一问题,是如何验证我们所阐述的技术措施。在法庭上,只有证明技术措施的完整性和可靠性,我们才能接受技术措施。长期以来,法院一直面临科学证据的可采性问题。关于法院应采纳的专家科学证据的标准,有大量文献讨论。即使是现在,联邦政府和州政府各自的采信标准,也不尽相同。在20世纪80年代和90年代,法院花了数年时间来确立和接受DNA的科学有效性以及用于分离和测试DNA的手段。即便是现在,人们仍然担心一些科学手段(比如基于DNA的混合物来匹配DNA)可能会受到法院不合理的对待,从而导致错误的事实认定经过多年的争论,联邦证据规则现在明确了联邦标准,规定了在对抗性诉讼中新技术的可采性。1993年,最高法院结合了测试结果、同行审查和相关文献等,调整了这些标准。这些证据标准解决用于检查自动化决策的技术措施的证据可采性,但仍不能确证技术措施的可靠性。通常情况下,美国的法律体系依靠对抗性的程序,来确保调查结果的准确性。在此,我们可以允许多个专家对软件进行测试和抗辩,以确保结论的准确性。
3.保密与责任
如果我们要以社会和政治上可接受的方式实施自动化决策,那么,我们需要在沟通和理解有关如何实现决策的细节信息方面,有所突破。如第二(一)节所述,算法完全透明(披露所有信息)在技术上轻而易举,但在政治上和实践上却不可行,而且可能毫无裨益。然而,完全不披露决策基础,这在社会上是不可接受的,并且,这通常在技术上也会成问题。立法者和决策者应牢记,即便在评估者没有完全理解算法的情况下,也有可能使算法具备可问责性。
美国法律和政策通常侧重于透明度,有时甚至将监督等同于透明度。因此,一个没有实现完全透明的问责机制,似乎与这种透明度诉求背道而驰。然而,在法律制度中,基于部分信息的监督,是很平常的现象。法院出于各种政策原因,会刻意排除多种信息:为了维护国家安全,可以屏蔽或限制披露机密信息;青少年犯罪记录可能会被封存,因为人们认为青少年犯下的错误不应被永远牢记;其他一些证据,由于不科学、传言(hearsay)、煽动性、非法获取等各种原因,法院不予采纳。因此,所有证据规则可以被解读为:最优的法律监督并不需要全部信息的披露。
在自动化决策的情况下,我们有足够的政策理由来保密信息,比如,防止暴露软件源代码和输入数据导致的可能暴露商业秘密、侵犯隐私、妨碍执法,或者导致不法分子对决策流程的博弈。算法的优势在于:隐藏代码和数据并不意味着无法分析代码和数据。我们所阐述的技术措施使立法者和决策者有能力让软件程序及其输入数据保密,又能让算法具有可问责性。立法者和决策者可以在政府操控的算法决策(比如DVL)中使用这些工具,并鼓励非政府主体也使用它们——假如非政府主体拒绝使用这些技术措施,立法者和决策者可以强制使用或强制源代码和输入数据的公开(至少向法院公开)。
(责任编辑:李 利)
(公众号学生编辑:蔡梓园)
★ 【英】罗伯特·A.科瓦尔斯基 著 杨安卓等 译:作为逻辑程序的立法 ||《地方立法研究》
★ 人工智能与算法——“网络法的理论与视野”工作坊专题五 ||《地方立法研究》
★ 数据与治理——“网络法的理论与视野”工作坊专题四 ||《地方立法研究》
★ 隐私与被遗忘权——“网络法的理论与视野”工作坊专题三 ||《地方立法研究》
★ 版权与平台——“网络法的理论与视野”工作坊专题二 ||《地方立法研究》
★ 网络法研究方法论——“网络法的理论与视野”工作坊专题一||《地方立法研究》