零、
“古往今来的人类也真是弱智,制定出法律这种无聊的东西”。
Oscar冷不丁说出这句话的时候,我们一致认为这是他的日常抽风。初次见他的时候真是没有想到,好好的一个人竟然是个中二病患者。三天两头冒出些没有上下文的话语,我们吐槽也吐得没有新意了。
“明明就是很严重的问题嘛”。见没人挽尊,他也就嘟囔着自顾自看动漫去了。
一、
21世纪中叶兴起的自律式语言,曾被认为是可以彻底改变人类思维方式的一种编程语言。
程序自修改是一个很古老的概念。在哈佛结构兴起之前,数据与代码并不区分存储,甚至早期的处理器也是专门为程序自修改而设计的。比如要遍历一个顺序存储的列表,我们就可以看到很多修改指令中目的地址的指令存在,这就是程序自修改的最简单最原始的例子。
随着变址寄存技术的发展以及哈佛结构的流行,这个概念逐渐退出了历史舞台。而在二十一世纪中叶,基于机器学习的人工智能的发展似乎陷入了死胡同,程序自修改的概念又逐渐被计算机界所提及。不同以往的是,人们设计出了一种巧妙的高级语言,可以使用机器学习的方式进行代码层面的自我调整——这就是所谓的自律式语言。
正如当年的函数式语言一样,科学家们拿这个新玩具灌了很多论文,但却一直无法成功推广到工业界。一方面是因为自律式语言那低下的执行效率——你永远不知道程序什么时候能够完成自律过程;另一方面,它的编写难度远非普通编程语言可比,即使你的思路正确也很难得到明确的自律结果。
既然自诩为技术宅,Oscar当然不会放过任何一个故作艰涩的机会。从此我们惊奇地看到那个懒懒散散的Oscar,蜕变为一个早出晚归的Oscar,一个沉默寡言的Oscar,一个脱离了低级趣味的Oscar。
二、
近期,贩卖儿童一律死刑的呼声又高涨了起来。这个话题来源于上世纪初的某网站的低级营销,而在百年后的今日,始作俑者早已倒闭,但话题犹在。
争辩双方的焦点在于,立法应按照社会危害程度来严惩人贩子,还是应从轻发落以避免抓捕时对受害者的二次伤害。我个人的观点比较中庸,希望法律的定刑可以宽一些,一方面可以给法官留较大的发挥空间,同时也给人贩子一些生的幻想。然而Bob却认为,法律应该更加严谨,人贩子比杀人还可恶,理应严惩不贷。
在我和Bob争得热火朝天的时候,Oscar忽然放下手中的论文,以一种内涵的眼光看着我们。寝室一瞬间陷入寂静。
“你妹啊,还以为我拉链没拉”,Bob瞪了他一眼,“咋,证出来NP等于P啦?”
Oscar没理他,“呵呵,古往今来的人类也真是弱智,制定出法律这种无聊的东西”。
“又该吃药了少年”——正这么想着,只见Oscar一指电脑屏幕:
“立法本该如此。”
三、
虽然依旧认为这是Oscar的日常抽风,但我们毕竟还是拥有人类最原始的好奇心。凑到屏幕前,我和Bob只看到了一坨乱码。
“这啥玩意儿,能好怎?”Bob毕竟是Bob,问问题的方式都这么与众不同。
“其实我一直在思考一个问题”,Oscar向我们微微一笑:“法学为什么属于文科。”
“我去,你指着屏幕不是要解释你的代码么”,我突然丧失了和他交谈的欲望。和一个思维跳脱的人交流自古以来都是一件很痛苦的事情:“乔姆斯基若在世,一定会把你说的话归到2型语言,而且还是先天二义的那种。”
Oscar白了我一眼,“法律本应是人类制定的最理性的准则,相同的输入不应该有不同的输出。”这点我倒是赞同,毕竟公平是法律的基础特征之一嘛。
“成文法有个特别重要的特点,亦即模糊性。针对具体的案件,因为有太多的具体因素的影响,法律需要留给裁判者足够的裁决空间以就事论事。因此,模糊性是成文法所无法避免的问题——然而人们总是对法律的精确化抱有很高的期许。”
“就比如你们讨论的人贩子问题,一些人认为必需杀无赦,一些人认为应从轻发落,但其实在当前的法律系统的基础上进行裁决,这些结果是都有可能出现的。人的主观性对刑罚裁量的影响,是明文法律所不能避免的,这也是法学不属于理科的一个重要原因。”
“所以呢?”Bob看来是立刻接受了Oscar的说法,“你说法律是模糊的,难道要废止现行法律,让社会归于混沌与随机么?”
“我说的是废止成文法呀”,Oscar终于把话题扯回到了他的代码上:“喏,自律式绝对准则。”
四、
这是我这辈子第一次见到自律式语言写成的程序。没错,犹如乱码。
“使用的时候,在程序目录下放置两个文件a.txt和b.txt,分别填写原告证词和被告证词,然后会在当前目录下生成c.txt和d.txt,分别代表二者证词冲突的部分和判决结果”。Oscar起的文件名字总是如此这么简单粗暴无力吐槽。
“所以你是根据现行法律写了个控制流?”Bob有点不太相信,“那么程序最终还是反映出你自己对法律条文的理解嘛——仅凭一己认知,怎能达到抛弃成文法的目的?规范的并不一定就是正确的。”
Oscar自豪地拍了拍桌上厚厚一沓论文:“这就是自律式语言搭配机器学习的妙处了。我并不需要研读任何法律条文,程序也无需知晓任何法律条文。要知道,想要模仿人类的裁决其实是一件很容易的事情——”
“它只需要组织一次自律式机器学习。”
五、
整整一个月,全寝室都在疯狂地搜集各地各种案件的双方证言和量刑结果。Oscar的程序默默地学习着这一切,在服务器上对自身进行一遍遍的彻底重构。
不得不说,比起二十一世纪的那些识别猫猫狗狗的深度学习算法,基于自律式语言的机器学习不知道高到哪里去了。然而经过重构与整合,自律式绝对准则程序也难免变得支离破碎面目全非。
这是一个神奇的程序。它没有接触过任何的成文法,仅凭研究古往今来的各种案例,就总结出了一套独特的判定逻辑。对于我们虚构的一些证词,它也可以轻易挑出原告与被告之间对案情描述的矛盾之处。输入一些具体的案件后,它的判决结果也差强人意。
“毕竟是学习过人类作出过的各种各样的判决呀!现在这玩意俨然就是一个法律专家了”,Bob由衷地感叹:“你可以凭这个去各种会议灌水了。”
“其实论文名字我都想好了呢”,Oscar不好意思地挠了挠头,“《基于自律式学习的绝对准则判定程序设计概述》,怎么样?”
“哈哈,法官要失业了呢!”,我称赞道,“精确的程序判定总比模糊主观的人类判决要更容易受到欢迎吧!”
“精确的……”,Oscar一怔,“哦呀,纯粹性来测一下咯?”
六、
纯粹性概念来源于函数式语言,函数式语言来源于公理化证明。
公理化证明曾是古人的梦想。一组有限不冲突的公理,可以互相组合搭配推得各种各样的定理。虽然某些情况下有着类似于哥德尔不完备定理约束,但理论可证的命题,人们还是希望有自动证明的方法的。
函数式语言就取了这种思路的一个子集,亦即人为定义了一组语法公理,只要可以写出来的语句,计算机就可以利用类型推导系统判断真伪——所谓“程序就是类型的证明”。Curry-Howard同构也在函数式语言程序与逻辑证明建立了双射关系,所有抽象出来的定理都可以被认为是原始公理的语法糖。
所谓纯粹性,就是说证明过程不会改变任何东西,也不会因任何东西而改变——整个程序毫无副作用。这是一个很妙的性质,你不必考虑证明当天的天气情况,不必考虑地球的自转对证明的影响,也不必担心另一个平行宇宙中的你进行的证明会失效。
对于一个绝对公平的裁决,面对同一件案情,理应给出完全一样的裁决。
七、
尝试当然是失败了的,否则也不会有此文了:对于完全相同的输入,判决结果居然会有很大的波动。
有波动,对于自律性学习程序来说是无可奈何的,毕竟它的程序结构会在运行时改变。然而,波动太大是令人难以理解的,毕竟它学习过人类的许多裁决,理应得到一个收敛的判决。
“这尼玛不科学啊”,Bob摇了摇头,“该不会是你程序写错了吧。”
“这才科学,我早该料到了”,Oscar目光呆滞:“毕竟它所学习的样本是主观性的人类裁决——要知道,不同的人、甚至同一个人在不同的时间、不同的环境下,对相同的案件所做出的裁决总是会有差异的。它根本不配叫做绝对准则。”
“它顶多算是一个懂法律的人。”
八、
我们终究没有见到那篇所谓的《基于自律式学习的绝对准则判定程序设计概述》的定稿。Oscar停止了对程序的测试,埋头研究着那些陌生的代码。
某天,他在自律后的代码中找到了一个奇怪的模块,并据此发了一篇论文——与自律式语言、绝对准则毫无关系的一篇论文。
论文的题目叫做《一种新型的伪随机算法研究》,文中给出了人类历史上周期最长的伪随机数生成算法。
他发誓再也不碰任何自律式语言。