理论教育 算法透明与算法可知:算法社会中的法律思考

算法透明与算法可知:算法社会中的法律思考

时间:2023-08-03 理论教育 版权反馈
【摘要】:在一些学者看来,算法透明就足以帮助我们了解算法的所有奥秘。相比于算法的复杂性,机器学习对于算法可知的挑战吸引了更多关注。而与算法可知直接相关的是,对于机器学习算法,其运算的函数关系不一定是固定、清晰的数据集合。最后一个阻碍算法透明向算法可知转化的障碍,是干扰性披露。也正是在这个意义上,干扰性披露是算法透明的一个典型悖论,亦即,公开得越多,对算法关

算法透明与算法可知:算法社会中的法律思考

在一些学者看来,算法透明就足以帮助我们了解算法的所有奥秘。如果说在早前技术尚未精进的时代有这种说法,倒可称得上是值得商榷,[30]但在现如今还秉持这一观点,[31]则就让人难以理解。在笔者看来,算法透明不等于算法可知。在它们之间,至少存在如下四道障碍:披露对象的技术能力、算法的复杂化、机器学习和干扰性披露。

披露对象的技术能力这一问题,是比较好理解的。当披露对象是非计算机专业人士时(比如与公共政策法律裁判关系密切的法官陪审员、执法官员和普通公众),算法本身是难以辨识的。他们的技术能力有所欠缺,因此,即便向他们披露源代码和相关技术细节,可对他们而言,代码即乱码、算法像魔法,可能还是无法搞清自动化决策究竟是怎么做出的。外行只能看热闹,内行才能看门道。不可否认,外行可以借助内行来帮忙(比如专家证言),但这其中,可能会有成本和偏差。

如果说上述第一个障碍是阻挡外行的门槛,那么后面三个障碍便是把外行内行统统拒之门外。先说算法的复杂化。[32]事实上,即便是简单的算法,也存在不可知的情况,比如计算机领域著名的莱斯定理(Rice's Theorem)就证明了某类算法的不可知属性。随着技术的不断演进、算法分工的不断精细以及社会生活对于算法需求的不断提升,大量算法变得愈发复杂。此处之所以着重强调复杂性,是因为复杂算法的不可知情况更具代表性——它既包含了单一算法本身的原因,也包含了更普遍的、多组算法模块交互的原因。而算法的复杂化会给算法的解释工作带来很大难度。[33]当然,这在计算机科学发展史上并不新鲜。计算机工程师应对这一问题的通行做法是:将算法系统模块化。[34]对于模块化后的算法,计算机工程师再分别解释各部分子算法,各个击破,最后通过重新组合,解释整个算法系统。[35]虽然通过模块化的分工可以解决一部分复杂算法的解释问题,[36]但即便如此,就连计算机工程师也承认,算法复杂化模块化,会令各个部分算法之间的相互反应变得不可预测。[37]与此同时,如果要保证模块化处理运行顺畅,就需要在算法系统设计之时进行整体规划。[38]否则,复杂算法的模块化解释也很可能达不到预期效果。在很多情况下,复杂算法应用和交互(比如API和云计算)无法确保我们从多个模块解释的组合中,或者与其他算法的交互中,对算法进行准确解释。[39]简言之,算法的复杂化加重了我们理解算法的困难;而模块化这一解决进路,如果不是在算法系统设计之初就事先规划,也不能很好地解决复杂算法的解释问题。

相比于算法的复杂性,机器学习对于算法可知的挑战吸引了更多关注。[40]传统算法要求计算机工程师事先指定一个表示结果变量的运算模式,作为以特定方式选定解释变量的参数,以此来决定输出结果。与传统算法不同,机器学习作为一种更智能、更动态的算法,其运算不受固定参数的控制。也正因此,机器学习并不要求工程师事先指定运算模式。[41]当然,“不要求”不等于“不能够”,机器学习的门类中,也存在计算机工程师事先指定运算模式和控制学习材料的监督学习,与之对应的是运算更为自由而不可控的无监督学习和强化学习。对于这三种机器学习算法的通行分类,笔者无意展开技术分析。唯一与本部分论证有关的是,相对于后两者而言,计算机工程师对于监督学习的把控度更高。对于后两者,只要机器学习算法正在动态运行,我们就无法控制他们如何组合和比较数据,自然也无法顺利地解释机器学习算法本身。

而与算法可知直接相关的是,对于机器学习算法,其运算的函数关系不一定是固定、清晰的数据集合。我们既无法保证机器学习过程代表任何一组真实关系,也无法通过此刻的因果关系,来推导未来的因果关系,因为算法本身不断学习、不断变化,在算法披露的那一刻过后,披露的算法就已经过时。古希腊哲学家赫拉克利特那句名言“人不能两次踏进同一条河流”,在机器学习中找到了最好的印证。最典型的例子便是智能广告推送算法,上一秒出现的推送结果,算法根据你是否在页面停留或点击推送,进而计算出下一秒的推送结果。再比如,大部分垃圾邮件过滤算法都使用邮件地址和IP地址的黑名单,应用最为广泛的便是Spamhaus,其邮件地址和IP地址也是根据用户举报和自身机器学习实时更新。换句话说,这一刻不在黑名单上的邮件地址和IP地址,很可能在下一刻就上了黑名单。[42]

由于机器学习的决策规则本身是从被分析的特定数据中不断生成的,因此,除了极少数被严格控制的监督学习以外,我们根本不能考察静态的源代码或原始数据,无法用这样一种刻舟求剑的进路来推断机器学习算法的运算结果。也就是说,对于绝大部分机器学习的输出结果,无论输入和输出的因果关系在表面上看起来多么直观,这种因果关系都很可能根本无法被解释,其动态的变化也更难以把握。[43]更重要的是,对于机器学习(尤其结合了强人工智能神经网络等技术的机器学习)而言,输入数据的变化和累加使得算法推算结果背后的深层原因变得难以把握。在这个意义上,它本身就是一个无法实现透明的“黑箱”。而且,机器学习所推导的“因果关系”在很大程度上取决于输入数据,这类因果关系只能是统计意义上的因果关系,它与规范意义上的因果关系存在一道难以跨越的鸿沟。(www.daowen.com)

例如,谷歌研发的强化学习算法——AlphaGo。设计AlphaGo的计算机工程师都是棋力一般的业余爱好者,无法与柯洁、李世石这样的顶尖高手较量。但恰恰是这些工程师设计了Alpha-Go,把顶尖高手一一击败。[44]可以想见,这些工程师本人是没有办法一一解释AlphaGo的每一步棋招的——如果工程师真的能理解每步棋的奥妙,那么他们自己就是世界冠军了。换言之,AlphaGo通过机器学习习得的竞技能力,工程师根本无法企及,他们的每一步棋也自然超出了工程师的理解范畴

最后一个阻碍算法透明向算法可知转化的障碍,是干扰性披露。与前三个与透明直接冲突的原则不同,干扰性披露本身,也可以被看成是算法透明的一种方式。它通过披露大量冗余干扰性数据,混杂在关键数据中,以此妨碍解释关键数据内容。也正是在这个意义上,干扰性披露是算法透明的一个典型悖论,亦即,公开得越多,对算法关键内容的理解就可能越困难。

其实,在《黑箱社会》一书中,帕斯奎尔就论述过这个现象,他称之为“混淆”(Obfuscation),其内涵与干扰性披露是一致的,就是指刻意增加冗余信息,以此来隐藏算法秘密,带来混淆。值得一提的是,帕斯奎尔的《黑箱社会》更多地是指出黑箱社会、或者说算法不透明带来的问题,而关于解决之道,他也并非一味奉行算法透明。[45]哪怕极力主张算法透明的帕斯奎尔,也承认干扰性披露本身也是算法黑箱的始作俑者之一。[46]因为公开的算法内容越多、信息量越大,算法分析的工作量和难度也会随之增加。在这个意义上,我们也与算法可知越来越远。这就好像有些公司为了妨碍会计审查,有意披露大量的冗余材料,让调查人员不得不在几万份材料里大海捞针。而干扰性披露的存在,不但是妨碍了算法可知,而且从另一个角度强化了本文对于算法透明必要性的质疑。

综上,算法透明不等于算法可知,甚至有可能会妨碍算法可知。算法透明并不是终极目的,它只能是通向算法可知的一个阶梯。并且,这一阶梯也并非必由之路,针对这一点笔者将会在本文第四部分进行论述。[47]因此,对于某些算法,即便算法透明,如果未能达到算法可知,也是于事无补,甚至适得其反。事实上,这是算法透明原则与传统公法上的透明原则的关键区别。传统公法上的透明原则,无论是立法上的透明,还是执法与司法上的透明,尽管不能百分之百地排除明修栈道、暗度陈仓的可能,但大体上,社会公众都能对所披露的信息(文本、音视频内容)有着较为明晰的认识。而算法透明原则却不尽然。一旦透明之后亦不可知,其透明性所能带来的规制效果也就无从谈起。更甚之,像干扰性披露那样误导披露对象,反而会减损而非增强规制效果。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈